@task-mcp/shared 1.0.28 → 1.0.30
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/dist/algorithms/index.d.ts +1 -1
- package/dist/algorithms/index.d.ts.map +1 -1
- package/dist/algorithms/index.js +1 -1
- package/dist/algorithms/index.js.map +1 -1
- package/dist/algorithms/topological-sort.d.ts +21 -1
- package/dist/algorithms/topological-sort.d.ts.map +1 -1
- package/dist/algorithms/topological-sort.js +12 -1
- package/dist/algorithms/topological-sort.js.map +1 -1
- package/dist/schemas/inbox.d.ts +2 -2
- package/dist/schemas/index.d.ts +1 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +2 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/response-format.d.ts +11 -0
- package/dist/schemas/response-format.d.ts.map +1 -1
- package/dist/schemas/response-format.js.map +1 -1
- package/dist/schemas/session.d.ts +521 -0
- package/dist/schemas/session.d.ts.map +1 -0
- package/dist/schemas/session.js +79 -0
- package/dist/schemas/session.js.map +1 -0
- package/dist/schemas/state.d.ts +2 -2
- package/dist/schemas/task.d.ts +9 -0
- package/dist/schemas/task.d.ts.map +1 -1
- package/dist/schemas/task.js +23 -6
- package/dist/schemas/task.js.map +1 -1
- package/dist/schemas/view.d.ts +18 -18
- package/dist/utils/clustering.d.ts +60 -0
- package/dist/utils/clustering.d.ts.map +1 -0
- package/dist/utils/clustering.js +283 -0
- package/dist/utils/clustering.js.map +1 -0
- package/dist/utils/clustering.test.d.ts +2 -0
- package/dist/utils/clustering.test.d.ts.map +1 -0
- package/dist/utils/clustering.test.js +237 -0
- package/dist/utils/clustering.test.js.map +1 -0
- package/dist/utils/env.d.ts +24 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +40 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/hierarchy.d.ts.map +1 -1
- package/dist/utils/hierarchy.js +13 -6
- package/dist/utils/hierarchy.js.map +1 -1
- package/dist/utils/index.d.ts +6 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +24 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/intent-extractor.d.ts +30 -0
- package/dist/utils/intent-extractor.d.ts.map +1 -0
- package/dist/utils/intent-extractor.js +135 -0
- package/dist/utils/intent-extractor.js.map +1 -0
- package/dist/utils/intent-extractor.test.d.ts +2 -0
- package/dist/utils/intent-extractor.test.d.ts.map +1 -0
- package/dist/utils/intent-extractor.test.js +69 -0
- package/dist/utils/intent-extractor.test.js.map +1 -0
- package/dist/utils/natural-language.d.ts.map +1 -1
- package/dist/utils/natural-language.js +9 -8
- package/dist/utils/natural-language.js.map +1 -1
- package/dist/utils/natural-language.test.js +22 -0
- package/dist/utils/natural-language.test.js.map +1 -1
- package/dist/utils/plan-parser.d.ts +57 -0
- package/dist/utils/plan-parser.d.ts.map +1 -0
- package/dist/utils/plan-parser.js +371 -0
- package/dist/utils/plan-parser.js.map +1 -0
- package/dist/utils/projection.d.ts.map +1 -1
- package/dist/utils/projection.js +43 -1
- package/dist/utils/projection.js.map +1 -1
- package/dist/utils/projection.test.js +57 -7
- package/dist/utils/projection.test.js.map +1 -1
- package/dist/utils/terminal-ui.d.ts +129 -0
- package/dist/utils/terminal-ui.d.ts.map +1 -1
- package/dist/utils/terminal-ui.js +191 -0
- package/dist/utils/terminal-ui.js.map +1 -1
- package/dist/utils/terminal-ui.test.js +227 -0
- package/dist/utils/terminal-ui.test.js.map +1 -1
- package/package.json +2 -2
- package/src/algorithms/index.ts +3 -0
- package/src/algorithms/topological-sort.ts +31 -1
- package/src/schemas/index.ts +11 -0
- package/src/schemas/response-format.ts +15 -2
- package/src/schemas/session.ts +100 -0
- package/src/schemas/task.ts +33 -16
- package/src/utils/clustering.test.ts +285 -0
- package/src/utils/clustering.ts +336 -0
- package/src/utils/env.ts +41 -0
- package/src/utils/hierarchy.ts +17 -8
- package/src/utils/index.ts +48 -0
- package/src/utils/intent-extractor.test.ts +84 -0
- package/src/utils/intent-extractor.ts +156 -0
- package/src/utils/natural-language.test.ts +27 -0
- package/src/utils/natural-language.ts +10 -9
- package/src/utils/plan-parser.ts +466 -0
- package/src/utils/projection.test.ts +61 -7
- package/src/utils/projection.ts +44 -1
- package/src/utils/terminal-ui.test.ts +277 -0
- package/src/utils/terminal-ui.ts +315 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { describe, test, expect } from "bun:test";
|
|
2
|
+
import { tokenize, jaccardSimilarity, calculateTaskSimilarity, findRelatedTasks, clusterTasks, } from "./clustering.js";
|
|
3
|
+
// Helper to create minimal task for testing
|
|
4
|
+
function createTask(overrides) {
|
|
5
|
+
return {
|
|
6
|
+
status: "pending",
|
|
7
|
+
priority: "medium",
|
|
8
|
+
workspace: "test-workspace",
|
|
9
|
+
tags: [],
|
|
10
|
+
contexts: [],
|
|
11
|
+
createdAt: new Date().toISOString(),
|
|
12
|
+
updatedAt: new Date().toISOString(),
|
|
13
|
+
...overrides,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
describe("tokenize", () => {
|
|
17
|
+
test("splits on whitespace and punctuation", () => {
|
|
18
|
+
expect(tokenize("Fix the bug")).toEqual(["fix", "bug"]);
|
|
19
|
+
expect(tokenize("user-authentication")).toEqual(["user", "authentication"]);
|
|
20
|
+
expect(tokenize("task.create")).toEqual(["task", "create"]);
|
|
21
|
+
});
|
|
22
|
+
test("removes stop words", () => {
|
|
23
|
+
expect(tokenize("the user is authenticated")).toEqual(["user", "authenticated"]);
|
|
24
|
+
expect(tokenize("to be or not to be")).toEqual([]);
|
|
25
|
+
});
|
|
26
|
+
test("removes short tokens (< 2 chars)", () => {
|
|
27
|
+
// "I" and "a" are 1 char, removed. "am" is a stop word
|
|
28
|
+
expect(tokenize("I am a user")).toEqual(["user"]);
|
|
29
|
+
});
|
|
30
|
+
test("handles Korean text", () => {
|
|
31
|
+
expect(tokenize("버그 수정하기")).toEqual(["버그", "수정하기"]);
|
|
32
|
+
// Korean particles are removed
|
|
33
|
+
expect(tokenize("사용자를")).toEqual(["사용자를"]); // 를 is suffix, not separate word
|
|
34
|
+
});
|
|
35
|
+
test("handles empty input", () => {
|
|
36
|
+
expect(tokenize("")).toEqual([]);
|
|
37
|
+
expect(tokenize(" ")).toEqual([]);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe("jaccardSimilarity", () => {
|
|
41
|
+
test("returns 1 for identical sets", () => {
|
|
42
|
+
expect(jaccardSimilarity(["fix", "bug"], ["fix", "bug"])).toBe(1);
|
|
43
|
+
});
|
|
44
|
+
test("returns 0 for completely different sets", () => {
|
|
45
|
+
expect(jaccardSimilarity(["fix", "bug"], ["create", "feature"])).toBe(0);
|
|
46
|
+
});
|
|
47
|
+
test("returns 0.5 for half overlap", () => {
|
|
48
|
+
expect(jaccardSimilarity(["fix", "bug"], ["fix", "error"])).toBeCloseTo(0.333, 2);
|
|
49
|
+
});
|
|
50
|
+
test("handles empty arrays", () => {
|
|
51
|
+
expect(jaccardSimilarity([], [])).toBe(0);
|
|
52
|
+
expect(jaccardSimilarity(["fix"], [])).toBe(0);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
describe("calculateTaskSimilarity", () => {
|
|
56
|
+
test("returns high similarity for tasks with same intent", () => {
|
|
57
|
+
const task1 = createTask({
|
|
58
|
+
id: "1",
|
|
59
|
+
title: "Fix login bug",
|
|
60
|
+
workContext: { intent: "Fix issue or bug" },
|
|
61
|
+
});
|
|
62
|
+
const task2 = createTask({
|
|
63
|
+
id: "2",
|
|
64
|
+
title: "Debug authentication",
|
|
65
|
+
workContext: { intent: "Fix issue or bug" },
|
|
66
|
+
});
|
|
67
|
+
const similarity = calculateTaskSimilarity(task1, task2);
|
|
68
|
+
expect(similarity).toBeGreaterThan(0.3);
|
|
69
|
+
});
|
|
70
|
+
test("returns high similarity for tasks with similar titles", () => {
|
|
71
|
+
const task1 = createTask({
|
|
72
|
+
id: "1",
|
|
73
|
+
title: "Implement user authentication",
|
|
74
|
+
});
|
|
75
|
+
const task2 = createTask({
|
|
76
|
+
id: "2",
|
|
77
|
+
title: "Implement admin authentication",
|
|
78
|
+
});
|
|
79
|
+
const similarity = calculateTaskSimilarity(task1, task2);
|
|
80
|
+
expect(similarity).toBeGreaterThan(0.3);
|
|
81
|
+
});
|
|
82
|
+
test("returns low similarity for unrelated tasks", () => {
|
|
83
|
+
const task1 = createTask({
|
|
84
|
+
id: "1",
|
|
85
|
+
title: "Fix login bug",
|
|
86
|
+
workContext: { intent: "Fix issue or bug" },
|
|
87
|
+
});
|
|
88
|
+
const task2 = createTask({
|
|
89
|
+
id: "2",
|
|
90
|
+
title: "Write documentation",
|
|
91
|
+
workContext: { intent: "Document functionality" },
|
|
92
|
+
});
|
|
93
|
+
const similarity = calculateTaskSimilarity(task1, task2);
|
|
94
|
+
expect(similarity).toBeLessThan(0.2);
|
|
95
|
+
});
|
|
96
|
+
test("handles tasks with missing fields", () => {
|
|
97
|
+
const task1 = createTask({ id: "1", title: "Task one" });
|
|
98
|
+
const task2 = createTask({ id: "2", title: "Task two" });
|
|
99
|
+
// Should not throw
|
|
100
|
+
const similarity = calculateTaskSimilarity(task1, task2);
|
|
101
|
+
expect(similarity).toBeGreaterThanOrEqual(0);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
describe("findRelatedTasks", () => {
|
|
105
|
+
const tasks = [
|
|
106
|
+
createTask({
|
|
107
|
+
id: "auth-1",
|
|
108
|
+
title: "Implement user authentication",
|
|
109
|
+
workContext: { intent: "Implement new functionality" },
|
|
110
|
+
}),
|
|
111
|
+
createTask({
|
|
112
|
+
id: "auth-2",
|
|
113
|
+
title: "Implement OAuth authentication",
|
|
114
|
+
workContext: { intent: "Implement new functionality" },
|
|
115
|
+
}),
|
|
116
|
+
createTask({
|
|
117
|
+
id: "bug-1",
|
|
118
|
+
title: "Fix login bug",
|
|
119
|
+
workContext: { intent: "Fix issue or bug" },
|
|
120
|
+
}),
|
|
121
|
+
createTask({
|
|
122
|
+
id: "doc-1",
|
|
123
|
+
title: "Write API documentation",
|
|
124
|
+
workContext: { intent: "Document functionality" },
|
|
125
|
+
}),
|
|
126
|
+
createTask({
|
|
127
|
+
id: "completed-1",
|
|
128
|
+
title: "Implement session authentication",
|
|
129
|
+
status: "completed",
|
|
130
|
+
workContext: { intent: "Implement new functionality" },
|
|
131
|
+
}),
|
|
132
|
+
];
|
|
133
|
+
test("finds related tasks by similarity", () => {
|
|
134
|
+
const related = findRelatedTasks(tasks[0], tasks);
|
|
135
|
+
// auth-2 should be most similar to auth-1
|
|
136
|
+
expect(related.length).toBeGreaterThan(0);
|
|
137
|
+
expect(related[0].task.id).toBe("auth-2");
|
|
138
|
+
});
|
|
139
|
+
test("excludes completed tasks by default", () => {
|
|
140
|
+
const related = findRelatedTasks(tasks[0], tasks);
|
|
141
|
+
const hasCompleted = related.some((r) => r.task.status === "completed");
|
|
142
|
+
expect(hasCompleted).toBe(false);
|
|
143
|
+
});
|
|
144
|
+
test("includes completed tasks when requested", () => {
|
|
145
|
+
const related = findRelatedTasks(tasks[0], tasks, { excludeCompleted: false });
|
|
146
|
+
const hasCompleted = related.some((r) => r.task.status === "completed");
|
|
147
|
+
expect(hasCompleted).toBe(true);
|
|
148
|
+
});
|
|
149
|
+
test("respects limit option", () => {
|
|
150
|
+
const related = findRelatedTasks(tasks[0], tasks, { limit: 1 });
|
|
151
|
+
expect(related.length).toBe(1);
|
|
152
|
+
});
|
|
153
|
+
test("excludes self", () => {
|
|
154
|
+
const related = findRelatedTasks(tasks[0], tasks);
|
|
155
|
+
const hasSelf = related.some((r) => r.task.id === tasks[0].id);
|
|
156
|
+
expect(hasSelf).toBe(false);
|
|
157
|
+
});
|
|
158
|
+
test("excludes siblings when excludeSameParent is true", () => {
|
|
159
|
+
const parentId = "parent-1";
|
|
160
|
+
const tasksWithParent = [
|
|
161
|
+
createTask({ id: "child-1", title: "Task one", parentId }),
|
|
162
|
+
createTask({ id: "child-2", title: "Task one similar", parentId }),
|
|
163
|
+
createTask({ id: "other", title: "Task one other" }),
|
|
164
|
+
];
|
|
165
|
+
const related = findRelatedTasks(tasksWithParent[0], tasksWithParent, {
|
|
166
|
+
excludeSameParent: true,
|
|
167
|
+
});
|
|
168
|
+
const hasSibling = related.some((r) => r.task.id === "child-2");
|
|
169
|
+
expect(hasSibling).toBe(false);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
describe("clusterTasks", () => {
|
|
173
|
+
test("groups similar tasks together", () => {
|
|
174
|
+
const tasks = [
|
|
175
|
+
createTask({
|
|
176
|
+
id: "auth-1",
|
|
177
|
+
title: "Implement user authentication",
|
|
178
|
+
priority: "high",
|
|
179
|
+
workContext: { intent: "Implement new functionality" },
|
|
180
|
+
}),
|
|
181
|
+
createTask({
|
|
182
|
+
id: "auth-2",
|
|
183
|
+
title: "Implement OAuth authentication",
|
|
184
|
+
priority: "medium",
|
|
185
|
+
workContext: { intent: "Implement new functionality" },
|
|
186
|
+
}),
|
|
187
|
+
createTask({
|
|
188
|
+
id: "bug-1",
|
|
189
|
+
title: "Fix critical login bug",
|
|
190
|
+
priority: "critical",
|
|
191
|
+
workContext: { intent: "Fix issue or bug" },
|
|
192
|
+
}),
|
|
193
|
+
createTask({
|
|
194
|
+
id: "bug-2",
|
|
195
|
+
title: "Fix authentication bug",
|
|
196
|
+
priority: "high",
|
|
197
|
+
workContext: { intent: "Fix issue or bug" },
|
|
198
|
+
}),
|
|
199
|
+
];
|
|
200
|
+
const clusters = clusterTasks(tasks, { minClusterSize: 2 });
|
|
201
|
+
// Should have at least one cluster
|
|
202
|
+
expect(clusters.length).toBeGreaterThan(0);
|
|
203
|
+
// Each cluster should have at least minClusterSize members
|
|
204
|
+
for (const cluster of clusters) {
|
|
205
|
+
expect(cluster.members.length).toBeGreaterThanOrEqual(2);
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
test("uses higher priority tasks as representatives", () => {
|
|
209
|
+
const tasks = [
|
|
210
|
+
createTask({
|
|
211
|
+
id: "low",
|
|
212
|
+
title: "Implement feature",
|
|
213
|
+
priority: "low",
|
|
214
|
+
workContext: { intent: "Implement new functionality" },
|
|
215
|
+
}),
|
|
216
|
+
createTask({
|
|
217
|
+
id: "high",
|
|
218
|
+
title: "Implement similar feature",
|
|
219
|
+
priority: "high",
|
|
220
|
+
workContext: { intent: "Implement new functionality" },
|
|
221
|
+
}),
|
|
222
|
+
];
|
|
223
|
+
const clusters = clusterTasks(tasks, { minClusterSize: 2, similarityThreshold: 0.1 });
|
|
224
|
+
if (clusters.length > 0) {
|
|
225
|
+
expect(clusters[0].representative.id).toBe("high");
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
test("returns empty array for no matching clusters", () => {
|
|
229
|
+
const tasks = [
|
|
230
|
+
createTask({ id: "1", title: "Unique task one" }),
|
|
231
|
+
createTask({ id: "2", title: "Different topic completely" }),
|
|
232
|
+
];
|
|
233
|
+
const clusters = clusterTasks(tasks, { minClusterSize: 2, similarityThreshold: 0.5 });
|
|
234
|
+
expect(clusters.length).toBe(0);
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
//# sourceMappingURL=clustering.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clustering.test.js","sourceRoot":"","sources":["../../src/utils/clustering.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment detection utilities
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Check if running in test environment.
|
|
6
|
+
* Detects: NODE_ENV=test, BUN_TEST (set by bun test), VITEST, JEST_WORKER_ID
|
|
7
|
+
*/
|
|
8
|
+
export declare function isTestEnv(): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Check if debug mode is enabled via environment variable
|
|
11
|
+
*/
|
|
12
|
+
export declare function isDebugEnabled(): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Check if verbose logging should be suppressed.
|
|
15
|
+
*
|
|
16
|
+
* Logs are suppressed if:
|
|
17
|
+
* - In test environment AND
|
|
18
|
+
* - TASK_MCP_DEBUG is not set AND
|
|
19
|
+
* - TASK_MCP_TEST_VERBOSE is not set
|
|
20
|
+
*
|
|
21
|
+
* Set TASK_MCP_TEST_VERBOSE=true to enable logs in specific tests.
|
|
22
|
+
*/
|
|
23
|
+
export declare function shouldSuppressLogs(): boolean;
|
|
24
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAOnC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAGxC;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAK5C"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment detection utilities
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Check if running in test environment.
|
|
6
|
+
* Detects: NODE_ENV=test, BUN_TEST (set by bun test), VITEST, JEST_WORKER_ID
|
|
7
|
+
*/
|
|
8
|
+
export function isTestEnv() {
|
|
9
|
+
return (process.env.NODE_ENV === "test" ||
|
|
10
|
+
process.env["BUN_TEST"] !== undefined ||
|
|
11
|
+
process.env["VITEST"] !== undefined ||
|
|
12
|
+
process.env["JEST_WORKER_ID"] !== undefined);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Check if debug mode is enabled via environment variable
|
|
16
|
+
*/
|
|
17
|
+
export function isDebugEnabled() {
|
|
18
|
+
const debugEnv = process.env["TASK_MCP_DEBUG"];
|
|
19
|
+
return debugEnv === "true" || debugEnv === "1";
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Check if verbose logging should be suppressed.
|
|
23
|
+
*
|
|
24
|
+
* Logs are suppressed if:
|
|
25
|
+
* - In test environment AND
|
|
26
|
+
* - TASK_MCP_DEBUG is not set AND
|
|
27
|
+
* - TASK_MCP_TEST_VERBOSE is not set
|
|
28
|
+
*
|
|
29
|
+
* Set TASK_MCP_TEST_VERBOSE=true to enable logs in specific tests.
|
|
30
|
+
*/
|
|
31
|
+
export function shouldSuppressLogs() {
|
|
32
|
+
if (!isTestEnv())
|
|
33
|
+
return false;
|
|
34
|
+
if (isDebugEnabled())
|
|
35
|
+
return false;
|
|
36
|
+
if (process.env["TASK_MCP_TEST_VERBOSE"] === "true")
|
|
37
|
+
return false;
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;QAC/B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS;QACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS;QACnC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,SAAS,CAC5C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/C,OAAO,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,GAAG,CAAC;AACjD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC,SAAS,EAAE;QAAE,OAAO,KAAK,CAAC;IAC/B,IAAI,cAAc,EAAE;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../../src/utils/hierarchy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../../src/utils/hierarchy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAG/C;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA+BlE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAU/E;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BtE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBxE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,CAEnE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAiBtE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,GAAE,MAAgC,GACzC,YAAY,EAAE,CAmDhB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,kBAAkB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3D,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,yBAAyB,CAsC1E"}
|
package/dist/utils/hierarchy.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { shouldSuppressLogs } from "./env.js";
|
|
1
2
|
/**
|
|
2
3
|
* Maximum allowed hierarchy depth (0-indexed)
|
|
3
4
|
* 0 = root task
|
|
@@ -28,7 +29,9 @@ export function getTaskLevel(tasks, taskId) {
|
|
|
28
29
|
while (currentTask.parentId) {
|
|
29
30
|
const parent = taskMap.get(currentTask.parentId);
|
|
30
31
|
if (!parent) {
|
|
31
|
-
|
|
32
|
+
if (!shouldSuppressLogs()) {
|
|
33
|
+
console.warn(`[task-mcp] Detached parent reference: task "${currentTask.id}" references non-existent parent "${currentTask.parentId}"`);
|
|
34
|
+
}
|
|
32
35
|
break;
|
|
33
36
|
}
|
|
34
37
|
level++;
|
|
@@ -168,12 +171,15 @@ export function buildTaskTree(tasks, rootId, maxDepth = MAX_HIERARCHY_DEPTH + 1)
|
|
|
168
171
|
if (depth >= maxDepth) {
|
|
169
172
|
return { task, children: [] };
|
|
170
173
|
}
|
|
171
|
-
|
|
172
|
-
|
|
174
|
+
// Mark as visited (O(1) instead of copying the Set)
|
|
175
|
+
visited.add(task.id);
|
|
173
176
|
const children = childrenMap.get(task.id) || [];
|
|
177
|
+
const childNodes = children.map((child) => buildNode(child, depth + 1, visited));
|
|
178
|
+
// Restore visited state after processing children (backtracking)
|
|
179
|
+
visited.delete(task.id);
|
|
174
180
|
return {
|
|
175
181
|
task,
|
|
176
|
-
children:
|
|
182
|
+
children: childNodes,
|
|
177
183
|
};
|
|
178
184
|
}
|
|
179
185
|
if (rootId) {
|
|
@@ -183,8 +189,9 @@ export function buildTaskTree(tasks, rootId, maxDepth = MAX_HIERARCHY_DEPTH + 1)
|
|
|
183
189
|
}
|
|
184
190
|
return [buildNode(rootTask, 0, new Set())];
|
|
185
191
|
}
|
|
186
|
-
// Return all root tasks (no parent)
|
|
187
|
-
|
|
192
|
+
// Return all root tasks (no parent OR parent not in filtered tasks)
|
|
193
|
+
// This ensures orphaned subtasks (whose parent was filtered out) are still visible
|
|
194
|
+
const rootTasks = tasks.filter((t) => !t.parentId || !taskMap.has(t.parentId));
|
|
188
195
|
return rootTasks.map((task) => buildNode(task, 0, new Set()));
|
|
189
196
|
}
|
|
190
197
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../../src/utils/hierarchy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../../src/utils/hierarchy.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -2,11 +2,15 @@ export { generateId, generateTaskId, generateViewId, isValidTaskId, generateInbo
|
|
|
2
2
|
export { PriorityQueue } from "./priority-queue.js";
|
|
3
3
|
export { now, parseRelativeDate, parseRelativeDateSafe, parseDateString, formatDate, formatDisplayDate, isToday, isPastDue, isWithinDays, isWithinDaysSafe, isValidDate, DateParseError, type DateParseErrorReason, type DateParseResult, type IsWithinDaysResult, } from "./date.js";
|
|
4
4
|
export { parseTaskInput, parseInboxInput, parseInput, type ParseTarget, type ParsedInput, } from "./natural-language.js";
|
|
5
|
-
export { MAX_HIERARCHY_DEPTH, getTaskLevel, validateHierarchyDepth, getAncestorIds, getDescendantIds, getChildTasks, getRootTask, buildTaskTree, type TaskTreeNode, } from "./hierarchy.js";
|
|
5
|
+
export { MAX_HIERARCHY_DEPTH, getTaskLevel, validateHierarchyDepth, validateHierarchy, type HierarchyValidationResult, getAncestorIds, getDescendantIds, getChildTasks, getRootTask, buildTaskTree, type TaskTreeNode, } from "./hierarchy.js";
|
|
6
6
|
export { formatTask, formatTasks, formatTasksPaginated, formatInboxItem, formatInboxItems, formatResponse, applyPagination, truncate, summarizeList, sortTasks, } from "./projection.js";
|
|
7
7
|
export { calculateStats, calculateDependencyMetrics, renderStatusWidget, renderActionsWidget, renderInboxWidget, renderWorkspacesTable, renderProjectsTable, // Legacy alias
|
|
8
8
|
renderTasksTable, renderDashboard, renderWorkspaceDashboard, renderProjectDashboard, // Legacy alias
|
|
9
9
|
renderGlobalDashboard, type DashboardStats, type DependencyMetrics, type WorkspaceInfo, type DashboardData, type RenderDashboardOptions, } from "./dashboard-renderer.js";
|
|
10
|
-
export { color, style, styled, c, BOX, box, drawBox, hline, stripAnsi, displayWidth, visibleLength, pad, padEnd, padStart, center, truncateStr, progressBar, type ProgressBarOptions, sideBySide, sideBySideArrays, type BoxOptions, table, renderTable, type TableColumn, statusColors, statusIcons, icons, formatStatus, priorityColors, formatPriority, formatDependencies, banner, } from "./terminal-ui.js";
|
|
10
|
+
export { color, style, styled, c, BOX, box, drawBox, hline, stripAnsi, displayWidth, visibleLength, pad, padEnd, padStart, center, truncateStr, progressBar, type ProgressBarOptions, sideBySide, sideBySideArrays, type BoxOptions, table, renderTable, type TableColumn, statusColors, statusIcons, icons, formatStatus, priorityColors, formatPriority, formatDependencies, banner, STATUS_SYMBOLS, formatStatusSymbol, PRIORITY_LEVELS, formatPriorityBadge, renderSection, renderSections, type SectionItem, type SectionOptions, renderAlert, type AlertSeverity, type AlertOptions, renderStats, type StatItem, formatDueDate, formatTaskLine, type TaskLineOptions, } from "./terminal-ui.js";
|
|
11
11
|
export { normalizeWorkspace, getGitRepoRoot, getGitRepoRootSync, getWorkspaceFromGit, getWorkspaceFromGitSync, getWorkspaceFromPath, detectWorkspace, detectWorkspaceSync, } from "./workspace.js";
|
|
12
|
+
export { parsePlan, type ParsedPlanTask, type ParsePlanOptions, type ParsePlanResult, } from "./plan-parser.js";
|
|
13
|
+
export { extractIntent, generateFallbackIntent, getIntent } from "./intent-extractor.js";
|
|
14
|
+
export { tokenize, jaccardSimilarity, calculateTaskSimilarity, findRelatedTasks, clusterTasks, } from "./clustering.js";
|
|
15
|
+
export { isTestEnv, isDebugEnabled, shouldSuppressLogs } from "./env.js";
|
|
12
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EAEd,cAAc,EACd,KAAK,kBAAkB,EACvB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,GAAG,EACH,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,aAAa,EACb,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,QAAQ,EACR,aAAa,EACb,SAAS,GACV,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EAAE,eAAe;AACpC,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,sBAAsB,EAAE,eAAe;AACvC,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,sBAAsB,GAC5B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAEL,KAAK,EACL,KAAK,EACL,MAAM,EACN,CAAC,EAED,GAAG,EACH,GAAG,EACH,OAAO,EACP,KAAK,EAEL,SAAS,EACT,YAAY,EACZ,aAAa,EACb,GAAG,EACH,MAAM,EACN,QAAQ,EACR,MAAM,EACN,WAAW,EAEX,WAAW,EACX,KAAK,kBAAkB,EAEvB,UAAU,EACV,gBAAgB,EAChB,KAAK,UAAU,EAEf,KAAK,EACL,WAAW,EACX,KAAK,WAAW,EAEhB,YAAY,EACZ,WAAW,EACX,KAAK,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,kBAAkB,EAElB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.js
CHANGED
|
@@ -4,7 +4,7 @@ InvalidIdError, validateTaskId, validateInboxId, assertValidTaskId, assertValidI
|
|
|
4
4
|
export { PriorityQueue } from "./priority-queue.js";
|
|
5
5
|
export { now, parseRelativeDate, parseRelativeDateSafe, parseDateString, formatDate, formatDisplayDate, isToday, isPastDue, isWithinDays, isWithinDaysSafe, isValidDate, DateParseError, } from "./date.js";
|
|
6
6
|
export { parseTaskInput, parseInboxInput, parseInput, } from "./natural-language.js";
|
|
7
|
-
export { MAX_HIERARCHY_DEPTH, getTaskLevel, validateHierarchyDepth, getAncestorIds, getDescendantIds, getChildTasks, getRootTask, buildTaskTree, } from "./hierarchy.js";
|
|
7
|
+
export { MAX_HIERARCHY_DEPTH, getTaskLevel, validateHierarchyDepth, validateHierarchy, getAncestorIds, getDescendantIds, getChildTasks, getRootTask, buildTaskTree, } from "./hierarchy.js";
|
|
8
8
|
// Projection utilities (token optimization)
|
|
9
9
|
export { formatTask, formatTasks, formatTasksPaginated, formatInboxItem, formatInboxItems, formatResponse, applyPagination, truncate, summarizeList, sortTasks, } from "./projection.js";
|
|
10
10
|
// Dashboard renderer
|
|
@@ -28,7 +28,29 @@ table, renderTable,
|
|
|
28
28
|
// Formatters
|
|
29
29
|
statusColors, statusIcons, icons, formatStatus, priorityColors, formatPriority, formatDependencies,
|
|
30
30
|
// Banner
|
|
31
|
-
banner,
|
|
31
|
+
banner,
|
|
32
|
+
// Status symbols (checkbox style)
|
|
33
|
+
STATUS_SYMBOLS, formatStatusSymbol,
|
|
34
|
+
// Priority badge (P0-P3 style)
|
|
35
|
+
PRIORITY_LEVELS, formatPriorityBadge,
|
|
36
|
+
// Section renderer (GitHub CLI style)
|
|
37
|
+
renderSection, renderSections,
|
|
38
|
+
// Alert box
|
|
39
|
+
renderAlert,
|
|
40
|
+
// Stats row
|
|
41
|
+
renderStats,
|
|
42
|
+
// Due date formatter
|
|
43
|
+
formatDueDate,
|
|
44
|
+
// Task line formatter
|
|
45
|
+
formatTaskLine, } from "./terminal-ui.js";
|
|
32
46
|
// Workspace detection
|
|
33
47
|
export { normalizeWorkspace, getGitRepoRoot, getGitRepoRootSync, getWorkspaceFromGit, getWorkspaceFromGitSync, getWorkspaceFromPath, detectWorkspace, detectWorkspaceSync, } from "./workspace.js";
|
|
48
|
+
// Plan parser
|
|
49
|
+
export { parsePlan, } from "./plan-parser.js";
|
|
50
|
+
// Intent extractor (auto-generate intent from title/description)
|
|
51
|
+
export { extractIntent, generateFallbackIntent, getIntent } from "./intent-extractor.js";
|
|
52
|
+
// Semantic clustering (task similarity for session resumption)
|
|
53
|
+
export { tokenize, jaccardSimilarity, calculateTaskSimilarity, findRelatedTasks, clusterTasks, } from "./clustering.js";
|
|
54
|
+
// Environment detection
|
|
55
|
+
export { isTestEnv, isDebugEnabled, shouldSuppressLogs } from "./env.js";
|
|
34
56
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc;AACd,uDAAuD;AACvD,cAAc,EAEd,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,GAAG,EACH,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,cAAc,GAIf,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,GAGX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,aAAa,GAEd,MAAM,gBAAgB,CAAC;AAExB,4CAA4C;AAC5C,OAAO,EACL,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,QAAQ,EACR,aAAa,EACb,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,qBAAqB;AACrB,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EAAE,eAAe;AACpC,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,sBAAsB,EAAE,eAAe;AACvC,qBAAqB,GAMtB,MAAM,yBAAyB,CAAC;AAEjC,wBAAwB;AACxB,OAAO;AACL,oBAAoB;AACpB,KAAK,EACL,KAAK,EACL,MAAM,EACN,CAAC;AACD,cAAc;AACd,GAAG,EACH,GAAG,EACH,OAAO,EACP,KAAK;AACL,mBAAmB;AACnB,SAAS,EACT,YAAY,EACZ,aAAa,EACb,GAAG,EACH,MAAM,EACN,QAAQ,EACR,MAAM,EACN,WAAW;AACX,eAAe;AACf,WAAW;AAEX,SAAS;AACT,UAAU,EACV,gBAAgB;AAEhB,SAAS;AACT,KAAK,EACL,WAAW;AAEX,aAAa;AACb,YAAY,EACZ,WAAW,EACX,KAAK,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,kBAAkB;AAClB,SAAS;AACT,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intent Extractor
|
|
3
|
+
*
|
|
4
|
+
* Extracts intent from task title/description using pattern matching.
|
|
5
|
+
* Provides fallback intent generation when workContext.intent is not provided.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Extract intent from task title and description
|
|
9
|
+
*
|
|
10
|
+
* @param title - Task title
|
|
11
|
+
* @param description - Optional task description
|
|
12
|
+
* @returns Extracted intent or undefined if no pattern matches
|
|
13
|
+
*/
|
|
14
|
+
export declare function extractIntent(title: string, description?: string): string | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Generate a fallback intent based on title structure
|
|
17
|
+
*
|
|
18
|
+
* Used when no pattern matches but we still want some intent
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateFallbackIntent(title: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Get intent for a task, extracting from content or generating fallback
|
|
23
|
+
*
|
|
24
|
+
* @param title - Task title
|
|
25
|
+
* @param description - Optional task description
|
|
26
|
+
* @param autoGenerate - Whether to generate fallback if no pattern matches (default: true)
|
|
27
|
+
* @returns Intent string
|
|
28
|
+
*/
|
|
29
|
+
export declare function getIntent(title: string, description?: string, autoGenerate?: boolean): string | undefined;
|
|
30
|
+
//# sourceMappingURL=intent-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-extractor.d.ts","sourceRoot":"","sources":["../../src/utils/intent-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsEH;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAyBrF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAe5D;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,GAAE,OAAc,GAC3B,MAAM,GAAG,SAAS,CAYpB"}
|