task-o-matic 0.0.18 → 0.0.20
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/cli/display/task.d.ts +28 -2
- package/dist/cli/display/task.d.ts.map +1 -1
- package/dist/cli/display/task.js +27 -21
- package/dist/commands/tasks/show.d.ts.map +1 -1
- package/dist/commands/tasks/show.js +21 -1
- package/dist/commands/tasks/tree.d.ts.map +1 -1
- package/dist/commands/tasks/tree.js +21 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/lib/ai-service/ai-operations.d.ts +2 -3
- package/dist/lib/ai-service/ai-operations.d.ts.map +1 -1
- package/dist/lib/ai-service/ai-operations.js +7 -13
- package/dist/lib/ai-service/base-operations.d.ts +0 -2
- package/dist/lib/ai-service/base-operations.d.ts.map +1 -1
- package/dist/lib/ai-service/base-operations.js +0 -4
- package/dist/lib/ai-service/documentation-operations.d.ts.map +1 -1
- package/dist/lib/ai-service/documentation-operations.js +10 -8
- package/dist/lib/ai-service/filesystem-tools.d.ts +33 -47
- package/dist/lib/ai-service/filesystem-tools.d.ts.map +1 -1
- package/dist/lib/ai-service/filesystem-tools.js +61 -109
- package/dist/lib/ai-service/model-provider.d.ts +4 -0
- package/dist/lib/ai-service/model-provider.d.ts.map +1 -1
- package/dist/lib/ai-service/model-provider.js +21 -5
- package/dist/lib/ai-service/prd-operations.d.ts.map +1 -1
- package/dist/lib/ai-service/prd-operations.js +9 -7
- package/dist/lib/ai-service/task-operations.d.ts +1 -1
- package/dist/lib/ai-service/task-operations.d.ts.map +1 -1
- package/dist/lib/ai-service/task-operations.js +7 -8
- package/dist/lib/config.d.ts +8 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +59 -23
- package/dist/lib/git-utils.d.ts.map +1 -1
- package/dist/lib/git-utils.js +12 -15
- package/dist/lib/hooks/logger.d.ts.map +1 -1
- package/dist/lib/hooks/logger.js +16 -0
- package/dist/lib/hooks.d.ts +10 -1
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/logger.d.ts +20 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +32 -0
- package/dist/lib/provider-defaults.json +22 -0
- package/dist/lib/task-execution-core.d.ts.map +1 -1
- package/dist/lib/task-execution-core.js +29 -33
- package/dist/lib/task-planning.d.ts.map +1 -1
- package/dist/lib/task-planning.js +9 -9
- package/dist/lib/task-review.d.ts.map +1 -1
- package/dist/lib/task-review.js +10 -13
- package/dist/lib/validation.d.ts.map +1 -1
- package/dist/lib/validation.js +12 -15
- package/dist/test/lib/ai-service/task-operations.test.js +0 -4
- package/dist/utils/ai-service-factory.d.ts +0 -8
- package/dist/utils/ai-service-factory.d.ts.map +1 -1
- package/dist/utils/ai-service-factory.js +3 -9
- package/package.json +1 -1
|
@@ -4,8 +4,30 @@ export interface TaskDisplayOptions {
|
|
|
4
4
|
showSubtasks?: boolean;
|
|
5
5
|
showMetadata?: boolean;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* Data object for displayTaskDetails - makes the function pure
|
|
9
|
+
*/
|
|
10
|
+
export interface TaskDetailsData {
|
|
11
|
+
task: Task;
|
|
12
|
+
content?: string;
|
|
13
|
+
aiMetadata?: TaskAIMetadata;
|
|
14
|
+
subtasks?: Task[];
|
|
15
|
+
subtaskMetadata?: Map<string, TaskAIMetadata>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Data object for displayTaskTree - makes the function pure
|
|
19
|
+
*/
|
|
20
|
+
export interface TaskTreeData {
|
|
21
|
+
tasks: Task[];
|
|
22
|
+
subtasksMap: Map<string, Task[]>;
|
|
23
|
+
rootId?: string;
|
|
24
|
+
}
|
|
7
25
|
export declare function displayTask(task: Task, options?: TaskDisplayOptions): Promise<void>;
|
|
8
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Display detailed task information.
|
|
28
|
+
* Pure function - accepts all data as arguments, no internal service calls.
|
|
29
|
+
*/
|
|
30
|
+
export declare function displayTaskDetails(data: TaskDetailsData): void;
|
|
9
31
|
export declare function displayTaskList(tasks: Task[]): void;
|
|
10
32
|
export declare function displayCreatedTask(task: Task, aiMetadata?: TaskAIMetadata): void;
|
|
11
33
|
export declare function displaySubtaskCreation(subtasks: Task[]): void;
|
|
@@ -14,5 +36,9 @@ export declare function displayTaskDelete(deleted: Task[], orphanedSubtasks: Tas
|
|
|
14
36
|
export declare function displayTaskStatusChange(task: Task, oldStatus: string, newStatus: string): void;
|
|
15
37
|
export declare function displayTagsUpdate(task: Task, addedTags: string[], removedTags: string[]): void;
|
|
16
38
|
export declare function displayNextTask(task: Task, criteria: string): void;
|
|
17
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Display hierarchical task tree.
|
|
41
|
+
* Pure function - accepts all data as arguments, no internal service calls.
|
|
42
|
+
*/
|
|
43
|
+
export declare function displayTaskTree(data: TaskTreeData): void;
|
|
18
44
|
//# sourceMappingURL=task.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/cli/display/task.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/cli/display/task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CA8F9D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAKnD;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,UAAU,CAAC,EAAE,cAAc,GAC1B,IAAI,CAUN;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAS7D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAyBhE;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,IAAI,EAAE,EACf,gBAAgB,EAAE,IAAI,EAAE,GACvB,IAAI,CAeN;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,IAAI,CAaN;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EAAE,GACpB,IAAI,CAgBN;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAkClE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAmExD"}
|
package/dist/cli/display/task.js
CHANGED
|
@@ -15,7 +15,6 @@ exports.displayTagsUpdate = displayTagsUpdate;
|
|
|
15
15
|
exports.displayNextTask = displayNextTask;
|
|
16
16
|
exports.displayTaskTree = displayTaskTree;
|
|
17
17
|
const chalk_1 = __importDefault(require("chalk"));
|
|
18
|
-
const tasks_1 = require("../../services/tasks");
|
|
19
18
|
async function displayTask(task, options = {}) {
|
|
20
19
|
const { indent = "", showSubtasks = true, showMetadata = false } = options;
|
|
21
20
|
const statusColor = task.status === "completed"
|
|
@@ -33,7 +32,12 @@ async function displayTask(task, options = {}) {
|
|
|
33
32
|
}
|
|
34
33
|
}
|
|
35
34
|
}
|
|
36
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Display detailed task information.
|
|
37
|
+
* Pure function - accepts all data as arguments, no internal service calls.
|
|
38
|
+
*/
|
|
39
|
+
function displayTaskDetails(data) {
|
|
40
|
+
const { task, content, aiMetadata, subtasks = [], subtaskMetadata } = data;
|
|
37
41
|
console.log(chalk_1.default.blue("Task Details:"));
|
|
38
42
|
console.log(`${chalk_1.default.cyan("ID:")} ${task.id}`);
|
|
39
43
|
console.log(`${chalk_1.default.cyan("Title:")} ${chalk_1.default.bold(task.title)}`);
|
|
@@ -41,12 +45,9 @@ async function displayTaskDetails(task) {
|
|
|
41
45
|
if (task.description) {
|
|
42
46
|
console.log(`${chalk_1.default.cyan("Description:")} ${task.description}`);
|
|
43
47
|
}
|
|
44
|
-
if (
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
console.log(`${chalk_1.default.cyan("Full Content:")}`);
|
|
48
|
-
console.log(fullContent);
|
|
49
|
-
}
|
|
48
|
+
if (content) {
|
|
49
|
+
console.log(`${chalk_1.default.cyan("Full Content:")}`);
|
|
50
|
+
console.log(content);
|
|
50
51
|
}
|
|
51
52
|
if (task.estimatedEffort) {
|
|
52
53
|
console.log(`${chalk_1.default.cyan("Estimated Effort:")} ${task.estimatedEffort}`);
|
|
@@ -54,7 +55,6 @@ async function displayTaskDetails(task) {
|
|
|
54
55
|
if (task.tags && task.tags.length > 0) {
|
|
55
56
|
console.log(`${chalk_1.default.cyan("Tags:")} ${task.tags.join(", ")}`);
|
|
56
57
|
}
|
|
57
|
-
const aiMetadata = await tasks_1.taskService.getTaskAIMetadata(task.id);
|
|
58
58
|
if (aiMetadata?.aiGenerated) {
|
|
59
59
|
console.log(`${chalk_1.default.magenta("🤖 AI-generated")}`);
|
|
60
60
|
if (aiMetadata.aiProvider) {
|
|
@@ -76,7 +76,6 @@ async function displayTaskDetails(task) {
|
|
|
76
76
|
});
|
|
77
77
|
});
|
|
78
78
|
}
|
|
79
|
-
const subtasks = await tasks_1.taskService.getSubtasks(task.id);
|
|
80
79
|
if (subtasks.length > 0) {
|
|
81
80
|
console.log(chalk_1.default.blue(`\n📋 Subtasks (${subtasks.length}):`));
|
|
82
81
|
for (let i = 0; i < subtasks.length; i++) {
|
|
@@ -93,8 +92,8 @@ async function displayTaskDetails(task) {
|
|
|
93
92
|
if (subtask.estimatedEffort) {
|
|
94
93
|
console.log(chalk_1.default.cyan(` Effort: ${subtask.estimatedEffort}`));
|
|
95
94
|
}
|
|
96
|
-
const
|
|
97
|
-
if (
|
|
95
|
+
const subtaskAiMeta = subtaskMetadata?.get(subtask.id);
|
|
96
|
+
if (subtaskAiMeta?.aiGenerated) {
|
|
98
97
|
console.log(chalk_1.default.magenta(` 🤖 AI-generated`));
|
|
99
98
|
}
|
|
100
99
|
if (i < subtasks.length - 1)
|
|
@@ -185,9 +184,11 @@ function displayTagsUpdate(task, addedTags, removedTags) {
|
|
|
185
184
|
function displayNextTask(task, criteria) {
|
|
186
185
|
console.log(chalk_1.default.blue(`\n🎯 Next task (${criteria}):`));
|
|
187
186
|
console.log(chalk_1.default.green(`✓ ${task.title} (${task.id})`));
|
|
188
|
-
const statusColor = task.status === "completed"
|
|
189
|
-
|
|
190
|
-
|
|
187
|
+
const statusColor = task.status === "completed"
|
|
188
|
+
? chalk_1.default.green
|
|
189
|
+
: task.status === "in-progress"
|
|
190
|
+
? chalk_1.default.yellow
|
|
191
|
+
: chalk_1.default.gray;
|
|
191
192
|
console.log(statusColor(` Status: ${task.status}`));
|
|
192
193
|
if (task.description) {
|
|
193
194
|
console.log(chalk_1.default.cyan(` Description: ${task.description.substring(0, 100)}${task.description.length > 100 ? "..." : ""}`));
|
|
@@ -200,7 +201,12 @@ function displayNextTask(task, criteria) {
|
|
|
200
201
|
}
|
|
201
202
|
console.log(chalk_1.default.gray(` Created: ${new Date(task.createdAt).toLocaleString()}`));
|
|
202
203
|
}
|
|
203
|
-
|
|
204
|
+
/**
|
|
205
|
+
* Display hierarchical task tree.
|
|
206
|
+
* Pure function - accepts all data as arguments, no internal service calls.
|
|
207
|
+
*/
|
|
208
|
+
function displayTaskTree(data) {
|
|
209
|
+
const { tasks, subtasksMap, rootId } = data;
|
|
204
210
|
if (tasks.length === 0) {
|
|
205
211
|
console.log(chalk_1.default.yellow("No tasks found."));
|
|
206
212
|
return;
|
|
@@ -211,14 +217,14 @@ async function displayTaskTree(tasks, rootId) {
|
|
|
211
217
|
else {
|
|
212
218
|
console.log(chalk_1.default.blue(`\n🌳 Complete Task Tree:`));
|
|
213
219
|
}
|
|
214
|
-
const displayTaskWithIndent =
|
|
220
|
+
const displayTaskWithIndent = (task, indent = "", isLast = false) => {
|
|
215
221
|
const statusColor = task.status === "completed"
|
|
216
222
|
? chalk_1.default.green
|
|
217
223
|
: task.status === "in-progress"
|
|
218
224
|
? chalk_1.default.yellow
|
|
219
225
|
: chalk_1.default.gray;
|
|
220
226
|
const connector = isLast ? "└── " : "├── ";
|
|
221
|
-
const subtasks =
|
|
227
|
+
const subtasks = subtasksMap.get(task.id) || [];
|
|
222
228
|
const hasSubtasks = subtasks.length > 0;
|
|
223
229
|
console.log(`${indent}${connector}${statusColor(`[${task.status}]`)} ${chalk_1.default.bold(task.title)} ${chalk_1.default.gray(`(${task.id})`)}`);
|
|
224
230
|
if (task.tags && task.tags.length > 0) {
|
|
@@ -228,7 +234,7 @@ async function displayTaskTree(tasks, rootId) {
|
|
|
228
234
|
const subtaskIndent = indent + (isLast ? " " : "│ ");
|
|
229
235
|
for (let i = 0; i < subtasks.length; i++) {
|
|
230
236
|
const isLastSubtask = i === subtasks.length - 1;
|
|
231
|
-
|
|
237
|
+
displayTaskWithIndent(subtasks[i], subtaskIndent, isLastSubtask);
|
|
232
238
|
}
|
|
233
239
|
}
|
|
234
240
|
};
|
|
@@ -236,7 +242,7 @@ async function displayTaskTree(tasks, rootId) {
|
|
|
236
242
|
if (rootId) {
|
|
237
243
|
const rootTask = tasks.find((t) => t.id === rootId);
|
|
238
244
|
if (rootTask) {
|
|
239
|
-
|
|
245
|
+
displayTaskWithIndent(rootTask, "", true);
|
|
240
246
|
}
|
|
241
247
|
}
|
|
242
248
|
else {
|
|
@@ -244,7 +250,7 @@ async function displayTaskTree(tasks, rootId) {
|
|
|
244
250
|
const topLevelTasks = tasks.filter((task) => !task.parentId);
|
|
245
251
|
for (let i = 0; i < topLevelTasks.length; i++) {
|
|
246
252
|
const isLast = i === topLevelTasks.length - 1;
|
|
247
|
-
|
|
253
|
+
displayTaskWithIndent(topLevelTasks[i], "", isLast);
|
|
248
254
|
}
|
|
249
255
|
}
|
|
250
256
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,WAAW,SAsCpB,CAAC"}
|
|
@@ -15,7 +15,27 @@ exports.showCommand = new commander_1.Command("show")
|
|
|
15
15
|
if (!task) {
|
|
16
16
|
throw (0, task_o_matic_error_1.formatTaskNotFoundError)(options.id);
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
// Fetch all data for pure display function
|
|
19
|
+
const content = task.contentFile
|
|
20
|
+
? await tasks_1.taskService.getTaskContent(task.id)
|
|
21
|
+
: undefined;
|
|
22
|
+
const aiMetadata = await tasks_1.taskService.getTaskAIMetadata(task.id);
|
|
23
|
+
const subtasks = await tasks_1.taskService.getSubtasks(task.id);
|
|
24
|
+
// Fetch metadata for subtasks
|
|
25
|
+
const subtaskMetadata = new Map();
|
|
26
|
+
for (const subtask of subtasks) {
|
|
27
|
+
const meta = await tasks_1.taskService.getTaskAIMetadata(subtask.id);
|
|
28
|
+
if (meta) {
|
|
29
|
+
subtaskMetadata.set(subtask.id, meta);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
(0, task_1.displayTaskDetails)({
|
|
33
|
+
task,
|
|
34
|
+
content: content || undefined,
|
|
35
|
+
aiMetadata: aiMetadata || undefined,
|
|
36
|
+
subtasks,
|
|
37
|
+
subtaskMetadata,
|
|
38
|
+
});
|
|
19
39
|
}
|
|
20
40
|
catch (error) {
|
|
21
41
|
(0, progress_1.displayError)(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks/tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks/tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,WAAW,SAsBpB,CAAC"}
|
|
@@ -5,13 +5,33 @@ const commander_1 = require("commander");
|
|
|
5
5
|
const tasks_1 = require("../../services/tasks");
|
|
6
6
|
const task_1 = require("../../cli/display/task");
|
|
7
7
|
const progress_1 = require("../../cli/display/progress");
|
|
8
|
+
/**
|
|
9
|
+
* Build a map of task ID to subtasks by traversing the task tree
|
|
10
|
+
*/
|
|
11
|
+
async function buildSubtasksMap(tasks) {
|
|
12
|
+
const map = new Map();
|
|
13
|
+
const queue = [...tasks];
|
|
14
|
+
while (queue.length > 0) {
|
|
15
|
+
const task = queue.shift();
|
|
16
|
+
const subtasks = await tasks_1.taskService.getSubtasks(task.id);
|
|
17
|
+
map.set(task.id, subtasks);
|
|
18
|
+
queue.push(...subtasks);
|
|
19
|
+
}
|
|
20
|
+
return map;
|
|
21
|
+
}
|
|
8
22
|
exports.treeCommand = new commander_1.Command("tree")
|
|
9
23
|
.description("Display hierarchical task tree")
|
|
10
24
|
.option("--id <id>", "Root task ID (optional - shows full tree if not specified)")
|
|
11
25
|
.action(async (options) => {
|
|
12
26
|
try {
|
|
13
27
|
const tasks = await tasks_1.taskService.getTaskTree(options.id);
|
|
14
|
-
|
|
28
|
+
// Pre-fetch all subtasks for the tree
|
|
29
|
+
const subtasksMap = await buildSubtasksMap(tasks);
|
|
30
|
+
(0, task_1.displayTaskTree)({
|
|
31
|
+
tasks,
|
|
32
|
+
subtasksMap,
|
|
33
|
+
rootId: options.id,
|
|
34
|
+
});
|
|
15
35
|
}
|
|
16
36
|
catch (error) {
|
|
17
37
|
(0, progress_1.displayError)(error);
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA+C9B;;;GAGG;AACH,eAAO,MAAM,MAAM,qBAgBlB,CAAC;AAEF;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,7 @@ const prompt_1 = require("./commands/prompt");
|
|
|
20
20
|
const workflow_1 = require("./commands/workflow");
|
|
21
21
|
const benchmark_1 = require("./commands/benchmark");
|
|
22
22
|
const config_2 = require("./lib/config");
|
|
23
|
+
const logger_1 = require("./lib/hooks/logger");
|
|
23
24
|
const program = new commander_1.Command();
|
|
24
25
|
exports.program = program;
|
|
25
26
|
program
|
|
@@ -61,6 +62,8 @@ program.on("command:*", (operands) => {
|
|
|
61
62
|
*/
|
|
62
63
|
const runCLI = async () => {
|
|
63
64
|
try {
|
|
65
|
+
// Initialize logger hooks
|
|
66
|
+
(0, logger_1.registerLoggerHooks)();
|
|
64
67
|
// Ensure config is loaded before running any commands
|
|
65
68
|
await config_2.configManager.load();
|
|
66
69
|
await program.parseAsync(process.argv);
|
|
@@ -8,7 +8,6 @@ export declare class AIOperations extends BaseOperations {
|
|
|
8
8
|
private prdOps;
|
|
9
9
|
private taskOps;
|
|
10
10
|
private docOps;
|
|
11
|
-
constructor(tools?: any);
|
|
12
11
|
parsePRD(prdContent: string, config?: Partial<AIConfig>, promptOverride?: string, userMessage?: string, streamingOptions?: StreamingOptions, retryConfig?: Partial<RetryConfig>, workingDirectory?: string, enableFilesystemTools?: boolean): Promise<AIPRDParseResult>;
|
|
13
12
|
breakdownTask(task: Task, config?: Partial<AIConfig>, promptOverride?: string, userMessage?: string, streamingOptions?: StreamingOptions, retryConfig?: Partial<RetryConfig>, fullContent?: string, stackInfo?: string, existingSubtasks?: Task[], enableFilesystemTools?: boolean): Promise<Array<{
|
|
14
13
|
title: string;
|
|
@@ -27,8 +26,8 @@ export declare class AIOperations extends BaseOperations {
|
|
|
27
26
|
enhanceTaskWithDocumentation(taskId: string, taskTitle: string, taskDescription: string, stackInfo?: string, streamingOptions?: StreamingOptions, retryConfig?: Partial<RetryConfig>, config?: Partial<AIConfig>, existingResearch?: Record<string, Array<{
|
|
28
27
|
query: string;
|
|
29
28
|
doc: string;
|
|
30
|
-
}
|
|
31
|
-
analyzeDocumentationNeeds(taskId: string, taskTitle: string, taskDescription: string, stackInfo?: string, streamingOptions?: StreamingOptions, retryConfig?: Partial<RetryConfig>, config?: Partial<AIConfig>, existingResearch?: (TaskDocumentation | undefined)[]
|
|
29
|
+
}>>): Promise<string>;
|
|
30
|
+
analyzeDocumentationNeeds(taskId: string, taskTitle: string, taskDescription: string, stackInfo?: string, streamingOptions?: StreamingOptions, retryConfig?: Partial<RetryConfig>, config?: Partial<AIConfig>, existingResearch?: (TaskDocumentation | undefined)[]): Promise<DocumentationDetection>;
|
|
32
31
|
generateDocumentationRecap(libraries: Array<{
|
|
33
32
|
name: string;
|
|
34
33
|
context7Id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-operations.d.ts","sourceRoot":"","sources":["../../../src/lib/ai-service/ai-operations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKnD;;;GAGG;AACH,qBAAa,YAAa,SAAQ,cAAc;IAC9C,OAAO,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ai-operations.d.ts","sourceRoot":"","sources":["../../../src/lib/ai-service/ai-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,15 +10,9 @@ const documentation_operations_1 = require("./documentation-operations");
|
|
|
10
10
|
* This provides a unified API for all AI operations while keeping the implementation modular.
|
|
11
11
|
*/
|
|
12
12
|
class AIOperations extends base_operations_1.BaseOperations {
|
|
13
|
-
prdOps;
|
|
14
|
-
taskOps;
|
|
15
|
-
docOps;
|
|
16
|
-
constructor(tools) {
|
|
17
|
-
super(tools);
|
|
18
|
-
this.prdOps = new prd_operations_1.PRDOperations(tools);
|
|
19
|
-
this.taskOps = new task_operations_1.TaskOperations(tools);
|
|
20
|
-
this.docOps = new documentation_operations_1.DocumentationOperations(tools);
|
|
21
|
-
}
|
|
13
|
+
prdOps = new prd_operations_1.PRDOperations();
|
|
14
|
+
taskOps = new task_operations_1.TaskOperations();
|
|
15
|
+
docOps = new documentation_operations_1.DocumentationOperations();
|
|
22
16
|
// PRD Operations - Delegated to PRDOperations
|
|
23
17
|
async parsePRD(prdContent, config, promptOverride, userMessage, streamingOptions, retryConfig, workingDirectory, enableFilesystemTools) {
|
|
24
18
|
return this.prdOps.parsePRD(prdContent, config, promptOverride, userMessage, streamingOptions, retryConfig, workingDirectory, enableFilesystemTools);
|
|
@@ -46,11 +40,11 @@ class AIOperations extends base_operations_1.BaseOperations {
|
|
|
46
40
|
return this.prdOps.combinePRDs(prds, originalDescription, config, promptOverride, userMessage, streamingOptions, retryConfig);
|
|
47
41
|
}
|
|
48
42
|
// Documentation Operations - Delegated to DocumentationOperations
|
|
49
|
-
async enhanceTaskWithDocumentation(taskId, taskTitle, taskDescription, stackInfo, streamingOptions, retryConfig, config, existingResearch
|
|
50
|
-
return this.docOps.enhanceTaskWithDocumentation(taskId, taskTitle, taskDescription, stackInfo, streamingOptions, retryConfig, config, existingResearch
|
|
43
|
+
async enhanceTaskWithDocumentation(taskId, taskTitle, taskDescription, stackInfo, streamingOptions, retryConfig, config, existingResearch) {
|
|
44
|
+
return this.docOps.enhanceTaskWithDocumentation(taskId, taskTitle, taskDescription, stackInfo, streamingOptions, retryConfig, config, existingResearch);
|
|
51
45
|
}
|
|
52
|
-
async analyzeDocumentationNeeds(taskId, taskTitle, taskDescription, stackInfo, streamingOptions, retryConfig, config, existingResearch
|
|
53
|
-
return this.docOps.analyzeDocumentationNeeds(taskId, taskTitle, taskDescription, stackInfo, streamingOptions, retryConfig, config, existingResearch
|
|
46
|
+
async analyzeDocumentationNeeds(taskId, taskTitle, taskDescription, stackInfo, streamingOptions, retryConfig, config, existingResearch) {
|
|
47
|
+
return this.docOps.analyzeDocumentationNeeds(taskId, taskTitle, taskDescription, stackInfo, streamingOptions, retryConfig, config, existingResearch);
|
|
54
48
|
}
|
|
55
49
|
async generateDocumentationRecap(libraries, documentContents, streamingOptions, retryConfig) {
|
|
56
50
|
return this.docOps.generateDocumentationRecap(libraries, documentContents, streamingOptions, retryConfig);
|
|
@@ -8,8 +8,6 @@ export declare class BaseOperations {
|
|
|
8
8
|
protected context7Client: Context7Client;
|
|
9
9
|
protected retryHandler: RetryHandler;
|
|
10
10
|
protected modelProvider: ModelProvider;
|
|
11
|
-
protected tools: any;
|
|
12
|
-
constructor(tools?: any);
|
|
13
11
|
/**
|
|
14
12
|
* Merges AI configuration with proper precedence.
|
|
15
13
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-operations.d.ts","sourceRoot":"","sources":["../../../src/lib/ai-service/base-operations.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,cAAc;IACzB,SAAS,CAAC,UAAU,aAAoB;IACxC,SAAS,CAAC,cAAc,iBAAwB;IAChD,SAAS,CAAC,YAAY,eAAsB;IAC5C,SAAS,CAAC,aAAa,gBAAuB;
|
|
1
|
+
{"version":3,"file":"base-operations.d.ts","sourceRoot":"","sources":["../../../src/lib/ai-service/base-operations.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,cAAc;IACzB,SAAS,CAAC,UAAU,aAAoB;IACxC,SAAS,CAAC,cAAc,iBAAwB;IAChD,SAAS,CAAC,YAAY,eAAsB;IAC5C,SAAS,CAAC,aAAa,gBAAuB;IAE9C;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ;IAQ7D;;;;;;OAMG;IACH,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAkB9C,UAAU,CACd,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC;CAgEnB"}
|
|
@@ -11,10 +11,6 @@ class BaseOperations {
|
|
|
11
11
|
context7Client = new mcp_client_1.Context7Client();
|
|
12
12
|
retryHandler = new retry_handler_1.RetryHandler();
|
|
13
13
|
modelProvider = new model_provider_1.ModelProvider();
|
|
14
|
-
tools = {}; // Tools to be injected
|
|
15
|
-
constructor(tools) {
|
|
16
|
-
this.tools = tools || {};
|
|
17
|
-
}
|
|
18
14
|
/**
|
|
19
15
|
* Merges AI configuration with proper precedence.
|
|
20
16
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentation-operations.d.ts","sourceRoot":"","sources":["../../../src/lib/ai-service/documentation-operations.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EAClB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"documentation-operations.d.ts","sourceRoot":"","sources":["../../../src/lib/ai-service/documentation-operations.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,uBAAwB,SAAQ,cAAc;IACnD,4BAA4B,CAChC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAClC,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,EACxE,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CAAC,MAAM,CAAC;IA6JZ,yBAAyB,CAC7B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAClC,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,gBAAgB,CAAC,EAAE,CAAC,iBAAiB,GAAG,SAAS,CAAC,EAAE,EACpD,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CAAC,sBAAsB,CAAC;IAmM5B,0BAA0B,CAC9B,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,EACtE,gBAAgB,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EAC7D,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC;CA8CnB"}
|
|
@@ -5,6 +5,7 @@ const ai_1 = require("ai");
|
|
|
5
5
|
const prompt_builder_1 = require("../prompt-builder");
|
|
6
6
|
const prompts_1 = require("../../prompts");
|
|
7
7
|
const ai_service_factory_1 = require("../../utils/ai-service-factory");
|
|
8
|
+
const filesystem_tools_1 = require("./filesystem-tools");
|
|
8
9
|
const base_operations_1 = require("./base-operations");
|
|
9
10
|
class DocumentationOperations extends base_operations_1.BaseOperations {
|
|
10
11
|
async enhanceTaskWithDocumentation(taskId, taskTitle, taskDescription, stackInfo, streamingOptions, retryConfig, config, existingResearch, enableFilesystemTools) {
|
|
@@ -42,14 +43,14 @@ class DocumentationOperations extends base_operations_1.BaseOperations {
|
|
|
42
43
|
const prompt = promptResult.prompt;
|
|
43
44
|
const allTools = {
|
|
44
45
|
...mcpTools,
|
|
45
|
-
...(enableFilesystemTools ?
|
|
46
|
+
...(enableFilesystemTools ? filesystem_tools_1.filesystemTools : {}),
|
|
46
47
|
};
|
|
47
48
|
const result = await (0, ai_1.streamText)({
|
|
48
49
|
model,
|
|
49
50
|
tools: allTools,
|
|
50
51
|
system: prompts_1.TASK_ENHANCEMENT_SYSTEM_PROMPT +
|
|
51
52
|
`
|
|
52
|
-
|
|
53
|
+
|
|
53
54
|
You have access to Context7 documentation tools${enableFilesystemTools ? " and filesystem tools" : ""}.
|
|
54
55
|
|
|
55
56
|
## Available Tools:
|
|
@@ -106,12 +107,12 @@ ${existingResearchContext}`,
|
|
|
106
107
|
const toolCalls = await result.toolCalls;
|
|
107
108
|
const toolResults = await result.toolResults;
|
|
108
109
|
if (toolCalls.length > 0) {
|
|
109
|
-
console.log("AI made tool calls:", toolCalls.map((tc) => ({ tool: tc
|
|
110
|
+
console.log("AI made tool calls:", toolCalls.map((tc) => ({ tool: tc?.toolName, input: tc?.input })));
|
|
110
111
|
}
|
|
111
112
|
if (toolResults.length > 0) {
|
|
112
113
|
console.log("Tool results received:", toolResults.map((tr) => ({
|
|
113
|
-
tool: tr
|
|
114
|
-
output: tr
|
|
114
|
+
tool: tr?.toolName,
|
|
115
|
+
output: tr?.output,
|
|
115
116
|
})));
|
|
116
117
|
}
|
|
117
118
|
let fullText = "";
|
|
@@ -128,6 +129,7 @@ ${existingResearchContext}`,
|
|
|
128
129
|
});
|
|
129
130
|
}
|
|
130
131
|
async analyzeDocumentationNeeds(taskId, taskTitle, taskDescription, stackInfo, streamingOptions, retryConfig, config, existingResearch, enableFilesystemTools) {
|
|
132
|
+
// @ts-expect-error tool result type discrepency i cant be bothered with (that will probably bite me later...)
|
|
131
133
|
return this.retryHandler
|
|
132
134
|
.executeWithRetry(async () => {
|
|
133
135
|
const mcpTools = await this.context7Client.getMCPTools();
|
|
@@ -161,7 +163,7 @@ ${existingResearchContext}`,
|
|
|
161
163
|
const files = [];
|
|
162
164
|
const allTools = {
|
|
163
165
|
...mcpTools,
|
|
164
|
-
...(enableFilesystemTools ?
|
|
166
|
+
...(enableFilesystemTools ? filesystem_tools_1.filesystemTools : {}),
|
|
165
167
|
};
|
|
166
168
|
const result = await (0, ai_1.streamText)({
|
|
167
169
|
model,
|
|
@@ -263,8 +265,8 @@ ${existingResearchContext}`,
|
|
|
263
265
|
libraries,
|
|
264
266
|
confidence: libraries.length > 0 ? 0.8 : 0.3,
|
|
265
267
|
toolResults: toolResults.map((tr) => ({
|
|
266
|
-
toolName: tr
|
|
267
|
-
output: tr
|
|
268
|
+
toolName: tr?.toolName,
|
|
269
|
+
output: tr?.output,
|
|
268
270
|
})),
|
|
269
271
|
files,
|
|
270
272
|
};
|
|
@@ -1,50 +1,36 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
export declare const readFileTool: import("ai").Tool<{
|
|
2
|
+
filePath: string;
|
|
3
|
+
}, {
|
|
4
|
+
success: boolean;
|
|
5
|
+
content: string;
|
|
6
|
+
path: string;
|
|
7
|
+
size: number;
|
|
8
|
+
error?: undefined;
|
|
9
|
+
} | {
|
|
10
|
+
success: boolean;
|
|
11
|
+
error: string;
|
|
12
|
+
content?: undefined;
|
|
13
|
+
path?: undefined;
|
|
14
|
+
size?: undefined;
|
|
15
|
+
}>;
|
|
16
|
+
export declare const listDirectoryTool: import("ai").Tool<{
|
|
17
|
+
dirPath: string;
|
|
18
|
+
}, {
|
|
19
|
+
success: boolean;
|
|
20
|
+
contents: {
|
|
21
|
+
name: string;
|
|
22
|
+
type: string;
|
|
19
23
|
path: string;
|
|
20
|
-
size: number;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
dirPath: string;
|
|
31
|
-
}, {
|
|
32
|
-
success: boolean;
|
|
33
|
-
contents: {
|
|
34
|
-
name: any;
|
|
35
|
-
type: string;
|
|
36
|
-
path: string;
|
|
37
|
-
size: number | undefined;
|
|
38
|
-
}[];
|
|
39
|
-
directory: string;
|
|
40
|
-
error?: undefined;
|
|
41
|
-
} | {
|
|
42
|
-
success: boolean;
|
|
43
|
-
error: string;
|
|
44
|
-
contents: never[];
|
|
45
|
-
directory?: undefined;
|
|
46
|
-
}>;
|
|
47
|
-
};
|
|
24
|
+
size: number | undefined;
|
|
25
|
+
}[];
|
|
26
|
+
directory: string;
|
|
27
|
+
error?: undefined;
|
|
28
|
+
} | {
|
|
29
|
+
success: boolean;
|
|
30
|
+
error: string;
|
|
31
|
+
contents: never[];
|
|
32
|
+
directory?: undefined;
|
|
33
|
+
}>;
|
|
48
34
|
export declare const filesystemTools: {
|
|
49
35
|
readFile: import("ai").Tool<{
|
|
50
36
|
filePath: string;
|
|
@@ -66,7 +52,7 @@ export declare const filesystemTools: {
|
|
|
66
52
|
}, {
|
|
67
53
|
success: boolean;
|
|
68
54
|
contents: {
|
|
69
|
-
name:
|
|
55
|
+
name: string;
|
|
70
56
|
type: string;
|
|
71
57
|
path: string;
|
|
72
58
|
size: number | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem-tools.d.ts","sourceRoot":"","sources":["../../../src/lib/ai-service/filesystem-tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filesystem-tools.d.ts","sourceRoot":"","sources":["../../../src/lib/ai-service/filesystem-tools.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;EAwBvB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;EAoC5B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG3B,CAAC"}
|