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.
Files changed (54) hide show
  1. package/dist/cli/display/task.d.ts +28 -2
  2. package/dist/cli/display/task.d.ts.map +1 -1
  3. package/dist/cli/display/task.js +27 -21
  4. package/dist/commands/tasks/show.d.ts.map +1 -1
  5. package/dist/commands/tasks/show.js +21 -1
  6. package/dist/commands/tasks/tree.d.ts.map +1 -1
  7. package/dist/commands/tasks/tree.js +21 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +3 -0
  10. package/dist/lib/ai-service/ai-operations.d.ts +2 -3
  11. package/dist/lib/ai-service/ai-operations.d.ts.map +1 -1
  12. package/dist/lib/ai-service/ai-operations.js +7 -13
  13. package/dist/lib/ai-service/base-operations.d.ts +0 -2
  14. package/dist/lib/ai-service/base-operations.d.ts.map +1 -1
  15. package/dist/lib/ai-service/base-operations.js +0 -4
  16. package/dist/lib/ai-service/documentation-operations.d.ts.map +1 -1
  17. package/dist/lib/ai-service/documentation-operations.js +10 -8
  18. package/dist/lib/ai-service/filesystem-tools.d.ts +33 -47
  19. package/dist/lib/ai-service/filesystem-tools.d.ts.map +1 -1
  20. package/dist/lib/ai-service/filesystem-tools.js +61 -109
  21. package/dist/lib/ai-service/model-provider.d.ts +4 -0
  22. package/dist/lib/ai-service/model-provider.d.ts.map +1 -1
  23. package/dist/lib/ai-service/model-provider.js +21 -5
  24. package/dist/lib/ai-service/prd-operations.d.ts.map +1 -1
  25. package/dist/lib/ai-service/prd-operations.js +9 -7
  26. package/dist/lib/ai-service/task-operations.d.ts +1 -1
  27. package/dist/lib/ai-service/task-operations.d.ts.map +1 -1
  28. package/dist/lib/ai-service/task-operations.js +7 -8
  29. package/dist/lib/config.d.ts +8 -0
  30. package/dist/lib/config.d.ts.map +1 -1
  31. package/dist/lib/config.js +59 -23
  32. package/dist/lib/git-utils.d.ts.map +1 -1
  33. package/dist/lib/git-utils.js +12 -15
  34. package/dist/lib/hooks/logger.d.ts.map +1 -1
  35. package/dist/lib/hooks/logger.js +16 -0
  36. package/dist/lib/hooks.d.ts +10 -1
  37. package/dist/lib/hooks.d.ts.map +1 -1
  38. package/dist/lib/logger.d.ts +20 -0
  39. package/dist/lib/logger.d.ts.map +1 -0
  40. package/dist/lib/logger.js +32 -0
  41. package/dist/lib/provider-defaults.json +22 -0
  42. package/dist/lib/task-execution-core.d.ts.map +1 -1
  43. package/dist/lib/task-execution-core.js +29 -33
  44. package/dist/lib/task-planning.d.ts.map +1 -1
  45. package/dist/lib/task-planning.js +9 -9
  46. package/dist/lib/task-review.d.ts.map +1 -1
  47. package/dist/lib/task-review.js +10 -13
  48. package/dist/lib/validation.d.ts.map +1 -1
  49. package/dist/lib/validation.js +12 -15
  50. package/dist/test/lib/ai-service/task-operations.test.js +0 -4
  51. package/dist/utils/ai-service-factory.d.ts +0 -8
  52. package/dist/utils/ai-service-factory.d.ts.map +1 -1
  53. package/dist/utils/ai-service-factory.js +3 -9
  54. 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
