task-o-matic 0.0.14 → 0.0.16

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 (125) hide show
  1. package/dist/cli/display/progress.d.ts +15 -2
  2. package/dist/cli/display/progress.d.ts.map +1 -1
  3. package/dist/cli/display/progress.js +72 -4
  4. package/dist/commands/benchmark.d.ts.map +1 -1
  5. package/dist/commands/benchmark.js +11 -3
  6. package/dist/commands/init.d.ts.map +1 -1
  7. package/dist/commands/init.js +19 -4
  8. package/dist/commands/prd.js +7 -1
  9. package/dist/commands/tasks/delete.d.ts.map +1 -1
  10. package/dist/commands/tasks/delete.js +2 -1
  11. package/dist/commands/tasks/document/add.d.ts.map +1 -1
  12. package/dist/commands/tasks/document/add.js +2 -1
  13. package/dist/commands/tasks/document/get.d.ts.map +1 -1
  14. package/dist/commands/tasks/document/get.js +2 -1
  15. package/dist/commands/tasks/plan/set.d.ts.map +1 -1
  16. package/dist/commands/tasks/plan/set.js +11 -3
  17. package/dist/commands/tasks/show.d.ts.map +1 -1
  18. package/dist/commands/tasks/show.js +2 -1
  19. package/dist/commands/tasks/status.d.ts.map +1 -1
  20. package/dist/commands/tasks/status.js +2 -1
  21. package/dist/commands/tasks/update.d.ts.map +1 -1
  22. package/dist/commands/tasks/update.js +7 -1
  23. package/dist/commands/workflow.d.ts.map +1 -1
  24. package/dist/commands/workflow.js +15 -2
  25. package/dist/lib/ai-service/base-operations.d.ts +8 -0
  26. package/dist/lib/ai-service/base-operations.d.ts.map +1 -1
  27. package/dist/lib/ai-service/base-operations.js +23 -10
  28. package/dist/lib/ai-service/model-provider.d.ts.map +1 -1
  29. package/dist/lib/ai-service/model-provider.js +37 -6
  30. package/dist/lib/ai-service/prd-operations.d.ts.map +1 -1
  31. package/dist/lib/ai-service/prd-operations.js +50 -7
  32. package/dist/lib/ai-service/task-operations.d.ts +1 -0
  33. package/dist/lib/ai-service/task-operations.d.ts.map +1 -1
  34. package/dist/lib/ai-service/task-operations.js +158 -171
  35. package/dist/lib/benchmark/registry.d.ts.map +1 -1
  36. package/dist/lib/benchmark/registry.js +6 -10
  37. package/dist/lib/config-validation.d.ts +215 -0
  38. package/dist/lib/config-validation.d.ts.map +1 -0
  39. package/dist/lib/config-validation.js +246 -0
  40. package/dist/lib/config.d.ts.map +1 -1
  41. package/dist/lib/config.js +30 -7
  42. package/dist/lib/index.d.ts +1 -1
  43. package/dist/lib/index.d.ts.map +1 -1
  44. package/dist/lib/index.js +2 -1
  45. package/dist/lib/storage/file-system.d.ts.map +1 -1
  46. package/dist/lib/storage/file-system.js +81 -21
  47. package/dist/lib/task-execution-core.d.ts.map +1 -1
  48. package/dist/lib/task-execution-core.js +3 -2
  49. package/dist/services/prd.d.ts +17 -0
  50. package/dist/services/prd.d.ts.map +1 -1
  51. package/dist/services/prd.js +69 -84
  52. package/dist/services/tasks.d.ts +315 -1
  53. package/dist/services/tasks.d.ts.map +1 -1
  54. package/dist/services/tasks.js +486 -121
  55. package/dist/services/workflow-ai-assistant.d.ts.map +1 -1
  56. package/dist/services/workflow-ai-assistant.js +19 -6
  57. package/dist/services/workflow.d.ts.map +1 -1
  58. package/dist/services/workflow.js +7 -1
  59. package/dist/test/lib/ai-service/task-operations.test.d.ts +2 -0
  60. package/dist/test/lib/ai-service/task-operations.test.d.ts.map +1 -0
  61. package/dist/test/lib/ai-service/task-operations.test.js +362 -0
  62. package/dist/test/mocks/mock-ai-operations.d.ts +15 -0
  63. package/dist/test/mocks/mock-ai-operations.d.ts.map +1 -0
  64. package/dist/test/mocks/mock-ai-operations.js +107 -0
  65. package/dist/test/mocks/mock-context-builder.d.ts +10 -0
  66. package/dist/test/mocks/mock-context-builder.d.ts.map +1 -0
  67. package/dist/test/mocks/mock-context-builder.js +81 -0
  68. package/dist/test/mocks/mock-model-provider.d.ts +7 -0
  69. package/dist/test/mocks/mock-model-provider.d.ts.map +1 -0
  70. package/dist/test/mocks/mock-model-provider.js +21 -0
  71. package/dist/test/mocks/mock-service-factory.d.ts +11 -0
  72. package/dist/test/mocks/mock-service-factory.d.ts.map +1 -0
  73. package/dist/test/mocks/mock-service-factory.js +61 -0
  74. package/dist/test/mocks/mock-storage.d.ts +50 -0
  75. package/dist/test/mocks/mock-storage.d.ts.map +1 -0
  76. package/dist/test/mocks/mock-storage.js +145 -0
  77. package/dist/test/services/task-service.test.d.ts +2 -0
  78. package/dist/test/services/task-service.test.d.ts.map +1 -0
  79. package/dist/test/services/task-service.test.js +459 -0
  80. package/dist/test/test-mock-setup.d.ts +26 -0
  81. package/dist/test/test-mock-setup.d.ts.map +1 -0
  82. package/dist/test/test-mock-setup.js +41 -0
  83. package/dist/test/test-setup.d.ts +9 -0
  84. package/dist/test/test-setup.d.ts.map +1 -0
  85. package/dist/test/test-setup.js +44 -0
  86. package/dist/test/test-utils.d.ts +22 -0
  87. package/dist/test/test-utils.d.ts.map +1 -0
  88. package/dist/test/test-utils.js +37 -0
  89. package/dist/test/utils/ai-operation-utility.test.d.ts +2 -0
  90. package/dist/test/utils/ai-operation-utility.test.d.ts.map +1 -0
  91. package/dist/test/utils/ai-operation-utility.test.js +290 -0
  92. package/dist/test/utils/error-handling.test.d.ts +2 -0
  93. package/dist/test/utils/error-handling.test.d.ts.map +1 -0
  94. package/dist/test/utils/error-handling.test.js +231 -0
  95. package/dist/utils/ai-operation-utility.d.ts +142 -0
  96. package/dist/utils/ai-operation-utility.d.ts.map +1 -0
  97. package/dist/utils/ai-operation-utility.js +279 -0
  98. package/dist/utils/ai-service-factory.d.ts +10 -0
  99. package/dist/utils/ai-service-factory.d.ts.map +1 -1
  100. package/dist/utils/ai-service-factory.js +19 -1
  101. package/dist/utils/cli-validators.d.ts +2 -2
  102. package/dist/utils/cli-validators.d.ts.map +1 -1
  103. package/dist/utils/cli-validators.js +7 -6
  104. package/dist/utils/error-utils.d.ts +3 -3
  105. package/dist/utils/error-utils.d.ts.map +1 -1
  106. package/dist/utils/error-utils.js +5 -4
  107. package/dist/utils/file-utils.d.ts +27 -4
  108. package/dist/utils/file-utils.d.ts.map +1 -1
  109. package/dist/utils/file-utils.js +46 -6
  110. package/dist/utils/id-generator.d.ts +1 -1
  111. package/dist/utils/id-generator.d.ts.map +1 -1
  112. package/dist/utils/id-generator.js +8 -2
  113. package/dist/utils/metadata-utils.d.ts +40 -0
  114. package/dist/utils/metadata-utils.d.ts.map +1 -0
  115. package/dist/utils/metadata-utils.js +43 -0
  116. package/dist/utils/model-executor-parser.d.ts +1 -1
  117. package/dist/utils/model-executor-parser.d.ts.map +1 -1
  118. package/dist/utils/model-executor-parser.js +3 -2
  119. package/dist/utils/storage-utils.d.ts +3 -3
  120. package/dist/utils/storage-utils.d.ts.map +1 -1
  121. package/dist/utils/storage-utils.js +7 -6
  122. package/dist/utils/task-o-matic-error.d.ts +206 -0
  123. package/dist/utils/task-o-matic-error.d.ts.map +1 -0
  124. package/dist/utils/task-o-matic-error.js +304 -0
  125. package/package.json +7 -2
