@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.
- package/package.json +1 -6
- package/dist/algorithms/critical-path.d.ts +0 -46
- package/dist/algorithms/critical-path.d.ts.map +0 -1
- package/dist/algorithms/critical-path.js +0 -320
- package/dist/algorithms/critical-path.js.map +0 -1
- package/dist/algorithms/critical-path.test.d.ts +0 -2
- package/dist/algorithms/critical-path.test.d.ts.map +0 -1
- package/dist/algorithms/critical-path.test.js +0 -194
- package/dist/algorithms/critical-path.test.js.map +0 -1
- package/dist/algorithms/dependency-integrity.d.ts +0 -81
- package/dist/algorithms/dependency-integrity.d.ts.map +0 -1
- package/dist/algorithms/dependency-integrity.js +0 -207
- package/dist/algorithms/dependency-integrity.js.map +0 -1
- package/dist/algorithms/dependency-integrity.test.d.ts +0 -2
- package/dist/algorithms/dependency-integrity.test.d.ts.map +0 -1
- package/dist/algorithms/dependency-integrity.test.js +0 -309
- package/dist/algorithms/dependency-integrity.test.js.map +0 -1
- package/dist/algorithms/index.d.ts +0 -5
- package/dist/algorithms/index.d.ts.map +0 -1
- package/dist/algorithms/index.js +0 -5
- package/dist/algorithms/index.js.map +0 -1
- package/dist/algorithms/tech-analysis.d.ts +0 -106
- package/dist/algorithms/tech-analysis.d.ts.map +0 -1
- package/dist/algorithms/tech-analysis.js +0 -344
- package/dist/algorithms/tech-analysis.js.map +0 -1
- package/dist/algorithms/tech-analysis.test.d.ts +0 -2
- package/dist/algorithms/tech-analysis.test.d.ts.map +0 -1
- package/dist/algorithms/tech-analysis.test.js +0 -338
- package/dist/algorithms/tech-analysis.test.js.map +0 -1
- package/dist/algorithms/topological-sort.d.ts +0 -41
- package/dist/algorithms/topological-sort.d.ts.map +0 -1
- package/dist/algorithms/topological-sort.js +0 -165
- package/dist/algorithms/topological-sort.js.map +0 -1
- package/dist/algorithms/topological-sort.test.d.ts +0 -2
- package/dist/algorithms/topological-sort.test.d.ts.map +0 -1
- package/dist/algorithms/topological-sort.test.js +0 -162
- package/dist/algorithms/topological-sort.test.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -7
- package/dist/index.js.map +0 -1
- package/dist/schemas/inbox.d.ts +0 -55
- package/dist/schemas/inbox.d.ts.map +0 -1
- package/dist/schemas/inbox.js +0 -25
- package/dist/schemas/inbox.js.map +0 -1
- package/dist/schemas/index.d.ts +0 -7
- package/dist/schemas/index.d.ts.map +0 -1
- package/dist/schemas/index.js +0 -17
- package/dist/schemas/index.js.map +0 -1
- package/dist/schemas/project.d.ts +0 -177
- package/dist/schemas/project.d.ts.map +0 -1
- package/dist/schemas/project.js +0 -56
- package/dist/schemas/project.js.map +0 -1
- package/dist/schemas/response-format.d.ts +0 -148
- package/dist/schemas/response-format.d.ts.map +0 -1
- package/dist/schemas/response-format.js +0 -18
- package/dist/schemas/response-format.js.map +0 -1
- package/dist/schemas/response-schema.d.ts +0 -307
- package/dist/schemas/response-schema.d.ts.map +0 -1
- package/dist/schemas/response-schema.js +0 -75
- package/dist/schemas/response-schema.js.map +0 -1
- package/dist/schemas/response-schema.test.d.ts +0 -2
- package/dist/schemas/response-schema.test.d.ts.map +0 -1
- package/dist/schemas/response-schema.test.js +0 -256
- package/dist/schemas/response-schema.test.js.map +0 -1
- package/dist/schemas/state.d.ts +0 -17
- package/dist/schemas/state.d.ts.map +0 -1
- package/dist/schemas/state.js +0 -17
- package/dist/schemas/state.js.map +0 -1
- package/dist/schemas/task.d.ts +0 -881
- package/dist/schemas/task.d.ts.map +0 -1
- package/dist/schemas/task.js +0 -189
- package/dist/schemas/task.js.map +0 -1
- package/dist/schemas/view.d.ts +0 -143
- package/dist/schemas/view.d.ts.map +0 -1
- package/dist/schemas/view.js +0 -48
- package/dist/schemas/view.js.map +0 -1
- package/dist/utils/dashboard-renderer.d.ts +0 -93
- package/dist/utils/dashboard-renderer.d.ts.map +0 -1
- package/dist/utils/dashboard-renderer.js +0 -424
- package/dist/utils/dashboard-renderer.js.map +0 -1
- package/dist/utils/dashboard-renderer.test.d.ts +0 -2
- package/dist/utils/dashboard-renderer.test.d.ts.map +0 -1
- package/dist/utils/dashboard-renderer.test.js +0 -774
- package/dist/utils/dashboard-renderer.test.js.map +0 -1
- package/dist/utils/date.d.ts +0 -94
- package/dist/utils/date.d.ts.map +0 -1
- package/dist/utils/date.js +0 -323
- package/dist/utils/date.js.map +0 -1
- package/dist/utils/date.test.d.ts +0 -2
- package/dist/utils/date.test.d.ts.map +0 -1
- package/dist/utils/date.test.js +0 -276
- package/dist/utils/date.test.js.map +0 -1
- package/dist/utils/hierarchy.d.ts +0 -102
- package/dist/utils/hierarchy.d.ts.map +0 -1
- package/dist/utils/hierarchy.js +0 -236
- package/dist/utils/hierarchy.js.map +0 -1
- package/dist/utils/hierarchy.test.d.ts +0 -2
- package/dist/utils/hierarchy.test.d.ts.map +0 -1
- package/dist/utils/hierarchy.test.js +0 -436
- package/dist/utils/hierarchy.test.js.map +0 -1
- package/dist/utils/id.d.ts +0 -60
- package/dist/utils/id.d.ts.map +0 -1
- package/dist/utils/id.js +0 -118
- package/dist/utils/id.js.map +0 -1
- package/dist/utils/id.test.d.ts +0 -2
- package/dist/utils/id.test.d.ts.map +0 -1
- package/dist/utils/id.test.js +0 -193
- package/dist/utils/id.test.js.map +0 -1
- package/dist/utils/index.d.ts +0 -12
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -34
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/natural-language.d.ts +0 -57
- package/dist/utils/natural-language.d.ts.map +0 -1
- package/dist/utils/natural-language.js +0 -211
- package/dist/utils/natural-language.js.map +0 -1
- package/dist/utils/natural-language.test.d.ts +0 -2
- package/dist/utils/natural-language.test.d.ts.map +0 -1
- package/dist/utils/natural-language.test.js +0 -197
- package/dist/utils/natural-language.test.js.map +0 -1
- package/dist/utils/priority-queue.d.ts +0 -17
- package/dist/utils/priority-queue.d.ts.map +0 -1
- package/dist/utils/priority-queue.js +0 -62
- package/dist/utils/priority-queue.js.map +0 -1
- package/dist/utils/priority-queue.test.d.ts +0 -2
- package/dist/utils/priority-queue.test.d.ts.map +0 -1
- package/dist/utils/priority-queue.test.js +0 -82
- package/dist/utils/priority-queue.test.js.map +0 -1
- package/dist/utils/projection.d.ts +0 -65
- package/dist/utils/projection.d.ts.map +0 -1
- package/dist/utils/projection.js +0 -180
- package/dist/utils/projection.js.map +0 -1
- package/dist/utils/projection.test.d.ts +0 -2
- package/dist/utils/projection.test.d.ts.map +0 -1
- package/dist/utils/projection.test.js +0 -336
- package/dist/utils/projection.test.js.map +0 -1
- package/dist/utils/terminal-ui.d.ts +0 -208
- package/dist/utils/terminal-ui.d.ts.map +0 -1
- package/dist/utils/terminal-ui.js +0 -611
- package/dist/utils/terminal-ui.js.map +0 -1
- package/dist/utils/terminal-ui.test.d.ts +0 -2
- package/dist/utils/terminal-ui.test.d.ts.map +0 -1
- package/dist/utils/terminal-ui.test.js +0 -683
- package/dist/utils/terminal-ui.test.js.map +0 -1
- package/dist/utils/workspace.d.ts +0 -100
- package/dist/utils/workspace.d.ts.map +0 -1
- package/dist/utils/workspace.js +0 -173
- package/dist/utils/workspace.js.map +0 -1
- package/dist/utils/workspace.test.d.ts +0 -2
- package/dist/utils/workspace.test.d.ts.map +0 -1
- package/dist/utils/workspace.test.js +0 -97
- package/dist/utils/workspace.test.js.map +0 -1
- package/src/algorithms/critical-path.test.ts +0 -241
- package/src/algorithms/dependency-integrity.test.ts +0 -348
- package/src/algorithms/tech-analysis.test.ts +0 -413
- package/src/algorithms/topological-sort.test.ts +0 -190
- package/src/schemas/response-schema.test.ts +0 -314
- package/src/utils/dashboard-renderer.test.ts +0 -983
- package/src/utils/date.test.ts +0 -329
- package/src/utils/hierarchy.test.ts +0 -505
- package/src/utils/id.test.ts +0 -235
- package/src/utils/natural-language.test.ts +0 -242
- package/src/utils/priority-queue.test.ts +0 -103
- package/src/utils/projection.test.ts +0 -425
- package/src/utils/terminal-ui.test.ts +0 -831
- package/src/utils/workspace.test.ts +0 -125
package/dist/algorithms/index.js
DELETED
|
@@ -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":"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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tech-analysis.test.d.ts","sourceRoot":"","sources":["../../src/algorithms/tech-analysis.test.ts"],"names":[],"mappings":""}
|