- export declare function displayTaskDetails(task: Task): Promise<void>;
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
- export declare function displayTaskTree(tasks: Task[], rootId?: string): Promise<void>;
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":"AAEA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGnD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FlE;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,CAwBlE;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA6Df"}
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"}
@@ -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
- async function displayTaskDetails(task) {
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 (task.contentFile) {
45
- const fullContent = await tasks_1.taskService.getTaskContent(task.id);
46
- if (fullContent) {
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 subtaskAiMetadata = await tasks_1.taskService.getTaskAIMetadata(subtask.id);
97
- if (subtaskAiMetadata?.aiGenerated) {
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" ? chalk_1.default.green :
189
- task.status === "in-progress" ? chalk_1.default.yellow :
190
- chalk_1.default.gray;
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
- async function displayTaskTree(tasks, rootId) {
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 = async (task, indent = "", isLast = false) => {
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 = await tasks_1.taskService.getSubtasks(task.id);
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
- await displayTaskWithIndent(subtasks[i], subtaskIndent, isLastSubtask);
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
- await displayTaskWithIndent(rootTask, "", true);
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
- await displayTaskWithIndent(topLevelTasks[i], "", isLast);
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,SAgBpB,CAAC"}
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
- await (0, task_1.displayTaskDetails)(task);
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;AAKpC,eAAO,MAAM,WAAW,SAcpB,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
- await (0, task_1.displayTaskTree)(tasks, options.id);
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);
@@ -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;AAWpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA+C9B;;;GAGG;AACH,eAAO,MAAM,MAAM,qBAalB,CAAC;AAEF;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,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
- }>>, enableFilesystemTools?: boolean): Promise<string>;
31
- analyzeDocumentationNeeds(taskId: string, taskTitle: string, taskDescription: string, stackInfo?: string, streamingOptions?: StreamingOptions, retryConfig?: Partial<RetryConfig>, config?: Partial<AIConfig>, existingResearch?: (TaskDocumentation | undefined)[], enableFilesystemTools?: boolean): Promise<DocumentationDetection>;
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":"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"}
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, enableFilesystemTools) {
50
- return this.docOps.enhanceTaskWithDocumentation(taskId, taskTitle, taskDescription, stackInfo, streamingOptions, retryConfig, config, existingResearch, enableFilesystemTools);
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, enableFilesystemTools) {
53
- return this.docOps.analyzeDocumentationNeeds(taskId, taskTitle, taskDescription, stackInfo, streamingOptions, retryConfig, config, existingResearch, enableFilesystemTools);
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;IAC9C,SAAS,CAAC,KAAK,EAAE,GAAG,CAAM;gBAEd,KAAK,CAAC,EAAE,GAAG;IAIvB;;;;;;;;;;;;;;;;;;;;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"}
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;AAIrB,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;IAkM5B,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"}
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 ? this.tools : {}),
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.toolName, input: tc.input })));
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.toolName,
114
- output: tr.output,
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 ? this.tools : {}),
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.toolName,
267
- output: tr.output,
268
+ toolName: tr?.toolName,
269
+ output: tr?.output,
268
270
  })),
269
271
  files,
270
272
  };
@@ -1,50 +1,36 @@
1
- export interface FileSystem {
2
- readFile(path: string, encoding: string): Promise<string>;
3
- readdir(path: string, options?: {
4
- withFileTypes?: boolean;
5
- }): Promise<any[]>;
6
- stat(path: string): Promise<{
7
- size: number;
8
- isDirectory(): boolean;
9
- isFile(): boolean;
10
- }>;
11
- }
12
- export declare const nodeFileSystem: FileSystem;
13
- export declare const createFilesystemTools: (fs?: FileSystem) => {
14
- readFile: import("ai").Tool<{
15
- filePath: string;
16
- }, {
17
- success: boolean;
18
- content: string;
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
- error?: undefined;
22
- } | {
23
- success: boolean;
24
- error: string;
25
- content?: undefined;
26
- path?: undefined;
27
- size?: undefined;
28
- }>;
29
- listDirectory: import("ai").Tool<{
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: any;
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":"AAMA,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7E,IAAI,CACF,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,IAAI,OAAO,CAAC;QAAC,MAAM,IAAI,OAAO,CAAA;KAAE,CAAC,CAAC;CACzE;AAGD,eAAO,MAAM,cAAc,EAAE,UAO5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,KAAI,UAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyGpE,CAAC;AAGF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAwC,CAAC"}
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"}