@@ -1 +1 @@
1
- {"version":3,"file":"prd-operations.d.ts","sourceRoot":"","sources":["../../../src/lib/ai-service/prd-operations.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EAER,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EAIZ,MAAM,aAAa,CAAC;AAYrB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,aAAc,SAAQ,cAAc;IACzC,QAAQ,CACZ,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAClC,gBAAgB,CAAC,EAAE,MAAM,EACzB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAyKtB,SAAS,CACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAClC,gBAAgB,CAAC,EAAE,MAAM,EACzB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CAAC,MAAM,CAAC;IAuGZ,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAClC,gBAAgB,CAAC,EAAE,MAAM,EACzB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC;IAyGd,kBAAkB,CACtB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,WAAW,CAAC,EAAE;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,EACD,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA6E5B,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC;IAqBZ,WAAW,CACf,IAAI,EAAE,MAAM,EAAE,EACd,mBAAmB,EAAE,MAAM,EAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC;CA0BnB"}
1
+ {"version":3,"file":"prd-operations.d.ts","sourceRoot":"","sources":["../../../src/lib/ai-service/prd-operations.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EAER,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EAIZ,MAAM,aAAa,CAAC;AAYrB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMnD,qBAAa,aAAc,SAAQ,cAAc;IACzC,QAAQ,CACZ,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAClC,gBAAgB,CAAC,EAAE,MAAM,EACzB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IA2LtB,SAAS,CACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAClC,gBAAgB,CAAC,EAAE,MAAM,EACzB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CAAC,MAAM,CAAC;IA+GZ,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAClC,gBAAgB,CAAC,EAAE,MAAM,EACzB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC;IA2Hd,kBAAkB,CACtB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,WAAW,CAAC,EAAE;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,EACD,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA6F5B,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC;IAqBZ,WAAW,CACf,IAAI,EAAE,MAAM,EAAE,EACd,mBAAmB,EAAE,MAAM,EAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC;CA0BnB"}
@@ -39,6 +39,7 @@ const prompt_builder_1 = require("../prompt-builder");
39
39
  const prompts_1 = require("../../prompts");
40
40
  const filesystem_tools_1 = require("./filesystem-tools");
41
41
  const base_operations_1 = require("./base-operations");
42
+ const task_o_matic_error_1 = require("../../utils/task-o-matic-error");
42
43
  class PRDOperations extends base_operations_1.BaseOperations {
43
44
  async parsePRD(prdContent, config, promptOverride, userMessage, streamingOptions, retryConfig, workingDirectory, enableFilesystemTools) {
44
45
  return this.retryHandler.executeWithRetry(async () => {
@@ -69,7 +70,13 @@ class PRDOperations extends base_operations_1.BaseOperations {
69
70
  variables,
70
71
  });
71
72
  if (!promptResult.success) {
72
- throw new Error(`Failed to build PRD parsing prompt: ${promptResult.error}`);
73
+ throw (0, task_o_matic_error_1.createStandardError)(task_o_matic_error_1.TaskOMaticErrorCodes.PRD_PARSING_ERROR, `Failed to build PRD parsing prompt: ${promptResult.error}`, {
74
+ context: "Prompt building failed during PRD parsing",
75
+ suggestions: [
76
+ "Verify prompt template exists",
77
+ "Check variable substitution",
78
+ ],
79
+ });
73
80
  }
74
81
  enhancedPrompt = promptResult.prompt;
75
82
  }
@@ -125,7 +132,13 @@ Use these tools to understand the project structure, existing code patterns, and
125
132
  }
126
133
  const parseResult = this.jsonParser.parseJSONFromResponse(response);
127
134
  if (!parseResult.success) {
128
- throw new Error(parseResult.error || "Failed to parse PRD response");
135
+ throw (0, task_o_matic_error_1.createStandardError)(task_o_matic_error_1.TaskOMaticErrorCodes.PRD_PARSING_ERROR, parseResult.error || "Failed to parse PRD response", {
136
+ context: "AI response parsing failed during PRD parsing",
137
+ suggestions: [
138
+ "Check AI response format",
139
+ "Verify JSON structure",
140
+ ],
141
+ });
129
142
  }
130
143
  const parsed = parseResult.data;
131
144
  const tasks = (parsed?.tasks || []).map((task, index) => {
@@ -195,7 +208,13 @@ Use these tools to understand the project structure, existing code patterns, and
195
208
  variables,
196
209
  });
197
210
  if (!promptResult.success) {
198
- throw new Error(`Failed to build PRD rework prompt: ${promptResult.error}`);
211
+ throw (0, task_o_matic_error_1.createStandardError)(task_o_matic_error_1.TaskOMaticErrorCodes.PRD_GENERATION_ERROR, `Failed to build PRD rework prompt: ${promptResult.error}`, {
212
+ context: "Prompt building failed during PRD rework",
213
+ suggestions: [
214
+ "Verify prompt template exists",
215
+ "Check variable substitution",
216
+ ],
217
+ });
199
218
  }
200
219
  prompt = promptResult.prompt;
201
220
  }
@@ -277,7 +296,13 @@ Use these tools to understand the current project structure, existing code patte
277
296
  variables,
278
297
  });
