@task-mcp/shared 1.0.19 → 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 (163) hide show
  1. package/package.json +1 -6
  2. package/src/schemas/task.ts +60 -14
  3. package/src/utils/date.ts +40 -0
  4. package/src/utils/hierarchy.ts +63 -1
  5. package/src/utils/index.ts +2 -0
  6. package/src/utils/natural-language.ts +12 -0
  7. package/src/utils/projection.ts +14 -3
  8. package/dist/algorithms/critical-path.d.ts +0 -46
  9. package/dist/algorithms/critical-path.d.ts.map +0 -1
  10. package/dist/algorithms/critical-path.js +0 -320
  11. package/dist/algorithms/critical-path.js.map +0 -1
  12. package/dist/algorithms/critical-path.test.d.ts +0 -2
  13. package/dist/algorithms/critical-path.test.d.ts.map +0 -1
  14. package/dist/algorithms/critical-path.test.js +0 -194
  15. package/dist/algorithms/critical-path.test.js.map +0 -1
  16. package/dist/algorithms/dependency-integrity.d.ts +0 -81
  17. package/dist/algorithms/dependency-integrity.d.ts.map +0 -1
  18. package/dist/algorithms/dependency-integrity.js +0 -207
  19. package/dist/algorithms/dependency-integrity.js.map +0 -1
  20. package/dist/algorithms/dependency-integrity.test.d.ts +0 -2
  21. package/dist/algorithms/dependency-integrity.test.d.ts.map +0 -1
  22. package/dist/algorithms/dependency-integrity.test.js +0 -309
  23. package/dist/algorithms/dependency-integrity.test.js.map +0 -1
  24. package/dist/algorithms/index.d.ts +0 -5
  25. package/dist/algorithms/index.d.ts.map +0 -1
  26. package/dist/algorithms/index.js +0 -5
  27. package/dist/algorithms/index.js.map +0 -1
  28. package/dist/algorithms/tech-analysis.d.ts +0 -106
  29. package/dist/algorithms/tech-analysis.d.ts.map +0 -1
  30. package/dist/algorithms/tech-analysis.js +0 -344
  31. package/dist/algorithms/tech-analysis.js.map +0 -1
  32. package/dist/algorithms/tech-analysis.test.d.ts +0 -2
  33. package/dist/algorithms/tech-analysis.test.d.ts.map +0 -1
  34. package/dist/algorithms/tech-analysis.test.js +0 -338
  35. package/dist/algorithms/tech-analysis.test.js.map +0 -1
  36. package/dist/algorithms/topological-sort.d.ts +0 -41
  37. package/dist/algorithms/topological-sort.d.ts.map +0 -1
  38. package/dist/algorithms/topological-sort.js +0 -165
  39. package/dist/algorithms/topological-sort.js.map +0 -1
  40. package/dist/algorithms/topological-sort.test.d.ts +0 -2
  41. package/dist/algorithms/topological-sort.test.d.ts.map +0 -1
  42. package/dist/algorithms/topological-sort.test.js +0 -162
  43. package/dist/algorithms/topological-sort.test.js.map +0 -1
  44. package/dist/index.d.ts +0 -4
  45. package/dist/index.d.ts.map +0 -1
  46. package/dist/index.js +0 -7
  47. package/dist/index.js.map +0 -1
  48. package/dist/schemas/inbox.d.ts +0 -55
  49. package/dist/schemas/inbox.d.ts.map +0 -1
  50. package/dist/schemas/inbox.js +0 -25
  51. package/dist/schemas/inbox.js.map +0 -1
  52. package/dist/schemas/index.d.ts +0 -7
  53. package/dist/schemas/index.d.ts.map +0 -1
  54. package/dist/schemas/index.js +0 -17
  55. package/dist/schemas/index.js.map +0 -1
  56. package/dist/schemas/project.d.ts +0 -177
  57. package/dist/schemas/project.d.ts.map +0 -1
  58. package/dist/schemas/project.js +0 -56
  59. package/dist/schemas/project.js.map +0 -1
  60. package/dist/schemas/response-format.d.ts +0 -148
  61. package/dist/schemas/response-format.d.ts.map +0 -1
  62. package/dist/schemas/response-format.js +0 -18
  63. package/dist/schemas/response-format.js.map +0 -1
  64. package/dist/schemas/response-schema.d.ts +0 -307
  65. package/dist/schemas/response-schema.d.ts.map +0 -1
  66. package/dist/schemas/response-schema.js +0 -75
  67. package/dist/schemas/response-schema.js.map +0 -1
  68. package/dist/schemas/response-schema.test.d.ts +0 -2
  69. package/dist/schemas/response-schema.test.d.ts.map +0 -1
  70. package/dist/schemas/response-schema.test.js +0 -256
  71. package/dist/schemas/response-schema.test.js.map +0 -1
  72. package/dist/schemas/state.d.ts +0 -17
  73. package/dist/schemas/state.d.ts.map +0 -1
  74. package/dist/schemas/state.js +0 -17
  75. package/dist/schemas/state.js.map +0 -1
  76. package/dist/schemas/task.d.ts +0 -625
  77. package/dist/schemas/task.d.ts.map +0 -1
  78. package/dist/schemas/task.js +0 -152
  79. package/dist/schemas/task.js.map +0 -1
  80. package/dist/schemas/view.d.ts +0 -143
  81. package/dist/schemas/view.d.ts.map +0 -1
  82. package/dist/schemas/view.js +0 -48
  83. package/dist/schemas/view.js.map +0 -1
  84. package/dist/utils/dashboard-renderer.d.ts +0 -93
  85. package/dist/utils/dashboard-renderer.d.ts.map +0 -1
  86. package/dist/utils/dashboard-renderer.js +0 -424
  87. package/dist/utils/dashboard-renderer.js.map +0 -1
  88. package/dist/utils/dashboard-renderer.test.d.ts +0 -2
  89. package/dist/utils/dashboard-renderer.test.d.ts.map +0 -1
  90. package/dist/utils/dashboard-renderer.test.js +0 -774
  91. package/dist/utils/dashboard-renderer.test.js.map +0 -1
  92. package/dist/utils/date.d.ts +0 -81
  93. package/dist/utils/date.d.ts.map +0 -1
  94. package/dist/utils/date.js +0 -294
  95. package/dist/utils/date.js.map +0 -1
  96. package/dist/utils/date.test.d.ts +0 -2
  97. package/dist/utils/date.test.d.ts.map +0 -1
  98. package/dist/utils/date.test.js +0 -276
  99. package/dist/utils/date.test.js.map +0 -1
  100. package/dist/utils/hierarchy.d.ts +0 -75
  101. package/dist/utils/hierarchy.d.ts.map +0 -1
  102. package/dist/utils/hierarchy.js +0 -189
  103. package/dist/utils/hierarchy.js.map +0 -1
  104. package/dist/utils/hierarchy.test.d.ts +0 -2
  105. package/dist/utils/hierarchy.test.d.ts.map +0 -1
  106. package/dist/utils/hierarchy.test.js +0 -351
  107. package/dist/utils/hierarchy.test.js.map +0 -1
  108. package/dist/utils/id.d.ts +0 -60
  109. package/dist/utils/id.d.ts.map +0 -1
  110. package/dist/utils/id.js +0 -118
  111. package/dist/utils/id.js.map +0 -1
  112. package/dist/utils/id.test.d.ts +0 -2
  113. package/dist/utils/id.test.d.ts.map +0 -1
  114. package/dist/utils/id.test.js +0 -193
  115. package/dist/utils/id.test.js.map +0 -1
  116. package/dist/utils/index.d.ts +0 -12
  117. package/dist/utils/index.d.ts.map +0 -1
  118. package/dist/utils/index.js +0 -34
  119. package/dist/utils/index.js.map +0 -1
  120. package/dist/utils/natural-language.d.ts +0 -57
  121. package/dist/utils/natural-language.d.ts.map +0 -1
  122. package/dist/utils/natural-language.js +0 -205
  123. package/dist/utils/natural-language.js.map +0 -1
  124. package/dist/utils/natural-language.test.d.ts +0 -2
  125. package/dist/utils/natural-language.test.d.ts.map +0 -1
  126. package/dist/utils/natural-language.test.js +0 -156
  127. package/dist/utils/natural-language.test.js.map +0 -1
  128. package/dist/utils/priority-queue.d.ts +0 -17
  129. package/dist/utils/priority-queue.d.ts.map +0 -1
  130. package/dist/utils/priority-queue.js +0 -62
  131. package/dist/utils/priority-queue.js.map +0 -1
  132. package/dist/utils/projection.d.ts +0 -65
  133. package/dist/utils/projection.d.ts.map +0 -1
  134. package/dist/utils/projection.js +0 -170
  135. package/dist/utils/projection.js.map +0 -1
  136. package/dist/utils/projection.test.d.ts +0 -2
  137. package/dist/utils/projection.test.d.ts.map +0 -1
  138. package/dist/utils/projection.test.js +0 -336
  139. package/dist/utils/projection.test.js.map +0 -1
  140. package/dist/utils/terminal-ui.d.ts +0 -208
  141. package/dist/utils/terminal-ui.d.ts.map +0 -1
  142. package/dist/utils/terminal-ui.js +0 -611
  143. package/dist/utils/terminal-ui.js.map +0 -1
  144. package/dist/utils/terminal-ui.test.d.ts +0 -2
  145. package/dist/utils/terminal-ui.test.d.ts.map +0 -1
  146. package/dist/utils/terminal-ui.test.js +0 -683
  147. package/dist/utils/terminal-ui.test.js.map +0 -1
  148. package/dist/utils/workspace.d.ts +0 -100
  149. package/dist/utils/workspace.d.ts.map +0 -1
  150. package/dist/utils/workspace.js +0 -173
  151. package/dist/utils/workspace.js.map +0 -1
  152. package/src/algorithms/critical-path.test.ts +0 -241
  153. package/src/algorithms/dependency-integrity.test.ts +0 -348
  154. package/src/algorithms/tech-analysis.test.ts +0 -413
  155. package/src/algorithms/topological-sort.test.ts +0 -190
  156. package/src/schemas/response-schema.test.ts +0 -314
  157. package/src/utils/dashboard-renderer.test.ts +0 -983
  158. package/src/utils/date.test.ts +0 -329
  159. package/src/utils/hierarchy.test.ts +0 -411
  160. package/src/utils/id.test.ts +0 -235
  161. package/src/utils/natural-language.test.ts +0 -182
  162. package/src/utils/projection.test.ts +0 -425
  163. package/src/utils/terminal-ui.test.ts +0 -831
