@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,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":"AAEA;;;GAGG;AACH,MAAM,UAAU,GAA6B;IAC3C,MAAM,EAAE,CAAC,EAAK,0BAA0B;IACxC,KAAK,EAAE,CAAC,EAAM,uBAAuB;IACrC,MAAM,EAAE,CAAC,EAAK,kBAAkB;IAChC,OAAO,EAAE,CAAC,EAAI,aAAa;IAC3B,QAAQ,EAAE,CAAC,EAAG,KAAK;IACnB,IAAI,EAAE,CAAC,EAAO,QAAQ;IACtB,IAAI,EAAE,CAAC,EAAO,gBAAgB;IAC9B,QAAQ,EAAE,CAAC,EAAG,mBAAmB;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,GAA8B;IAC5C,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,CAAC;CACZ,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAG;IACrB,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,CAAC;CACE,CAAC;AAEX,wDAAwD;AACxD,MAAM,sBAAsB,GAAG,cAAc,CAAC,MAAM,CAAC;AAErD,+DAA+D;AAC/D,MAAM,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAE9B;;GAEG;AACH,MAAM,qBAAqB,GAAG;IAC5B,+CAA+C;IAC/C,OAAO,EAAE,CAAC;IACV,kDAAkD;IAClD,UAAU,EAAE,CAAC;IACb,kDAAkD;IAClD,aAAa,EAAE,CAAC;CACR,CAAC;AAEX;;GAEG;AACH,MAAM,mBAAmB,GAAG;IAC1B,2CAA2C;IAC3C,gBAAgB,EAAE,CAAC;IACnB,0CAA0C;IAC1C,qBAAqB,EAAE,CAAC;IACxB,0CAA0C;IAC1C,qBAAqB,EAAE,CAAC;IACxB,0DAA0D;IAC1D,sBAAsB,EAAE,CAAC;IACzB,6DAA6D;IAC7D,yBAAyB,EAAE,CAAC;IAC5B,iDAAiD;IACjD,oBAAoB,EAAE,GAAG;IACzB,aAAa,EAAE,CAAC;IAChB,uBAAuB,EAAE,GAAG;IAC5B,gBAAgB,EAAE,CAAC;IACnB,qBAAqB,EAAE,GAAG;IAC1B,cAAc,EAAE,CAAC;CACT,CAAC;AAgCX;;;GAGG;AACH,SAAS,eAAe,CAAC,IAAU;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC;IAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,qBAAqB;IAExE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,IAAU;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,IAAI,QAAQ,CAAC;IACxD,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAU;IACnC,OAAO,IAAI,CAAC,SAAS,EAAE,iBAAiB,KAAK,IAAI,CAAC;AACpD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,8BAA8B;IAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,CAC5D,CAAC;IAEF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE,EAAE;YACV,OAAO,EAAE;gBACP,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,CAAC;gBAClB,aAAa,EAAE,CAAC;aACjB;SACF,CAAC;IACJ,CAAC;IAED,aAAa;IACb,MAAM,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5C,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC;QAEpC,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC;QAEpC,2BAA2B;QAC3B,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,GAAG,SAAS,CAAC;QAE1D,oDAAoD;QACpD,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,CAAC;IACzH,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,IAAI,gBAAgB,GAAG,kBAAkB,CAAC;IAC1C,IAAI,YAAY,GAA0B,IAAI,CAAC;IAE/C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;YACnC,kBAAkB;YAClB,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACzC,YAAY,GAAG;gBACb,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC;gBACxB,WAAW;gBACX,KAAK,EAAE,CAAC,IAAI,CAAC;gBACb,KAAK,EAAE,EAAE;aACV,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1B,gBAAgB,GAAG,SAAS,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,uBAAuB;YACvB,YAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC;QACnE,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,KAAK,MAAM,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,KAAK,UAAU,CAClF,CAAC,MAAM,CAAC;QAET,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,uCAAuC,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,uCAAuC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,KAAK,MAAM,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,KAAK,UAAU,CAClF,CAAC,MAAM,CAAC;IAET,OAAO;QACL,YAAY,EAAE,MAAM;QACpB,MAAM;QACN,OAAO,EAAE;YACP,UAAU,EAAE,MAAM,CAAC,MAAM;YACzB,eAAe;YACf,aAAa;SACd;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,IAAU;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;IACpC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAEjD,uDAAuD;IACvD,IAAI,OAAO,GAAa,KAAK,CAAC,CAAC,CAAE,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC;QACtD,iBAAiB,CAAC,CAAC,CAAC,CACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC;QACtD,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,KAAK,MAAM,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,KAAK,UAAU,CAAC,CAC/E,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE3C,wBAAwB;IACxB,MAAM,QAAQ,GAAe;QAC3B,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;KAC/E,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,qBAAqB;IACrB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,CAC5D,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,0CAA0C;YAC1C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAyBD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,CAC5D,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC;IAEhF,yBAAyB;IACzB,MAAM,YAAY,GAA2B;QAC3C,GAAG,EAAE,CAAC;QACN,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;KACR,CAAC;IAEF,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,cAAc,GAAW,EAAE,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAW,CAAC,KAAM,CAAC;QACtC,UAAU,IAAI,KAAK,CAAC;QAEpB,IAAI,KAAK,IAAI,qBAAqB,CAAC,OAAO,EAAE,CAAC;YAC3C,YAAY,CAAC,GAAG,EAAE,CAAC;QACrB,CAAC;aAAM,IAAI,KAAK,IAAI,qBAAqB,CAAC,UAAU,EAAE,CAAC;YACrD,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,EAAE,CAAC;YACpB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO;QACL,YAAY;QACZ,cAAc;QACd,YAAY,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpE,UAAU;KACX,CAAC;AACJ,CAAC;AAgBD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,CAC5D,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC;IAE/E,gBAAgB;IAChB,MAAM,UAAU,GAA6B;QAC3C,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,CAAC;KACZ,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAU,CAAC,KAAM,EAAE,CAAC;YAC1C,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,MAAM,gBAAgB,GAA8B;QAClD,GAAG,EAAE,CAAC;QACN,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,CAAC;KACZ,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,IAAI,QAAQ,CAAC;QACnD,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3B,CAAC;IAED,mBAAmB;IACnB,MAAM,eAAe,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEzD,OAAO;QACL,UAAU;QACV,eAAe;QACf,gBAAgB;QAChB,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,EACJ,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,aAAa,EACb,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,GACf,GAAG,mBAAmB,CAAC;IAExB,IAAI,KAAK,IAAI,gBAAgB;QAAE,OAAO,CAAC,CAAC;IACxC,IAAI,KAAK,IAAI,qBAAqB;QAAE,OAAO,qBAAqB,CAAC;IACjE,IAAI,KAAK,IAAI,sBAAsB,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,qBAAqB,CAAC,GAAG,oBAAoB,GAAG,aAAa,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,KAAK,IAAI,yBAAyB,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,sBAAsB,CAAC,GAAG,uBAAuB,GAAG,gBAAgB,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,yBAAyB,CAAC,GAAG,qBAAqB,GAAG,cAAc,CAAC,CAAC;AACjG,CAAC"}
@@ -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":""}