279
298
  if (!promptResult.success) {
280
- throw new Error(`Failed to build PRD question prompt: ${promptResult.error}`);
299
+ throw (0, task_o_matic_error_1.createStandardError)(task_o_matic_error_1.TaskOMaticErrorCodes.PRD_GENERATION_ERROR, `Failed to build PRD question prompt: ${promptResult.error}`, {
300
+ context: "Prompt building failed during PRD question generation",
301
+ suggestions: [
302
+ "Verify prompt template exists",
303
+ "Check variable substitution",
304
+ ],
305
+ });
281
306
  }
282
307
  prompt = promptResult.prompt;
283
308
  }
@@ -324,7 +349,13 @@ Use these tools to understand the current project structure, existing code patte
324
349
  }
325
350
  const parseResult = this.jsonParser.parseJSONFromResponse(response);
326
351
  if (!parseResult.success) {
327
- throw new Error(parseResult.error || "Failed to parse PRD questions");
352
+ throw (0, task_o_matic_error_1.createStandardError)(task_o_matic_error_1.TaskOMaticErrorCodes.PRD_GENERATION_ERROR, parseResult.error || "Failed to parse PRD questions", {
353
+ context: "AI response parsing failed during PRD question generation",
354
+ suggestions: [
355
+ "Check AI response format",
356
+ "Verify JSON structure",
357
+ ],
358
+ });
328
359
  }