@@ -1,309 +0,0 @@
1
- import { describe, test, expect } from "bun:test";
2
- import { DependencyErrorCode, validateDependency, findInvalidDependencies, findSelfDependencies, detectCircularDependencies, checkDependencyIntegrity, } from "./dependency-integrity.js";
3
- // Helper to create mock tasks
4
- function createTask(id, title = `Task ${id}`, deps = []) {
5
- return {
6
- id,
7
- title,
8
- status: "pending",
9
- priority: "medium",
10
- workspace: "test-workspace",
11
- createdAt: new Date().toISOString(),
12
- updatedAt: new Date().toISOString(),
13
- dependencies: deps,
14
- };
15
- }
16
- describe("validateDependency", () => {
17
- test("returns valid for a valid dependency", () => {
18
- const tasks = [createTask("A"), createTask("B")];
19
- const result = validateDependency({
20
- taskId: "B",
21
- blockedBy: "A",
22
- tasks,
23
- });
24
- expect(result.valid).toBe(true);
25
- expect(result.errorCode).toBeUndefined();
26
- });
27
- test("rejects self-dependency", () => {
28
- const tasks = [createTask("A")];
29
- const result = validateDependency({
30
- taskId: "A",
31
- blockedBy: "A",
32
- tasks,
33
- });
34
- expect(result.valid).toBe(false);
35
- expect(result.errorCode).toBe(DependencyErrorCode.SELF_DEPENDENCY);
36
- expect(result.errorMessage).toContain("cannot depend on itself");
37
- expect(result.suggestion).toBeDefined();
38
- });
39
- test("rejects when task not found", () => {
40
- const tasks = [createTask("A")];
41
- const result = validateDependency({
42
- taskId: "B",
43
- blockedBy: "A",
44
- tasks,
45
- });
46
- expect(result.valid).toBe(false);
47
- expect(result.errorCode).toBe(DependencyErrorCode.TASK_NOT_FOUND);
48
- expect(result.errorMessage).toContain("Task not found");
49
- });
50
- test("rejects when blocker not found", () => {
51
- const tasks = [createTask("A")];
52
- const result = validateDependency({
53
- taskId: "A",
54
- blockedBy: "B",
55
- tasks,
56
- });
57
- expect(result.valid).toBe(false);
58
- expect(result.errorCode).toBe(DependencyErrorCode.BLOCKER_NOT_FOUND);
59
- expect(result.errorMessage).toContain("Blocking task not found");
60
- });
61
- test("rejects duplicate dependency", () => {
62
- const tasks = [
63
- createTask("A"),
64
- createTask("B", "Task B", [{ taskId: "A", type: "blocked_by" }]),
65
- ];
66
- const result = validateDependency({
67
- taskId: "B",
68
- blockedBy: "A",
69
- tasks,
70
- });
71
- expect(result.valid).toBe(false);
72
- expect(result.errorCode).toBe(DependencyErrorCode.DUPLICATE_DEPENDENCY);
73
- expect(result.errorMessage).toContain("already blocked by");
74
- });
75
- test("allows duplicate when checkDuplicates is false", () => {
76
- const tasks = [
77
- createTask("A"),
78
- createTask("B", "Task B", [{ taskId: "A", type: "blocked_by" }]),
79
- ];
80
- const result = validateDependency({
81
- taskId: "B",
82
- blockedBy: "A",
83
- tasks,
84
- checkDuplicates: false,
85
- });
86
- expect(result.valid).toBe(true);
87
- });
88
- test("rejects circular dependency", () => {
89
- const tasks = [
90
- createTask("A", "Task A", [{ taskId: "B", type: "blocked_by" }]),
91
- createTask("B"),
92
- ];
93
- // B is blocking A, so A blocking B would create a cycle
94
- const result = validateDependency({
95
- taskId: "B",
96
- blockedBy: "A",
97
- tasks,
98
- });
99
- expect(result.valid).toBe(false);
100
- expect(result.errorCode).toBe(DependencyErrorCode.CIRCULAR_DEPENDENCY);
101
- expect(result.errorMessage).toContain("cycle");
102
- expect(result.suggestion).toContain("depends on");
103
- });
104
- test("rejects indirect circular dependency", () => {
105
- const tasks = [
106
- createTask("A", "Task A", [{ taskId: "B", type: "blocked_by" }]),
107
- createTask("B", "Task B", [{ taskId: "C", type: "blocked_by" }]),
108
- createTask("C"),
109
- ];
110
- // A <- B <- C, adding C <- A would create cycle
111
- const result = validateDependency({
112
- taskId: "C",
113
- blockedBy: "A",
114
- tasks,
115
- });
116
- expect(result.valid).toBe(false);
117
- expect(result.errorCode).toBe(DependencyErrorCode.CIRCULAR_DEPENDENCY);
118
- });
119
- });
120
- describe("findInvalidDependencies", () => {
121
- test("returns empty array when all dependencies are valid", () => {
122
- const tasks = [
123
- createTask("A"),
124
- createTask("B", "Task B", [{ taskId: "A", type: "blocked_by" }]),
125
- ];
126
- const result = findInvalidDependencies(tasks);
127
- expect(result).toEqual([]);
128
- });
129
- test("finds orphaned dependency references", () => {
130
- const tasks = [
131
- createTask("A", "Task A", [{ taskId: "non-existent", type: "blocked_by" }]),
132
- ];
133
- const result = findInvalidDependencies(tasks);
134
- expect(result.length).toBe(1);
135
- expect(result[0].taskId).toBe("A");
136
- expect(result[0].taskTitle).toBe("Task A");
137
- expect(result[0].invalidDependencyId).toBe("non-existent");
138
- expect(result[0].type).toBe("blocked_by");
139
- });
140
- test("finds multiple invalid references across tasks", () => {
141
- const tasks = [
142
- createTask("A", "Task A", [{ taskId: "deleted-1", type: "blocked_by" }]),
143
- createTask("B", "Task B", [
144
- { taskId: "A", type: "blocked_by" },
145
- { taskId: "deleted-2", type: "blocks" },
146
- ]),
147
- ];
148
- const result = findInvalidDependencies(tasks);
149
- expect(result.length).toBe(2);
150
- expect(result.map((r) => r.invalidDependencyId).sort()).toEqual([
151
- "deleted-1",
152
- "deleted-2",
153
- ]);
154
- });
155
- test("returns empty array for tasks without dependencies", () => {
156
- const tasks = [createTask("A"), createTask("B")];
157
- const result = findInvalidDependencies(tasks);
158
- expect(result).toEqual([]);
159
- });
160
- });
161
- describe("findSelfDependencies", () => {
162
- test("returns empty array when no self-dependencies exist", () => {
163
- const tasks = [
164
- createTask("A"),
165
- createTask("B", "Task B", [{ taskId: "A", type: "blocked_by" }]),
166
- ];
167
- const result = findSelfDependencies(tasks);
168
- expect(result).toEqual([]);
169
- });
170
- test("finds task with self-dependency", () => {
171
- const tasks = [
172
- createTask("A", "Task A", [{ taskId: "A", type: "blocked_by" }]),
173
- ];
174
- const result = findSelfDependencies(tasks);
175
- expect(result).toEqual(["A"]);
176
- });
177
- test("finds multiple self-dependencies", () => {
178
- const tasks = [
179
- createTask("A", "Task A", [{ taskId: "A", type: "blocked_by" }]),
180
- createTask("B"),
181
- createTask("C", "Task C", [{ taskId: "C", type: "blocks" }]),
182
- ];
183
- const result = findSelfDependencies(tasks);
184
- expect(result.sort()).toEqual(["A", "C"]);
185
- });
186
- });
187
- describe("detectCircularDependencies", () => {
188
- test("returns empty array when no cycles exist", () => {
189
- const tasks = [
190
- createTask("A"),
191
- createTask("B", "Task B", [{ taskId: "A", type: "blocked_by" }]),
192
- createTask("C", "Task C", [{ taskId: "B", type: "blocked_by" }]),
193
- ];
194
- const result = detectCircularDependencies(tasks);
195
- expect(result).toEqual([]);
196
- });
197
- test("detects direct circular dependency (A -> B -> A)", () => {
198
- const tasks = [
199
- createTask("A", "Task A", [{ taskId: "B", type: "blocked_by" }]),
200
- createTask("B", "Task B", [{ taskId: "A", type: "blocked_by" }]),
201
- ];
202
- const result = detectCircularDependencies(tasks);
203
- expect(result.length).toBe(1);
204
- expect(result[0].sort()).toEqual(["A", "B"]);
205
- });
206
- test("detects longer cycle (A -> B -> C -> A)", () => {
207
- const tasks = [
208
- createTask("A", "Task A", [{ taskId: "B", type: "blocked_by" }]),
209
- createTask("B", "Task B", [{ taskId: "C", type: "blocked_by" }]),
210
- createTask("C", "Task C", [{ taskId: "A", type: "blocked_by" }]),
211
- ];
212
- const result = detectCircularDependencies(tasks);
213
- expect(result.length).toBe(1);
214
- expect(result[0].sort()).toEqual(["A", "B", "C"]);
215
- });
216
- test("ignores non-blocking dependency types for cycle detection", () => {
217
- const tasks = [
218
- createTask("A", "Task A", [{ taskId: "B", type: "related" }]),
219
- createTask("B", "Task B", [{ taskId: "A", type: "related" }]),
220
- ];
221
- const result = detectCircularDependencies(tasks);
222
- expect(result).toEqual([]);
223
- });
224
- test("handles tasks with missing dependency targets", () => {
225
- const tasks = [
226
- createTask("A", "Task A", [{ taskId: "non-existent", type: "blocked_by" }]),
227
- ];
228
- const result = detectCircularDependencies(tasks);
229
- expect(result).toEqual([]);
230
- });
231
- });
232
- describe("checkDependencyIntegrity", () => {
233
- test("returns valid for healthy task set", () => {
234
- const tasks = [
235
- createTask("A"),
236
- createTask("B", "Task B", [{ taskId: "A", type: "blocked_by" }]),
237
- createTask("C", "Task C", [{ taskId: "B", type: "blocked_by" }]),
238
- ];
239
- const result = checkDependencyIntegrity(tasks);
240
- expect(result.valid).toBe(true);
241
- expect(result.totalTasks).toBe(3);
242
- expect(result.totalDependencies).toBe(2);
243
- expect(result.issues.selfDependencies).toEqual([]);
244
- expect(result.issues.invalidReferences).toEqual([]);
245
- expect(result.issues.circularDependencies).toEqual([]);
246
- expect(result.summary).toContain("All 2 dependencies");
247
- expect(result.summary).toContain("valid");
248
- });
249
- test("detects self-dependency issues", () => {
250
- const tasks = [
251
- createTask("A", "Task A", [{ taskId: "A", type: "blocked_by" }]),
252
- ];
253
- const result = checkDependencyIntegrity(tasks);
254
- expect(result.valid).toBe(false);
255
- expect(result.issues.selfDependencies).toEqual(["A"]);
256
- expect(result.summary).toContain("self-dependencies");
257
- });
258
- test("detects invalid reference issues", () => {
259
- const tasks = [
260
- createTask("A", "Task A", [{ taskId: "deleted", type: "blocked_by" }]),
261
- ];
262
- const result = checkDependencyIntegrity(tasks);
263
- expect(result.valid).toBe(false);
264
- expect(result.issues.invalidReferences.length).toBe(1);
265
- expect(result.summary).toContain("invalid references");
266
- });
267
- test("detects circular dependency issues", () => {
268
- const tasks = [
269
- createTask("A", "Task A", [{ taskId: "B", type: "blocked_by" }]),
270
- createTask("B", "Task B", [{ taskId: "A", type: "blocked_by" }]),
271
- ];
272
- const result = checkDependencyIntegrity(tasks);
273
- expect(result.valid).toBe(false);
274
- expect(result.issues.circularDependencies.length).toBe(1);
275
- expect(result.summary).toContain("circular dependency");
276
- });
277
- test("reports multiple issue types", () => {
278
- const tasks = [
279
- createTask("A", "Task A", [
280
- { taskId: "A", type: "blocked_by" }, // self-dependency
281
- { taskId: "deleted", type: "blocked_by" }, // invalid reference
282
- ]),
283
- createTask("B", "Task B", [{ taskId: "C", type: "blocked_by" }]),
284
- createTask("C", "Task C", [{ taskId: "B", type: "blocked_by" }]), // circular
285
- ];
286
- const result = checkDependencyIntegrity(tasks);
287
- expect(result.valid).toBe(false);
288
- expect(result.issues.selfDependencies.length).toBeGreaterThan(0);
289
- expect(result.issues.invalidReferences.length).toBeGreaterThan(0);
290
- expect(result.issues.circularDependencies.length).toBeGreaterThan(0);
291
- expect(result.summary).toContain("self-dependencies");
292
- expect(result.summary).toContain("invalid references");
293
- expect(result.summary).toContain("circular dependency");
294
- });
295
- test("handles empty task array", () => {
296
- const result = checkDependencyIntegrity([]);
297
- expect(result.valid).toBe(true);
298
- expect(result.totalTasks).toBe(0);
299
- expect(result.totalDependencies).toBe(0);
300
- });
301
- test("handles tasks with no dependencies", () => {
302
- const tasks = [createTask("A"), createTask("B"), createTask("C")];
303
- const result = checkDependencyIntegrity(tasks);
304
- expect(result.valid).toBe(true);
305
- expect(result.totalTasks).toBe(3);
306
- expect(result.totalDependencies).toBe(0);
307
- });
308
- });
309
- //# sourceMappingURL=dependency-integrity.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dependency-integrity.test.js","sourceRoot":"","sources":["../../src/algorithms/dependency-integrity.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export { topologicalSort, wouldCreateCycle, findDependents, findDependencies, priorityToNumber, taskToNode, type TaskNode, } from "./topological-sort.js";
2
- export { criticalPathAnalysis, findParallelTasks, suggestNextTask, type CPMTask, type CPMResult, } from "./critical-path.js";
3
- export { suggestSafeOrder, findBreakingChanges, findHighRiskTasks, groupByTechArea, getComplexitySummary, getTechStackSummary, suggestSubtaskCount, type SafeOrderResult, type SafeOrderPhase, type ComplexityDistribution, type ComplexitySummary, type TechStackSummary, } from "./tech-analysis.js";
4
- export { validateDependency, findInvalidDependencies, findSelfDependencies, detectCircularDependencies, checkDependencyIntegrity, DependencyErrorCode, type DependencyValidationResult, type ValidateDependencyOptions, type InvalidDependencyReference, type DependencyIntegrityReport, } from "./dependency-integrity.js";
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,KAAK,QAAQ,GACd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,SAAS,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,2BAA2B,CAAC"}
@@ -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"}