329
360
  return parseResult.data?.questions || [];
330
361
  }, retryConfig, "PRD questioning");
@@ -351,7 +382,13 @@ Use these tools to understand the current project structure, existing code patte
351
382
  },
352
383
  });
353
384
  if (!promptResult.success) {
354
- throw new Error(`Failed to build PRD question answer prompt: ${promptResult.error}`);
385
+ throw (0, task_o_matic_error_1.createStandardError)(task_o_matic_error_1.TaskOMaticErrorCodes.PRD_GENERATION_ERROR, `Failed to build PRD question answer prompt: ${promptResult.error}`, {
386
+ context: "Prompt building failed during PRD answer generation",
387
+ suggestions: [
388
+ "Verify prompt template exists",
389
+ "Check variable substitution",
390
+ ],
391
+ });
355
392
  }
356
393
  const systemPromptResult = prompt_builder_1.PromptBuilder.buildPrompt({
357
394
  name: "prd-question-answer",
@@ -361,7 +398,13 @@ Use these tools to understand the current project structure, existing code patte
361
398
  const response = await this.streamText("", config, systemPromptResult.prompt, promptResult.prompt, streamingOptions, { maxAttempts: 1 });
362
399
  const parseResult = this.jsonParser.parseJSONFromResponse(response);
363
400
  if (!parseResult.success) {
364
- throw new Error(parseResult.error || "Failed to parse PRD answers response");
401
+ throw (0, task_o_matic_error_1.createStandardError)(task_o_matic_error_1.TaskOMaticErrorCodes.PRD_GENERATION_ERROR, parseResult.error || "Failed to parse PRD answers response", {
402
+ context: "AI response parsing failed during PRD answer generation",
403
+ suggestions: [
404
+ "Check AI response format",
405
+ "Verify JSON structure",
406
+ ],
407
+ });
365
408
  }
366
409
  const answers = {};
367
410
  const numberedAnswers = parseResult.data?.answers || {};
@@ -1,6 +1,7 @@
1
1
  import { AIConfig, Task, StreamingOptions, RetryConfig } from "../../types";
2
2
  import { BaseOperations } from "./base-operations";
3
3
  export declare class TaskOperations extends BaseOperations {
4
+ private aiOperationUtility;
4
5
  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<{
5
6
  title: string;
6
7
  content: string;
@@ -1 +1 @@
1
- {"version":3,"file":"task-operations.d.ts","sourceRoot":"","sources":["../../../src/lib/ai-service/task-operations.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,gBAAgB,EAChB,WAAW,EAEZ,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,cAAe,SAAQ,cAAc;IAC1C,aAAa,CACjB,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAClC,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,IAAI,EAAE,EACzB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CACR,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CACpE;IAgIK,WAAW,CACf,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC;IAyEZ,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC;CA6EnB"}
1
+ {"version":3,"file":"task-operations.d.ts","sourceRoot":"","sources":["../../../src/lib/ai-service/task-operations.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,gBAAgB,EAChB,WAAW,EAEZ,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOnD,qBAAa,cAAe,SAAQ,cAAc;IAChD,OAAO,CAAC,kBAAkB,CAA4B;IAChD,aAAa,CACjB,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAClC,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,IAAI,EAAE,EACzB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CACR,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CACpE;IAmHK,WAAW,CACf,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC;IA4FZ,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC;CAoEnB"}
@@ -1,98 +1,78 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TaskOperations = void 0;
4
- const ai_1 = require("ai");
5
4
  const prompt_builder_1 = require("../prompt-builder");
6
5
  const stack_formatter_1 = require("../../utils/stack-formatter");
7
6
  const prompts_1 = require("../../prompts");
8
7
  const ai_service_factory_1 = require("../../utils/ai-service-factory");
9
8
  const filesystem_tools_1 = require("./filesystem-tools");
10
9
  const base_operations_1 = require("./base-operations");
10
+ const ai_operation_utility_1 = require("../../utils/ai-operation-utility");
11
+ const task_o_matic_error_1 = require("../../utils/task-o-matic-error");
11
12
  class TaskOperations extends base_operations_1.BaseOperations {
13
+ aiOperationUtility = new ai_operation_utility_1.AIOperationUtility();
12
14
  async breakdownTask(task, config, promptOverride, userMessage, streamingOptions, retryConfig, fullContent, stackInfo, existingSubtasks, enableFilesystemTools) {
13
- return this.retryHandler.executeWithRetry(async () => {
14
- let prompt;
15
- if (promptOverride) {
16
- prompt = promptOverride;
15
+ // Build prompt
16
+ let prompt;
17
+ if (promptOverride) {
18
+ prompt = promptOverride;
19
+ }
20
+ else {
21
+ const variables = {
22
+ TASK_TITLE: task.title,
23
+ TASK_DESCRIPTION: task.description || "No description",
24
+ };
25
+ if (fullContent) {
26
+ variables.TASK_CONTENT = fullContent;
17
27
  }
18
- else {
19
- const variables = {
20
- TASK_TITLE: task.title,
21
- TASK_DESCRIPTION: task.description || "No description",
22
- };
23
- if (fullContent) {
24
- variables.TASK_CONTENT = fullContent;
25
- }
26
- if (existingSubtasks && existingSubtasks.length > 0) {
27
- const existingSubtasksText = existingSubtasks
28
- .map((subtask, index) => `${index + 1}. ${subtask.title}: ${subtask.description || "No description"}`)
29
- .join("\n");
30
- variables.EXISTING_SUBTASKS = existingSubtasksText;
31
- }
32
- if (stackInfo) {
33
- variables.STACK_INFO = stackInfo;
34
- }
35
- const promptResult = prompt_builder_1.PromptBuilder.buildPrompt({
36
- name: "task-breakdown",
37
- type: "user",
38
- variables,
39
- });
40
- if (!promptResult.success) {
41
- throw new Error(`Failed to build task breakdown prompt: ${promptResult.error}`);
42
- }
43
- prompt = promptResult.prompt;
28
+ if (existingSubtasks && existingSubtasks.length > 0) {
29
+ const existingSubtasksText = existingSubtasks
30
+ .map((subtask, index) => `${index + 1}. ${subtask.title}: ${subtask.description || "No description"}`)
31
+ .join("\n");
32
+ variables.EXISTING_SUBTASKS = existingSubtasksText;
44
33
  }
45
- let response;
46
- if (enableFilesystemTools) {
47
- const model = this.modelProvider.getModel({
48
- ...this.modelProvider.getAIConfig(),
49
- ...config,
34
+ if (stackInfo) {
35
+ variables.STACK_INFO = stackInfo;
36
+ }
37
+ const promptResult = prompt_builder_1.PromptBuilder.buildPrompt({
38
+ name: "task-breakdown",
39
+ type: "user",
40
+ variables,
41
+ });
42
+ if (!promptResult.success) {
43
+ throw (0, task_o_matic_error_1.createStandardError)(task_o_matic_error_1.TaskOMaticErrorCodes.AI_OPERATION_FAILED, `Failed to build task breakdown prompt: ${promptResult.error}`, {
44
+ context: "Prompt building failed during task breakdown operation",
45
+ suggestions: [
46
+ "Verify prompt template exists",
47
+ "Check variable substitution",
48
+ ],
50
49
  });
51
- const allTools = {
52
- ...filesystem_tools_1.filesystemTools,
53
- };
54
- const result = await (0, ai_1.streamText)({
55
- model,
56
- tools: allTools,
57
- system: prompts_1.TASK_BREAKDOWN_SYSTEM_PROMPT +
58
- `
50
+ }
51
+ prompt = promptResult.prompt;
52
+ }
53
+ // Execute AI operation with proper error handling
54
+ const result = await this.aiOperationUtility.executeAIOperation("Task breakdown", async () => {
55
+ // Prepare tools if filesystem tools are enabled
56
+ const tools = enableFilesystemTools ? filesystem_tools_1.filesystemTools : undefined;
57
+ const response = await this.aiOperationUtility.streamTextWithTools(prompts_1.TASK_BREAKDOWN_SYSTEM_PROMPT +
58
+ (enableFilesystemTools
59
+ ? `
59
60
 
60
61
  You have access to filesystem tools that allow you to:
61
62
  - readFile: Read the contents of any file in the project
62
63
  - listDirectory: List contents of directories
63
64
 
64
- Use these tools to understand the project structure, existing code, and dependencies when breaking down tasks into subtasks.`,
65
- messages: [{ role: "user", content: userMessage || prompt }],
66
- maxRetries: 0,
67
- onChunk: streamingOptions?.onChunk
68
- ? ({ chunk }) => {
69
- if (chunk.type === "text-delta") {
70
- streamingOptions.onChunk(chunk.text);
71
- }
72
- else if (chunk.type === "reasoning-delta") {
73
- streamingOptions.onReasoning?.(chunk.text);
74
- }
75
- }
76
- : undefined,
77
- onFinish: streamingOptions?.onFinish
78
- ? ({ text, finishReason, usage }) => {
79
- streamingOptions.onFinish({
80
- text,
81
- finishReason,
82
- usage,
83
- isAborted: false,
84
- });
85
- }
86
- : undefined,
87
- });
88
- response = await result.text;
89
- }
90
- else {
91
- response = await this.streamText("", config, prompts_1.TASK_BREAKDOWN_SYSTEM_PROMPT, userMessage || prompt, streamingOptions, { maxAttempts: 1 });
92
- }
65
+ Use these tools to understand the project structure, existing code, and dependencies when breaking down tasks into subtasks.`
66
+ : ""), userMessage || prompt, config, streamingOptions, tools);
93
67
  const parseResult = this.jsonParser.parseJSONFromResponse(response);
94
68
  if (!parseResult.success) {
95
- throw new Error(parseResult.error || "Failed to parse task breakdown response");
69
+ throw (0, task_o_matic_error_1.createStandardError)(task_o_matic_error_1.TaskOMaticErrorCodes.AI_OPERATION_FAILED, parseResult.error || "Failed to parse task breakdown response", {
70
+ context: "AI response parsing failed during task breakdown",
71
+ suggestions: [
72
+ "Check AI response format",
73
+ "Verify JSON structure",
74
+ ],
75
+ });
96
76
  }
97
77
  const parsed = parseResult.data;
98
78
  return (parsed?.subtasks || []).map((subtask) => ({
@@ -100,126 +80,133 @@ Use these tools to understand the project structure, existing code, and dependen
100
80
  content: subtask.description || "",
101
81
  estimatedEffort: subtask.effort,
102
82
  }));
103
- }, retryConfig, "Task breakdown");
83
+ }, {
84
+ streamingOptions,
85
+ retryConfig,
86
+ aiConfig: config,
87
+ maxRetries: retryConfig?.maxAttempts || 2,
88
+ });
89
+ // Return the result directly (errors are thrown, not returned)
90
+ return result.result;
104
91
  }
105
92
  async enhanceTask(title, description, config, promptOverride, userMessage, taskId, streamingOptions, retryConfig) {
106
- return this.retryHandler.executeWithRetry(async () => {
107
- let contextInfo = "";
108
- let prdContent = "";
109
- if (taskId) {
110
- const contextBuilder = (0, ai_service_factory_1.getContextBuilder)();
111
- try {
112
- const context = await contextBuilder.buildContext(taskId);
113
- if (context.documentation || context.stack || context.prdContent) {
114
- contextInfo = "\n\nAvailable Context:\n";
115
- if (context.stack) {
116
- contextInfo += (0, stack_formatter_1.formatStackForContext)(context.stack) + "\n";
117
- }
118
- if (context.documentation) {
119
- contextInfo += `Documentation Available: ${context.documentation.recap}\n`;
120
- if (context.documentation.files.length > 0) {
121
- contextInfo += `Documentation Files: ${context.documentation.files
122
- .map((f) => f.path)
123
- .join(", ")}\n`;
124
- }
125
- }
126
- if (context.prdContent) {
127
- prdContent = context.prdContent;
93
+ // Build context
94
+ let contextInfo = "";
95
+ let prdContent = "";
96
+ if (taskId) {
97
+ const contextBuilder = (0, ai_service_factory_1.getContextBuilder)();
98
+ try {
99
+ const context = await contextBuilder.buildContext(taskId);
100
+ if (context.documentation || context.stack || context.prdContent) {
101
+ contextInfo = "\n\nAvailable Context:\n";
102
+ if (context.stack) {
103
+ contextInfo += (0, stack_formatter_1.formatStackForContext)(context.stack) + "\n";
104
+ }
105
+ if (context.documentation) {
106
+ contextInfo += `Documentation Available: ${context.documentation.recap}\n`;
107
+ if (context.documentation.files.length > 0) {
108
+ contextInfo += `Documentation Files: ${context.documentation.files
109
+ .map((f) => f.path)
110
+ .join(", ")}\n`;
128
111
  }
129
112
  }
130
- }
131
- catch (error) {
132
- throw error;
113
+ if (context.prdContent) {
114
+ prdContent = context.prdContent;
115
+ }
133
116
  }
134
117
  }
135
- let prompt;
136
- if (promptOverride) {
137
- prompt = promptOverride;
118
+ catch (error) {
119
+ throw error;
138
120
  }
139
- else {
140
- const promptResult = prompt_builder_1.PromptBuilder.buildPrompt({
141
- name: "task-enhancement",
142
- type: "user",
143
- variables: {
144
- TASK_TITLE: title,
145
- TASK_DESCRIPTION: description || "None",
146
- CONTEXT_INFO: contextInfo,
147
- PRD_CONTENT: prdContent || "No PRD content available",
148
- },
121
+ }
122
+ // Build prompt
123
+ let prompt;
124
+ if (promptOverride) {
125
+ prompt = promptOverride;
126
+ }
127
+ else {
128
+ const promptResult = prompt_builder_1.PromptBuilder.buildPrompt({
129
+ name: "task-enhancement",
130
+ type: "user",
131
+ variables: {
132
+ TASK_TITLE: title,
133
+ TASK_DESCRIPTION: description || "None",
134
+ CONTEXT_INFO: contextInfo,
135
+ PRD_CONTENT: prdContent || "No PRD content available",
136
+ },
137
+ });
138
+ if (!promptResult.success) {
139
+ throw (0, task_o_matic_error_1.createStandardError)(task_o_matic_error_1.TaskOMaticErrorCodes.AI_OPERATION_FAILED, `Failed to build task enhancement prompt: ${promptResult.error}`, {
140
+ context: "Prompt building failed during task enhancement operation",
141
+ suggestions: [
142
+ "Verify prompt template exists",
143
+ "Check variable substitution",
144
+ ],
149
145
  });
150
- if (!promptResult.success) {
151
- throw new Error(`Failed to build task enhancement prompt: ${promptResult.error}`);
152
- }
153
- prompt = promptResult.prompt;
154
146
  }
155
- return this.streamText("", config, prompts_1.TASK_ENHANCEMENT_SYSTEM_PROMPT, userMessage || prompt, streamingOptions, { maxAttempts: 1 });
156
- }, retryConfig, "Task enhancement");
147
+ prompt = promptResult.prompt;
148
+ }
149
+ // Execute AI operation with proper error handling
150
+ const result = await this.aiOperationUtility.executeAIOperation("Task enhancement", async () => {
151
+ return await this.aiOperationUtility.streamText("", config, prompts_1.TASK_ENHANCEMENT_SYSTEM_PROMPT, userMessage || prompt, streamingOptions, { maxAttempts: 1 });
152
+ }, {
153
+ streamingOptions,
154
+ retryConfig,
155
+ aiConfig: config,
156
+ maxRetries: retryConfig?.maxAttempts || 2,
157
+ });
158
+ // Return the result directly (errors are thrown, not returned)
159
+ return result.result;
157
160
  }
158
161
  async planTask(taskContext, taskDetails, config, promptOverride, userMessage, streamingOptions, retryConfig) {
159
- return this.retryHandler.executeWithRetry(async () => {
160
- let prompt;
161
- if (promptOverride) {
162
- prompt = promptOverride;
163
- }
164
- else {
165
- const promptResult = prompt_builder_1.PromptBuilder.buildPrompt({
166
- name: "task-planning",
167
- type: "user",
168
- variables: {
169
- TASK_CONTEXT: taskContext,
170
- TASK_DETAILS: taskDetails,
171
- },
162
+ // Build prompt
163
+ let prompt;
164
+ if (promptOverride) {
165
+ prompt = promptOverride;
166
+ }
167
+ else {
168
+ const promptResult = prompt_builder_1.PromptBuilder.buildPrompt({
169
+ name: "task-planning",
170
+ type: "user",
171
+ variables: {
172
+ TASK_CONTEXT: taskContext,
173
+ TASK_DETAILS: taskDetails,
174
+ },
175
+ });
176
+ if (!promptResult.success) {
177
+ throw (0, task_o_matic_error_1.createStandardError)(task_o_matic_error_1.TaskOMaticErrorCodes.AI_OPERATION_FAILED, `Failed to build task planning prompt: ${promptResult.error}`, {
178
+ context: "Prompt building failed during task planning operation",
179
+ suggestions: [
180
+ "Verify prompt template exists",
181
+ "Check variable substitution",
182
+ ],
172
183
  });
173
- if (!promptResult.success) {
174
- throw new Error(`Failed to build task planning prompt: ${promptResult.error}`);
175
- }
176
- prompt = promptResult.prompt;
177
184
  }
178
- const model = this.modelProvider.getModel({
179
- ...this.modelProvider.getAIConfig(),
180
- ...config,
181
- });
185
+ prompt = promptResult.prompt;
186
+ }
187
+ // Execute AI operation with proper error handling
188
+ const result = await this.aiOperationUtility.executeAIOperation("Task planning", async () => {
182
189
  const mcpTools = await this.context7Client.getMCPTools();
183
190
  const allTools = {
184
191
  ...mcpTools,
185
192
  ...filesystem_tools_1.filesystemTools,
186
193
  };
187
- const result = (0, ai_1.streamText)({
188
- model,
189
- tools: allTools,
190
- system: prompts_1.TASK_PLANNING_SYSTEM_PROMPT +
191
- `
194
+ return await this.aiOperationUtility.streamTextWithTools(prompts_1.TASK_PLANNING_SYSTEM_PROMPT +
195
+ `
192
196
 
193
197
  You have access to filesystem tools that allow you to:
194
198
  - readFile: Read the contents of any file in the project
195
199
  - listDirectory: List contents of directories
196
200
 
197
- Use these tools to understand the project structure, existing code, and dependencies when creating implementation plans.`,
198
- messages: [{ role: "user", content: userMessage || prompt }],
199
- maxRetries: 0,
200
- onChunk: streamingOptions?.onChunk
201
- ? ({ chunk }) => {
202
- if (chunk.type === "text-delta") {
203
- streamingOptions.onChunk(chunk.text);
204
- }
205
- else if (chunk.type === "reasoning-delta") {
206
- streamingOptions.onReasoning?.(chunk.text);
207
- }
208
- }
209
- : undefined,
210
- onFinish: streamingOptions?.onFinish
211
- ? ({ text, finishReason, usage }) => {
212
- streamingOptions.onFinish({
213
- text,
214
- finishReason,
215
- usage,
216
- isAborted: false,
217
- });
218
- }
219
- : undefined,
220
- });
221
- return (await result).text;
222
- }, retryConfig, "Task planning");
201
+ Use these tools to understand the project structure, existing code, and dependencies when creating implementation plans.`, userMessage || prompt, config, streamingOptions, allTools);
202
+ }, {
203
+ streamingOptions,
204
+ retryConfig,
205
+ aiConfig: config,
206
+ maxRetries: retryConfig?.maxAttempts || 2,
207
+ });
208
+ // Return the result directly (errors are thrown, not returned)
209
+ return result.result;
223
210
  }
224
211
  }
225
212
  exports.TaskOperations = TaskOperations;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/lib/benchmark/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAA0B,MAAM,SAAS,CAAC;AAOzE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAkD;;IAMpE,QAAQ,CAAC,EAAE,EAAE,sBAAsB;IAInC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAInD,IAAI,IAAI,sBAAsB,EAAE;IAIhC,OAAO,CAAC,gBAAgB;CA2RzB;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/lib/benchmark/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAA0B,MAAM,SAAS,CAAC;AAOzE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAkD;;IAMpE,QAAQ,CAAC,EAAE,EAAE,sBAAsB;IAInC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAInD,IAAI,IAAI,sBAAsB,EAAE;IAIhC,OAAO,CAAC,gBAAgB;CAsRzB;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.benchmarkRegistry = exports.BenchmarkRegistry = void 0;
4
4
  const prd_1 = require("../../services/prd");
5
- const tasks_1 = require("../../services/tasks"); // We'll need to instantiate this or use a singleton if available
5
+ const tasks_1 = require("../../services/tasks");
6
6
  const workflow_benchmark_1 = require("../../services/workflow-benchmark");
7
7
  class BenchmarkRegistry {
8
8
  operations = new Map();
@@ -59,17 +59,13 @@ class BenchmarkRegistry {
59
59
  },
60
60
  });
61
61
  // Task Breakdown Adapter
62
- // Note: TaskService is a class, we need an instance.
63
- // In a real app we should use dependency injection or a singleton.
64
- // For now, we'll create a new instance or assume one is available.
65
- const taskService = new tasks_1.TaskService();
66
62
  this.register({
67
63
  id: "task-breakdown",
68
64
  name: "Task Breakdown",
69
65
  description: "Break down a task into subtasks",
70
66
  validateInput: (input) => typeof input.taskId === "string",
71
67
  execute: async (input, aiOptions, streamingOptions) => {
72
- return await taskService.splitTask(input.taskId, aiOptions, input.prompt, input.message, streamingOptions, // streaming options
68
+ return await tasks_1.taskService.splitTask(input.taskId, aiOptions, input.prompt, input.message, streamingOptions, // streaming options
73
69
  input.tools);
74
70
  },
75
71
  });
@@ -90,7 +86,7 @@ class BenchmarkRegistry {
90
86
  description: "Create a new task with AI enhancement using Context7 documentation",
91
87
  validateInput: (input) => typeof input.title === "string" && input.title.length > 0,
92
88
  execute: async (input, aiOptions, streamingOptions) => {
93
- return await taskService.createTask({
89
+ return await tasks_1.taskService.createTask({
94
90
  title: input.title,
95
91
  content: input.content,
96
92
  parentId: input.parentId,
@@ -108,7 +104,7 @@ class BenchmarkRegistry {
108
104
  description: "Enhance an existing task with AI using Context7 documentation",
109
105
  validateInput: (input) => typeof input.taskId === "string",
110
106
  execute: async (input, aiOptions, streamingOptions) => {
111
- return await taskService.enhanceTask(input.taskId, aiOptions, streamingOptions);
107
+ return await tasks_1.taskService.enhanceTask(input.taskId, aiOptions, streamingOptions);
112
108
  },
113
109
  });
114
110
  // Task Planning
@@ -118,7 +114,7 @@ class BenchmarkRegistry {
118
114
  description: "Create a detailed implementation plan for a task",
119
115
  validateInput: (input) => typeof input.taskId === "string",
120
116
  execute: async (input, aiOptions, streamingOptions) => {
121
- return await taskService.planTask(input.taskId, aiOptions, streamingOptions);
117
+ return await tasks_1.taskService.planTask(input.taskId, aiOptions, streamingOptions);
122
118
  },
123
119
  });
124
120
  // Task Documentation
@@ -128,7 +124,7 @@ class BenchmarkRegistry {
128
124
  description: "Analyze and generate documentation for a task",
129
125
  validateInput: (input) => typeof input.taskId === "string",
130
126
  execute: async (input, aiOptions, streamingOptions) => {
131
- return await taskService.documentTask(input.taskId, input.force || false, aiOptions, streamingOptions);
127
+ return await tasks_1.taskService.documentTask(input.taskId, input.force || false, aiOptions, streamingOptions);
132
128
  },
133
129
  });
134
130
  // PRD Creation