task-o-matic-core 0.1.0

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 (447) hide show
  1. package/README.md +646 -0
  2. package/dist/index.d.ts +27 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +46 -0
  5. package/dist/lib/ai-service/ai-operations.d.ts +45 -0
  6. package/dist/lib/ai-service/ai-operations.d.ts.map +1 -0
  7. package/dist/lib/ai-service/ai-operations.js +60 -0
  8. package/dist/lib/ai-service/base-operations.d.ts +43 -0
  9. package/dist/lib/ai-service/base-operations.d.ts.map +1 -0
  10. package/dist/lib/ai-service/base-operations.js +119 -0
  11. package/dist/lib/ai-service/documentation-operations.d.ts +18 -0
  12. package/dist/lib/ai-service/documentation-operations.d.ts.map +1 -0
  13. package/dist/lib/ai-service/documentation-operations.js +308 -0
  14. package/dist/lib/ai-service/filesystem-tools.d.ts +69 -0
  15. package/dist/lib/ai-service/filesystem-tools.d.ts.map +1 -0
  16. package/dist/lib/ai-service/filesystem-tools.js +70 -0
  17. package/dist/lib/ai-service/json-parser.d.ts +34 -0
  18. package/dist/lib/ai-service/json-parser.d.ts.map +1 -0
  19. package/dist/lib/ai-service/json-parser.js +177 -0
  20. package/dist/lib/ai-service/mcp-client.d.ts +9 -0
  21. package/dist/lib/ai-service/mcp-client.d.ts.map +1 -0
  22. package/dist/lib/ai-service/mcp-client.js +48 -0
  23. package/dist/lib/ai-service/model-provider.d.ts +12 -0
  24. package/dist/lib/ai-service/model-provider.d.ts.map +1 -0
  25. package/dist/lib/ai-service/model-provider.js +146 -0
  26. package/dist/lib/ai-service/prd-operations.d.ts +25 -0
  27. package/dist/lib/ai-service/prd-operations.d.ts.map +1 -0
  28. package/dist/lib/ai-service/prd-operations.js +592 -0
  29. package/dist/lib/ai-service/research-tools.d.ts +4 -0
  30. package/dist/lib/ai-service/research-tools.d.ts.map +1 -0
  31. package/dist/lib/ai-service/research-tools.js +8 -0
  32. package/dist/lib/ai-service/retry-handler.d.ts +8 -0
  33. package/dist/lib/ai-service/retry-handler.d.ts.map +1 -0
  34. package/dist/lib/ai-service/retry-handler.js +63 -0
  35. package/dist/lib/ai-service/task-operations.d.ts +13 -0
  36. package/dist/lib/ai-service/task-operations.d.ts.map +1 -0
  37. package/dist/lib/ai-service/task-operations.js +220 -0
  38. package/dist/lib/benchmark/registry.d.ts +11 -0
  39. package/dist/lib/benchmark/registry.d.ts.map +1 -0
  40. package/dist/lib/benchmark/registry.js +212 -0
  41. package/dist/lib/benchmark/runner.d.ts +6 -0
  42. package/dist/lib/benchmark/runner.d.ts.map +1 -0
  43. package/dist/lib/benchmark/runner.js +150 -0
  44. package/dist/lib/benchmark/storage.d.ts +13 -0
  45. package/dist/lib/benchmark/storage.d.ts.map +1 -0
  46. package/dist/lib/benchmark/storage.js +100 -0
  47. package/dist/lib/benchmark/types.d.ts +104 -0
  48. package/dist/lib/benchmark/types.d.ts.map +1 -0
  49. package/dist/lib/benchmark/types.js +2 -0
  50. package/dist/lib/better-t-stack-cli.d.ts +50 -0
  51. package/dist/lib/better-t-stack-cli.d.ts.map +1 -0
  52. package/dist/lib/better-t-stack-cli.js +428 -0
  53. package/dist/lib/bootstrap/cli-bootstrap.d.ts +14 -0
  54. package/dist/lib/bootstrap/cli-bootstrap.d.ts.map +1 -0
  55. package/dist/lib/bootstrap/cli-bootstrap.js +322 -0
  56. package/dist/lib/bootstrap/index.d.ts +3 -0
  57. package/dist/lib/bootstrap/index.d.ts.map +1 -0
  58. package/dist/lib/bootstrap/index.js +18 -0
  59. package/dist/lib/bootstrap/medusa-bootstrap.d.ts +14 -0
  60. package/dist/lib/bootstrap/medusa-bootstrap.d.ts.map +1 -0
  61. package/dist/lib/bootstrap/medusa-bootstrap.js +215 -0
  62. package/dist/lib/config-validation.d.ts +215 -0
  63. package/dist/lib/config-validation.d.ts.map +1 -0
  64. package/dist/lib/config-validation.js +254 -0
  65. package/dist/lib/config.d.ts +55 -0
  66. package/dist/lib/config.d.ts.map +1 -0
  67. package/dist/lib/config.js +351 -0
  68. package/dist/lib/context-builder.d.ts +66 -0
  69. package/dist/lib/context-builder.d.ts.map +1 -0
  70. package/dist/lib/context-builder.js +322 -0
  71. package/dist/lib/executors/claude-code-executor.d.ts +9 -0
  72. package/dist/lib/executors/claude-code-executor.d.ts.map +1 -0
  73. package/dist/lib/executors/claude-code-executor.js +69 -0
  74. package/dist/lib/executors/codex-executor.d.ts +9 -0
  75. package/dist/lib/executors/codex-executor.d.ts.map +1 -0
  76. package/dist/lib/executors/codex-executor.js +73 -0
  77. package/dist/lib/executors/executor-factory.d.ts +5 -0
  78. package/dist/lib/executors/executor-factory.d.ts.map +1 -0
  79. package/dist/lib/executors/executor-factory.js +27 -0
  80. package/dist/lib/executors/gemini-executor.d.ts +9 -0
  81. package/dist/lib/executors/gemini-executor.d.ts.map +1 -0
  82. package/dist/lib/executors/gemini-executor.js +67 -0
  83. package/dist/lib/executors/kilo-executor.d.ts +9 -0
  84. package/dist/lib/executors/kilo-executor.d.ts.map +1 -0
  85. package/dist/lib/executors/kilo-executor.js +69 -0
  86. package/dist/lib/executors/opencode-executor.d.ts +9 -0
  87. package/dist/lib/executors/opencode-executor.d.ts.map +1 -0
  88. package/dist/lib/executors/opencode-executor.js +67 -0
  89. package/dist/lib/git-utils.d.ts +88 -0
  90. package/dist/lib/git-utils.d.ts.map +1 -0
  91. package/dist/lib/git-utils.js +242 -0
  92. package/dist/lib/hooks.d.ts +73 -0
  93. package/dist/lib/hooks.d.ts.map +1 -0
  94. package/dist/lib/hooks.js +62 -0
  95. package/dist/lib/index.d.ts +100 -0
  96. package/dist/lib/index.d.ts.map +1 -0
  97. package/dist/lib/index.js +143 -0
  98. package/dist/lib/logger.d.ts +20 -0
  99. package/dist/lib/logger.d.ts.map +1 -0
  100. package/dist/lib/logger.js +32 -0
  101. package/dist/lib/notifications.d.ts +7 -0
  102. package/dist/lib/notifications.d.ts.map +1 -0
  103. package/dist/lib/notifications.js +81 -0
  104. package/dist/lib/prompt-builder.d.ts +70 -0
  105. package/dist/lib/prompt-builder.d.ts.map +1 -0
  106. package/dist/lib/prompt-builder.js +344 -0
  107. package/dist/lib/prompt-registry.d.ts +22 -0
  108. package/dist/lib/prompt-registry.d.ts.map +1 -0
  109. package/dist/lib/prompt-registry.js +409 -0
  110. package/dist/lib/provider-defaults.json +32 -0
  111. package/dist/lib/storage/file-system.d.ts +57 -0
  112. package/dist/lib/storage/file-system.d.ts.map +1 -0
  113. package/dist/lib/storage/file-system.js +638 -0
  114. package/dist/lib/storage/storage-callbacks.d.ts +17 -0
  115. package/dist/lib/storage/storage-callbacks.d.ts.map +1 -0
  116. package/dist/lib/storage/storage-callbacks.js +94 -0
  117. package/dist/lib/storage/types.d.ts +43 -0
  118. package/dist/lib/storage/types.d.ts.map +1 -0
  119. package/dist/lib/storage/types.js +2 -0
  120. package/dist/lib/task-execution-core.d.ts +7 -0
  121. package/dist/lib/task-execution-core.d.ts.map +1 -0
  122. package/dist/lib/task-execution-core.js +381 -0
  123. package/dist/lib/task-execution.d.ts +7 -0
  124. package/dist/lib/task-execution.d.ts.map +1 -0
  125. package/dist/lib/task-execution.js +40 -0
  126. package/dist/lib/task-loop-execution.d.ts +7 -0
  127. package/dist/lib/task-loop-execution.d.ts.map +1 -0
  128. package/dist/lib/task-loop-execution.js +156 -0
  129. package/dist/lib/task-planning.d.ts +29 -0
  130. package/dist/lib/task-planning.d.ts.map +1 -0
  131. package/dist/lib/task-planning.js +103 -0
  132. package/dist/lib/task-review.d.ts +27 -0
  133. package/dist/lib/task-review.d.ts.map +1 -0
  134. package/dist/lib/task-review.js +103 -0
  135. package/dist/lib/validation.d.ts +26 -0
  136. package/dist/lib/validation.d.ts.map +1 -0
  137. package/dist/lib/validation.js +98 -0
  138. package/dist/prompts/documentation-detection.d.ts +2 -0
  139. package/dist/prompts/documentation-detection.d.ts.map +1 -0
  140. package/dist/prompts/documentation-detection.js +24 -0
  141. package/dist/prompts/documentation-recap.d.ts +3 -0
  142. package/dist/prompts/documentation-recap.d.ts.map +1 -0
  143. package/dist/prompts/documentation-recap.js +13 -0
  144. package/dist/prompts/index.d.ts +15 -0
  145. package/dist/prompts/index.d.ts.map +1 -0
  146. package/dist/prompts/index.js +30 -0
  147. package/dist/prompts/prd-combination.d.ts +2 -0
  148. package/dist/prompts/prd-combination.d.ts.map +1 -0
  149. package/dist/prompts/prd-combination.js +35 -0
  150. package/dist/prompts/prd-generation.d.ts +2 -0
  151. package/dist/prompts/prd-generation.d.ts.map +1 -0
  152. package/dist/prompts/prd-generation.js +49 -0
  153. package/dist/prompts/prd-parsing.d.ts +3 -0
  154. package/dist/prompts/prd-parsing.d.ts.map +1 -0
  155. package/dist/prompts/prd-parsing.js +172 -0
  156. package/dist/prompts/prd-question-answer.d.ts +3 -0
  157. package/dist/prompts/prd-question-answer.d.ts.map +1 -0
  158. package/dist/prompts/prd-question-answer.js +27 -0
  159. package/dist/prompts/prd-question.d.ts +3 -0
  160. package/dist/prompts/prd-question.d.ts.map +1 -0
  161. package/dist/prompts/prd-question.js +40 -0
  162. package/dist/prompts/prd-rework.d.ts +3 -0
  163. package/dist/prompts/prd-rework.d.ts.map +1 -0
  164. package/dist/prompts/prd-rework.js +81 -0
  165. package/dist/prompts/prd-suggest-stack.d.ts +3 -0
  166. package/dist/prompts/prd-suggest-stack.d.ts.map +1 -0
  167. package/dist/prompts/prd-suggest-stack.js +99 -0
  168. package/dist/prompts/task-breakdown.d.ts +3 -0
  169. package/dist/prompts/task-breakdown.d.ts.map +1 -0
  170. package/dist/prompts/task-breakdown.js +151 -0
  171. package/dist/prompts/task-enhancement.d.ts +3 -0
  172. package/dist/prompts/task-enhancement.d.ts.map +1 -0
  173. package/dist/prompts/task-enhancement.js +140 -0
  174. package/dist/prompts/task-execution.d.ts +3 -0
  175. package/dist/prompts/task-execution.d.ts.map +1 -0
  176. package/dist/prompts/task-execution.js +24 -0
  177. package/dist/prompts/task-planning.d.ts +3 -0
  178. package/dist/prompts/task-planning.d.ts.map +1 -0
  179. package/dist/prompts/task-planning.js +66 -0
  180. package/dist/prompts/workflow-assistance.d.ts +32 -0
  181. package/dist/prompts/workflow-assistance.d.ts.map +1 -0
  182. package/dist/prompts/workflow-assistance.js +130 -0
  183. package/dist/prompts/workflow-prompts.d.ts +9 -0
  184. package/dist/prompts/workflow-prompts.d.ts.map +1 -0
  185. package/dist/prompts/workflow-prompts.js +93 -0
  186. package/dist/services/benchmark.d.ts +26 -0
  187. package/dist/services/benchmark.d.ts.map +1 -0
  188. package/dist/services/benchmark.js +343 -0
  189. package/dist/services/prd.d.ts +136 -0
  190. package/dist/services/prd.d.ts.map +1 -0
  191. package/dist/services/prd.js +550 -0
  192. package/dist/services/tasks.d.ts +388 -0
  193. package/dist/services/tasks.d.ts.map +1 -0
  194. package/dist/services/tasks.js +1150 -0
  195. package/dist/services/workflow-ai-assistant.d.ts +74 -0
  196. package/dist/services/workflow-ai-assistant.d.ts.map +1 -0
  197. package/dist/services/workflow-ai-assistant.js +175 -0
  198. package/dist/services/workflow-benchmark.d.ts +34 -0
  199. package/dist/services/workflow-benchmark.d.ts.map +1 -0
  200. package/dist/services/workflow-benchmark.js +318 -0
  201. package/dist/services/workflow.d.ts +107 -0
  202. package/dist/services/workflow.d.ts.map +1 -0
  203. package/dist/services/workflow.js +580 -0
  204. package/dist/test/hooks.test.d.ts +2 -0
  205. package/dist/test/hooks.test.d.ts.map +1 -0
  206. package/dist/test/hooks.test.js +67 -0
  207. package/dist/test/integration/callbacks.test.d.ts +2 -0
  208. package/dist/test/integration/callbacks.test.d.ts.map +1 -0
  209. package/dist/test/integration/callbacks.test.js +64 -0
  210. package/dist/test/lib/ai-service/task-operations.test.d.ts +2 -0
  211. package/dist/test/lib/ai-service/task-operations.test.d.ts.map +1 -0
  212. package/dist/test/lib/ai-service/task-operations.test.js +362 -0
  213. package/dist/test/lib/config.test.d.ts +2 -0
  214. package/dist/test/lib/config.test.d.ts.map +1 -0
  215. package/dist/test/lib/config.test.js +128 -0
  216. package/dist/test/lib/git-utils.test.d.ts +2 -0
  217. package/dist/test/lib/git-utils.test.d.ts.map +1 -0
  218. package/dist/test/lib/git-utils.test.js +168 -0
  219. package/dist/test/mocks/mock-ai-operations.d.ts +15 -0
  220. package/dist/test/mocks/mock-ai-operations.d.ts.map +1 -0
  221. package/dist/test/mocks/mock-ai-operations.js +107 -0
  222. package/dist/test/mocks/mock-context-builder.d.ts +10 -0
  223. package/dist/test/mocks/mock-context-builder.d.ts.map +1 -0
  224. package/dist/test/mocks/mock-context-builder.js +81 -0
  225. package/dist/test/mocks/mock-model-provider.d.ts +7 -0
  226. package/dist/test/mocks/mock-model-provider.d.ts.map +1 -0
  227. package/dist/test/mocks/mock-model-provider.js +21 -0
  228. package/dist/test/mocks/mock-service-factory.d.ts +11 -0
  229. package/dist/test/mocks/mock-service-factory.d.ts.map +1 -0
  230. package/dist/test/mocks/mock-service-factory.js +61 -0
  231. package/dist/test/mocks/mock-storage.d.ts +50 -0
  232. package/dist/test/mocks/mock-storage.d.ts.map +1 -0
  233. package/dist/test/mocks/mock-storage.js +145 -0
  234. package/dist/test/model-parsing.test.d.ts +2 -0
  235. package/dist/test/model-parsing.test.d.ts.map +1 -0
  236. package/dist/test/model-parsing.test.js +73 -0
  237. package/dist/test/services/task-service.test.d.ts +2 -0
  238. package/dist/test/services/task-service.test.d.ts.map +1 -0
  239. package/dist/test/services/task-service.test.js +459 -0
  240. package/dist/test/storage.test.d.ts +2 -0
  241. package/dist/test/storage.test.d.ts.map +1 -0
  242. package/dist/test/storage.test.js +207 -0
  243. package/dist/test/task-loop-git.test.d.ts +2 -0
  244. package/dist/test/task-loop-git.test.d.ts.map +1 -0
  245. package/dist/test/task-loop-git.test.js +95 -0
  246. package/dist/test/test-mock-setup.d.ts +26 -0
  247. package/dist/test/test-mock-setup.d.ts.map +1 -0
  248. package/dist/test/test-mock-setup.js +41 -0
  249. package/dist/test/test-setup.d.ts +9 -0
  250. package/dist/test/test-setup.d.ts.map +1 -0
  251. package/dist/test/test-setup.js +44 -0
  252. package/dist/test/test-utils.d.ts +22 -0
  253. package/dist/test/test-utils.d.ts.map +1 -0
  254. package/dist/test/test-utils.js +37 -0
  255. package/dist/test/utils/ai-operation-utility.test.d.ts +2 -0
  256. package/dist/test/utils/ai-operation-utility.test.d.ts.map +1 -0
  257. package/dist/test/utils/ai-operation-utility.test.js +290 -0
  258. package/dist/test/utils/error-handling.test.d.ts +2 -0
  259. package/dist/test/utils/error-handling.test.d.ts.map +1 -0
  260. package/dist/test/utils/error-handling.test.js +231 -0
  261. package/dist/test/utils/file-utils.test.d.ts +2 -0
  262. package/dist/test/utils/file-utils.test.d.ts.map +1 -0
  263. package/dist/test/utils/file-utils.test.js +76 -0
  264. package/dist/test/utils/id-generator.test.d.ts +2 -0
  265. package/dist/test/utils/id-generator.test.d.ts.map +1 -0
  266. package/dist/test/utils/id-generator.test.js +41 -0
  267. package/dist/test/utils/model-parser.test.d.ts +2 -0
  268. package/dist/test/utils/model-parser.test.d.ts.map +1 -0
  269. package/dist/test/utils/model-parser.test.js +65 -0
  270. package/dist/test/validation.test.d.ts +2 -0
  271. package/dist/test/validation.test.d.ts.map +1 -0
  272. package/dist/test/validation.test.js +22 -0
  273. package/dist/types/callbacks.d.ts +30 -0
  274. package/dist/types/callbacks.d.ts.map +1 -0
  275. package/dist/types/callbacks.js +2 -0
  276. package/dist/types/index.d.ts +435 -0
  277. package/dist/types/index.d.ts.map +1 -0
  278. package/dist/types/index.js +30 -0
  279. package/dist/types/mcp.d.ts +3 -0
  280. package/dist/types/mcp.d.ts.map +1 -0
  281. package/dist/types/mcp.js +3 -0
  282. package/dist/types/options.d.ts +112 -0
  283. package/dist/types/options.d.ts.map +1 -0
  284. package/dist/types/options.js +2 -0
  285. package/dist/types/results.d.ts +200 -0
  286. package/dist/types/results.d.ts.map +1 -0
  287. package/dist/types/results.js +2 -0
  288. package/dist/types/workflow-options.d.ts +82 -0
  289. package/dist/types/workflow-options.d.ts.map +1 -0
  290. package/dist/types/workflow-options.js +2 -0
  291. package/dist/types/workflow-results.d.ts +82 -0
  292. package/dist/types/workflow-results.d.ts.map +1 -0
  293. package/dist/types/workflow-results.js +2 -0
  294. package/dist/utils/ai-config-builder.d.ts +14 -0
  295. package/dist/utils/ai-config-builder.d.ts.map +1 -0
  296. package/dist/utils/ai-config-builder.js +22 -0
  297. package/dist/utils/ai-operation-utility.d.ts +142 -0
  298. package/dist/utils/ai-operation-utility.d.ts.map +1 -0
  299. package/dist/utils/ai-operation-utility.js +303 -0
  300. package/dist/utils/ai-service-factory.d.ts +34 -0
  301. package/dist/utils/ai-service-factory.d.ts.map +1 -0
  302. package/dist/utils/ai-service-factory.js +99 -0
  303. package/dist/utils/error-utils.d.ts +70 -0
  304. package/dist/utils/error-utils.d.ts.map +1 -0
  305. package/dist/utils/error-utils.js +104 -0
  306. package/dist/utils/file-utils.d.ts +107 -0
  307. package/dist/utils/file-utils.d.ts.map +1 -0
  308. package/dist/utils/file-utils.js +171 -0
  309. package/dist/utils/id-generator.d.ts +92 -0
  310. package/dist/utils/id-generator.d.ts.map +1 -0
  311. package/dist/utils/id-generator.js +146 -0
  312. package/dist/utils/metadata-utils.d.ts +40 -0
  313. package/dist/utils/metadata-utils.d.ts.map +1 -0
  314. package/dist/utils/metadata-utils.js +43 -0
  315. package/dist/utils/model-executor-parser.d.ts +38 -0
  316. package/dist/utils/model-executor-parser.d.ts.map +1 -0
  317. package/dist/utils/model-executor-parser.js +69 -0
  318. package/dist/utils/model-parser.d.ts +6 -0
  319. package/dist/utils/model-parser.d.ts.map +1 -0
  320. package/dist/utils/model-parser.js +49 -0
  321. package/dist/utils/stack-formatter.d.ts +12 -0
  322. package/dist/utils/stack-formatter.d.ts.map +1 -0
  323. package/dist/utils/stack-formatter.js +36 -0
  324. package/dist/utils/storage-utils.d.ts +49 -0
  325. package/dist/utils/storage-utils.d.ts.map +1 -0
  326. package/dist/utils/storage-utils.js +80 -0
  327. package/dist/utils/streaming-utils.d.ts +38 -0
  328. package/dist/utils/streaming-utils.d.ts.map +1 -0
  329. package/dist/utils/streaming-utils.js +64 -0
  330. package/dist/utils/task-o-matic-error.d.ts +206 -0
  331. package/dist/utils/task-o-matic-error.d.ts.map +1 -0
  332. package/dist/utils/task-o-matic-error.js +304 -0
  333. package/package.json +40 -0
  334. package/src/index.ts +36 -0
  335. package/src/lib/ai-service/ai-operations.ts +310 -0
  336. package/src/lib/ai-service/base-operations.ts +139 -0
  337. package/src/lib/ai-service/documentation-operations.ts +438 -0
  338. package/src/lib/ai-service/filesystem-tools.ts +73 -0
  339. package/src/lib/ai-service/gemini-proxy.ts.bak +52 -0
  340. package/src/lib/ai-service/json-parser.ts +203 -0
  341. package/src/lib/ai-service/mcp-client.ts +54 -0
  342. package/src/lib/ai-service/model-provider.ts +192 -0
  343. package/src/lib/ai-service/prd-operations.ts +854 -0
  344. package/src/lib/ai-service/research-tools.ts +207 -0
  345. package/src/lib/ai-service/retry-handler.ts +89 -0
  346. package/src/lib/ai-service/task-operations.ts +342 -0
  347. package/src/lib/benchmark/registry.ts +307 -0
  348. package/src/lib/benchmark/runner.ts +190 -0
  349. package/src/lib/benchmark/storage.ts +140 -0
  350. package/src/lib/benchmark/types.ts +121 -0
  351. package/src/lib/better-t-stack-cli.ts +524 -0
  352. package/src/lib/bootstrap/cli-bootstrap.ts +397 -0
  353. package/src/lib/bootstrap/index.ts +2 -0
  354. package/src/lib/bootstrap/medusa-bootstrap.ts +261 -0
  355. package/src/lib/config-validation.ts +278 -0
  356. package/src/lib/config.ts +435 -0
  357. package/src/lib/context-builder.ts +383 -0
  358. package/src/lib/executors/claude-code-executor.ts +83 -0
  359. package/src/lib/executors/codex-executor.ts +85 -0
  360. package/src/lib/executors/executor-factory.ts +28 -0
  361. package/src/lib/executors/gemini-executor.ts +80 -0
  362. package/src/lib/executors/kilo-executor.ts +83 -0
  363. package/src/lib/executors/opencode-executor.ts +81 -0
  364. package/src/lib/git-utils.ts +334 -0
  365. package/src/lib/hooks.ts +121 -0
  366. package/src/lib/index.ts +166 -0
  367. package/src/lib/logger.ts +43 -0
  368. package/src/lib/notifications.ts +103 -0
  369. package/src/lib/prompt-builder.ts +471 -0
  370. package/src/lib/prompt-registry.ts +491 -0
  371. package/src/lib/provider-defaults.json +32 -0
  372. package/src/lib/storage/file-system.ts +864 -0
  373. package/src/lib/storage/storage-callbacks.ts +120 -0
  374. package/src/lib/storage/types.ts +58 -0
  375. package/src/lib/task-execution-core.ts +591 -0
  376. package/src/lib/task-execution.ts +59 -0
  377. package/src/lib/task-loop-execution.ts +214 -0
  378. package/src/lib/task-planning.ts +157 -0
  379. package/src/lib/task-review.ts +138 -0
  380. package/src/lib/validation.ts +140 -0
  381. package/src/prompts/documentation-detection.ts +21 -0
  382. package/src/prompts/documentation-recap.ts +11 -0
  383. package/src/prompts/index.ts +14 -0
  384. package/src/prompts/prd-combination.ts +32 -0
  385. package/src/prompts/prd-generation.ts +46 -0
  386. package/src/prompts/prd-parsing.ts +170 -0
  387. package/src/prompts/prd-question-answer.ts +25 -0
  388. package/src/prompts/prd-question.ts +38 -0
  389. package/src/prompts/prd-rework.ts +79 -0
  390. package/src/prompts/prd-suggest-stack.ts +97 -0
  391. package/src/prompts/task-breakdown.ts +149 -0
  392. package/src/prompts/task-enhancement.ts +138 -0
  393. package/src/prompts/task-execution.ts +22 -0
  394. package/src/prompts/task-planning.ts +64 -0
  395. package/src/prompts/workflow-assistance.ts +151 -0
  396. package/src/prompts/workflow-prompts.ts +97 -0
  397. package/src/services/benchmark.ts +433 -0
  398. package/src/services/prd.ts +845 -0
  399. package/src/services/tasks.ts +1515 -0
  400. package/src/services/workflow-ai-assistant.ts +298 -0
  401. package/src/services/workflow-benchmark.ts +339 -0
  402. package/src/services/workflow.ts +779 -0
  403. package/src/test/hooks.test.ts +77 -0
  404. package/src/test/integration/callbacks.test.ts +39 -0
  405. package/src/test/lib/ai-service/task-operations.test.ts +430 -0
  406. package/src/test/lib/config.test.ts +150 -0
  407. package/src/test/lib/git-utils.test.ts +198 -0
  408. package/src/test/mocks/mock-ai-operations.ts +205 -0
  409. package/src/test/mocks/mock-context-builder.ts +84 -0
  410. package/src/test/mocks/mock-model-provider.ts +21 -0
  411. package/src/test/mocks/mock-service-factory.ts +64 -0
  412. package/src/test/mocks/mock-storage.ts +204 -0
  413. package/src/test/model-parsing.test.ts +78 -0
  414. package/src/test/services/task-service.test.ts +551 -0
  415. package/src/test/storage.test.ts +206 -0
  416. package/src/test/task-loop-git.test.ts +142 -0
  417. package/src/test/test-mock-setup.ts +46 -0
  418. package/src/test/test-setup.ts +48 -0
  419. package/src/test/test-utils.ts +45 -0
  420. package/src/test/utils/ai-operation-utility.test.ts +306 -0
  421. package/src/test/utils/error-handling.test.ts +241 -0
  422. package/src/test/utils/file-utils.test.ts +80 -0
  423. package/src/test/utils/id-generator.test.ts +44 -0
  424. package/src/test/utils/model-parser.test.ts +67 -0
  425. package/src/test/validation.test.ts +19 -0
  426. package/src/types/callbacks.ts +14 -0
  427. package/src/types/index.ts +628 -0
  428. package/src/types/mcp.ts +5 -0
  429. package/src/types/options.ts +165 -0
  430. package/src/types/results.ts +216 -0
  431. package/src/types/workflow-options.ts +113 -0
  432. package/src/types/workflow-results.ts +87 -0
  433. package/src/utils/ai-config-builder.ts +33 -0
  434. package/src/utils/ai-operation-utility.ts +380 -0
  435. package/src/utils/ai-service-factory.ts +125 -0
  436. package/src/utils/error-utils.ts +124 -0
  437. package/src/utils/file-utils.ts +197 -0
  438. package/src/utils/id-generator.ts +168 -0
  439. package/src/utils/metadata-utils.ts +48 -0
  440. package/src/utils/model-executor-parser.ts +80 -0
  441. package/src/utils/model-parser.ts +58 -0
  442. package/src/utils/stack-formatter.ts +53 -0
  443. package/src/utils/storage-utils.ts +94 -0
  444. package/src/utils/streaming-utils.ts +91 -0
  445. package/src/utils/task-o-matic-error.ts +393 -0
  446. package/tsconfig.json +20 -0
  447. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RetryHandler = void 0;
4
+ const logger_1 = require("../logger");
5
+ class RetryHandler {
6
+ getRetryConfig() {
7
+ return {
8
+ maxAttempts: parseInt(process.env.AI_MAX_RETRY_ATTEMPTS || "3", 10),
9
+ baseDelay: parseInt(process.env.AI_RETRY_BASE_DELAY || "1000", 10),
10
+ maxDelay: parseInt(process.env.AI_RETRY_MAX_DELAY || "10000", 10),
11
+ backoffFactor: parseFloat(process.env.AI_RETRY_BACKOFF_FACTOR || "2"),
12
+ retryableErrors: [
13
+ "ECONNRESET",
14
+ "ENOTFOUND",
15
+ "ECONNREFUSED",
16
+ "ETIMEDOUT",
17
+ "NETWORK_ERROR",
18
+ "RATE_LIMIT",
19
+ "TEMPORARY_FAILURE",
20
+ "INTERNAL_ERROR",
21
+ ],
22
+ };
23
+ }
24
+ shouldRetryError(error, retryableErrors) {
25
+ if (!error)
26
+ return false;
27
+ const errorMessage = error instanceof Error ? error.message : String(error);
28
+ const errorName = error instanceof Error ? error.name : "";
29
+ return retryableErrors.some((retryableError) => errorMessage.toUpperCase().includes(retryableError) ||
30
+ errorName.toUpperCase().includes(retryableError));
31
+ }
32
+ async delay(ms) {
33
+ return new Promise((resolve) => setTimeout(resolve, ms));
34
+ }
35
+ async executeWithRetry(operation, retryConfig, operationName = "AI operation") {
36
+ const finalRetryConfig = { ...this.getRetryConfig(), ...retryConfig };
37
+ const { maxAttempts = 3, baseDelay = 1000, maxDelay = 10000, backoffFactor = 2, retryableErrors = [], } = finalRetryConfig;
38
+ let lastError;
39
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
40
+ try {
41
+ return await operation();
42
+ }
43
+ catch (error) {
44
+ lastError = error;
45
+ // Don't retry on the last attempt
46
+ if (attempt === maxAttempts) {
47
+ break;
48
+ }
49
+ // Check if error is retryable
50
+ if (!this.shouldRetryError(error, retryableErrors)) {
51
+ break;
52
+ }
53
+ // Calculate delay with exponential backoff
54
+ const delayMs = Math.min(baseDelay * Math.pow(backoffFactor, attempt - 1), maxDelay);
55
+ logger_1.logger.warn(`${operationName} failed (attempt ${attempt}/${maxAttempts}), retrying in ${delayMs}ms: ${error}`);
56
+ await this.delay(delayMs);
57
+ }
58
+ }
59
+ // Throw the original error - NO rebuilding bullshit
60
+ throw lastError;
61
+ }
62
+ }
63
+ exports.RetryHandler = RetryHandler;
@@ -0,0 +1,13 @@
1
+ import { AIConfig, Task, StreamingOptions, RetryConfig } from "../../types";
2
+ import { BaseOperations } from "./base-operations";
3
+ export declare class TaskOperations extends BaseOperations {
4
+ private aiOperationUtility;
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<{
6
+ title: string;
7
+ content: string;
8
+ estimatedEffort?: string;
9
+ }>>;
10
+ enhanceTask(title: string, description?: string, config?: Partial<AIConfig>, promptOverride?: string, userMessage?: string, taskId?: string, streamingOptions?: StreamingOptions, retryConfig?: Partial<RetryConfig>): Promise<string>;
11
+ planTask(taskContext: string, taskDetails: string, config?: Partial<AIConfig>, promptOverride?: string, userMessage?: string, streamingOptions?: StreamingOptions, retryConfig?: Partial<RetryConfig>): Promise<string>;
12
+ }
13
+ //# sourceMappingURL=task-operations.d.ts.map
@@ -0,0 +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;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;IA4HK,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"}
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskOperations = void 0;
4
+ const prompt_builder_1 = require("../prompt-builder");
5
+ const stack_formatter_1 = require("../../utils/stack-formatter");
6
+ const prompts_1 = require("../../prompts");
7
+ const ai_service_factory_1 = require("../../utils/ai-service-factory");
8
+ const filesystem_tools_1 = require("./filesystem-tools");
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");
12
+ class TaskOperations extends base_operations_1.BaseOperations {
13
+ aiOperationUtility = new ai_operation_utility_1.AIOperationUtility();
14
+ async breakdownTask(task, config, promptOverride, userMessage, streamingOptions, retryConfig, fullContent, stackInfo, existingSubtasks, enableFilesystemTools) {
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;
27
+ }
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;
33
+ }
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
+ ],
49
+ });
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
+ ? `
60
+
61
+ You have access to filesystem tools that allow you to:
62
+ - readFile: Read the contents of any file in the project
63
+ - listDirectory: List contents of directories
64
+
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);
67
+ const parseResult = this.jsonParser.parseJSONFromResponse(response);
68
+ if (!parseResult.success) {
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
+ });
76
+ }
77
+ const parsed = parseResult.data;
78
+ let subtasksList = [];
79
+ // Handle various output formats (Array, { subtasks: [] }, { tasks: [] })
80
+ if (Array.isArray(parsed)) {
81
+ subtasksList = parsed;
82
+ }
83
+ else if (parsed && typeof parsed === "object") {
84
+ subtasksList = parsed.subtasks || parsed.tasks || [];
85
+ }
86
+ return subtasksList.map((subtask) => ({
87
+ title: subtask.title,
88
+ content: subtask.description || subtask.content || "",
89
+ estimatedEffort: subtask.effort,
90
+ }));
91
+ }, {
92
+ streamingOptions,
93
+ retryConfig,
94
+ aiConfig: config,
95
+ maxRetries: retryConfig?.maxAttempts || 2,
96
+ });
97
+ // Return the result directly (errors are thrown, not returned)
98
+ return result.result;
99
+ }
100
+ async enhanceTask(title, description, config, promptOverride, userMessage, taskId, streamingOptions, retryConfig) {
101
+ // Build context
102
+ let contextInfo = "";
103
+ let prdContent = "";
104
+ if (taskId) {
105
+ const contextBuilder = (0, ai_service_factory_1.getContextBuilder)();
106
+ try {
107
+ const context = await contextBuilder.buildContext(taskId);
108
+ if (context.documentation || context.stack || context.prdContent) {
109
+ contextInfo = "\n\nAvailable Context:\n";
110
+ if (context.stack) {
111
+ contextInfo += (0, stack_formatter_1.formatStackForContext)(context.stack) + "\n";
112
+ }
113
+ if (context.documentation) {
114
+ contextInfo += `Documentation Available: ${context.documentation.recap}\n`;
115
+ if (context.documentation.files.length > 0) {
116
+ contextInfo += `Documentation Files: ${context.documentation.files
117
+ .map((f) => f.path)
118
+ .join(", ")}\n`;
119
+ }
120
+ }
121
+ if (context.prdContent) {
122
+ prdContent = context.prdContent;
123
+ }
124
+ }
125
+ }
126
+ catch (error) {
127
+ throw error;
128
+ }
129
+ }
130
+ // Build prompt
131
+ let prompt;
132
+ if (promptOverride) {
133
+ prompt = promptOverride;
134
+ }
135
+ else {
136
+ const promptResult = prompt_builder_1.PromptBuilder.buildPrompt({
137
+ name: "task-enhancement",
138
+ type: "user",
139
+ variables: {
140
+ TASK_TITLE: title,
141
+ TASK_DESCRIPTION: description || "None",
142
+ CONTEXT_INFO: contextInfo,
143
+ PRD_CONTENT: prdContent || "No PRD content available",
144
+ },
145
+ });
146
+ if (!promptResult.success) {
147
+ 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}`, {
148
+ context: "Prompt building failed during task enhancement operation",
149
+ suggestions: [
150
+ "Verify prompt template exists",
151
+ "Check variable substitution",
152
+ ],
153
+ });
154
+ }
155
+ prompt = promptResult.prompt;
156
+ }
157
+ // Execute AI operation with proper error handling
158
+ const result = await this.aiOperationUtility.executeAIOperation("Task enhancement", async () => {
159
+ return await this.aiOperationUtility.streamText("", config, prompts_1.TASK_ENHANCEMENT_SYSTEM_PROMPT, userMessage || prompt, streamingOptions, { maxAttempts: 1 });
160
+ }, {
161
+ streamingOptions,
162
+ retryConfig,
163
+ aiConfig: config,
164
+ maxRetries: retryConfig?.maxAttempts || 2,
165
+ });
166
+ // Return the result directly (errors are thrown, not returned)
167
+ return result.result;
168
+ }
169
+ async planTask(taskContext, taskDetails, config, promptOverride, userMessage, streamingOptions, retryConfig) {
170
+ // Build prompt
171
+ let prompt;
172
+ if (promptOverride) {
173
+ prompt = promptOverride;
174
+ }
175
+ else {
176
+ const promptResult = prompt_builder_1.PromptBuilder.buildPrompt({
177
+ name: "task-planning",
178
+ type: "user",
179
+ variables: {
180
+ TASK_CONTEXT: taskContext,
181
+ TASK_DETAILS: taskDetails,
182
+ },
183
+ });
184
+ if (!promptResult.success) {
185
+ 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}`, {
186
+ context: "Prompt building failed during task planning operation",
187
+ suggestions: [
188
+ "Verify prompt template exists",
189
+ "Check variable substitution",
190
+ ],
191
+ });
192
+ }
193
+ prompt = promptResult.prompt;
194
+ }
195
+ // Execute AI operation with proper error handling
196
+ const result = await this.aiOperationUtility.executeAIOperation("Task planning", async () => {
197
+ const mcpTools = await this.context7Client.getMCPTools();
198
+ const allTools = {
199
+ ...mcpTools,
200
+ ...filesystem_tools_1.filesystemTools,
201
+ };
202
+ return await this.aiOperationUtility.streamTextWithTools(prompts_1.TASK_PLANNING_SYSTEM_PROMPT +
203
+ `
204
+
205
+ You have access to filesystem tools that allow you to:
206
+ - readFile: Read the contents of any file in the project
207
+ - listDirectory: List contents of directories
208
+
209
+ Use these tools to understand the project structure, existing code, and dependencies when creating implementation plans.`, userMessage || prompt, config, streamingOptions, allTools);
210
+ }, {
211
+ streamingOptions,
212
+ retryConfig,
213
+ aiConfig: config,
214
+ maxRetries: retryConfig?.maxAttempts || 2,
215
+ });
216
+ // Return the result directly (errors are thrown, not returned)
217
+ return result.result;
218
+ }
219
+ }
220
+ exports.TaskOperations = TaskOperations;
@@ -0,0 +1,11 @@
1
+ import { BenchmarkableOperation } from "./types";
2
+ export declare class BenchmarkRegistry {
3
+ private operations;
4
+ constructor();
5
+ register(op: BenchmarkableOperation): void;
6
+ get(id: string): BenchmarkableOperation | undefined;
7
+ list(): BenchmarkableOperation[];
8
+ private registerDefaults;
9
+ }
10
+ export declare const benchmarkRegistry: BenchmarkRegistry;
11
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +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;CAsRzB;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.benchmarkRegistry = exports.BenchmarkRegistry = void 0;
4
+ const prd_1 = require("../../services/prd");
5
+ const tasks_1 = require("../../services/tasks");
6
+ const workflow_benchmark_1 = require("../../services/workflow-benchmark");
7
+ class BenchmarkRegistry {
8
+ operations = new Map();
9
+ constructor() {
10
+ this.registerDefaults();
11
+ }
12
+ register(op) {
13
+ this.operations.set(op.id, op);
14
+ }
15
+ get(id) {
16
+ return this.operations.get(id);
17
+ }
18
+ list() {
19
+ return Array.from(this.operations.values());
20
+ }
21
+ registerDefaults() {
22
+ // PRD Parsing Adapter
23
+ this.register({
24
+ id: "prd-parse",
25
+ name: "PRD Parsing",
26
+ description: "Parse a PRD file into tasks",
27
+ validateInput: (input) => typeof input.file === "string" && input.file.length > 0,
28
+ execute: async (input, aiOptions, streamingOptions) => {
29
+ return await prd_1.prdService.parsePRD({
30
+ file: input.file,
31
+ workingDirectory: input.workingDirectory,
32
+ enableFilesystemTools: input.tools,
33
+ promptOverride: input.prompt,
34
+ messageOverride: input.message,
35
+ aiOptions,
36
+ streamingOptions,
37
+ callbacks: {},
38
+ });
39
+ },
40
+ });
41
+ // PRD Rework Adapter
42
+ this.register({
43
+ id: "prd-rework",
44
+ name: "PRD Rework",
45
+ description: "Rework a PRD based on feedback",
46
+ validateInput: (input) => typeof input.file === "string" && typeof input.feedback === "string",
47
+ execute: async (input, aiOptions, streamingOptions) => {
48
+ return await prd_1.prdService.reworkPRD({
49
+ file: input.file,
50
+ feedback: input.feedback,
51
+ workingDirectory: input.workingDirectory,
52
+ enableFilesystemTools: input.tools,
53
+ promptOverride: input.prompt,
54
+ messageOverride: input.message,
55
+ aiOptions,
56
+ streamingOptions,
57
+ callbacks: {},
58
+ });
59
+ },
60
+ });
61
+ // Task Breakdown Adapter
62
+ this.register({
63
+ id: "task-breakdown",
64
+ name: "Task Breakdown",
65
+ description: "Break down a task into subtasks",
66
+ validateInput: (input) => typeof input.taskId === "string",
67
+ execute: async (input, aiOptions, streamingOptions) => {
68
+ return await tasks_1.taskService.splitTask(input.taskId, aiOptions, input.prompt, input.message, streamingOptions, // streaming options
69
+ input.tools);
70
+ },
71
+ });
72
+ // Workflow Full Execution
73
+ this.register({
74
+ id: "workflow-full",
75
+ name: "Complete Workflow",
76
+ description: "Execute the complete workflow: initialization, PRD creation, task generation, and splitting",
77
+ validateInput: (input) => workflow_benchmark_1.workflowBenchmarkService.validateInput(input),
78
+ execute: async (input, aiOptions, streamingOptions) => {
79
+ return await workflow_benchmark_1.workflowBenchmarkService.executeWorkflow(input, aiOptions, streamingOptions);
80
+ },
81
+ });
82
+ // Task Create with AI Enhancement
83
+ this.register({
84
+ id: "task-create",
85
+ name: "Task Creation (AI-Enhanced)",
86
+ description: "Create a new task with AI enhancement using Context7 documentation",
87
+ validateInput: (input) => typeof input.title === "string" && input.title.length > 0,
88
+ execute: async (input, aiOptions, streamingOptions) => {
89
+ return await tasks_1.taskService.createTask({
90
+ title: input.title,
91
+ content: input.content,
92
+ parentId: input.parentId,
93
+ effort: input.effort,
94
+ aiEnhance: true, // Always use AI enhancement for benchmarking
95
+ aiOptions,
96
+ streamingOptions,
97
+ });
98
+ },
99
+ });
100
+ // Task Enhancement
101
+ this.register({
102
+ id: "task-enhance",
103
+ name: "Task Enhancement",
104
+ description: "Enhance an existing task with AI using Context7 documentation",
105
+ validateInput: (input) => typeof input.taskId === "string",
106
+ execute: async (input, aiOptions, streamingOptions) => {
107
+ return await tasks_1.taskService.enhanceTask(input.taskId, aiOptions, streamingOptions);
108
+ },
109
+ });
110
+ // Task Planning
111
+ this.register({
112
+ id: "task-plan",
113
+ name: "Task Planning",
114
+ description: "Create a detailed implementation plan for a task",
115
+ validateInput: (input) => typeof input.taskId === "string",
116
+ execute: async (input, aiOptions, streamingOptions) => {
117
+ return await tasks_1.taskService.planTask(input.taskId, aiOptions, streamingOptions);
118
+ },
119
+ });
120
+ // Task Documentation
121
+ this.register({
122
+ id: "task-document",
123
+ name: "Task Documentation",
124
+ description: "Analyze and generate documentation for a task",
125
+ validateInput: (input) => typeof input.taskId === "string",
126
+ execute: async (input, aiOptions, streamingOptions) => {
127
+ return await tasks_1.taskService.documentTask(input.taskId, input.force || false, aiOptions, streamingOptions);
128
+ },
129
+ });
130
+ // PRD Creation
131
+ this.register({
132
+ id: "prd-create",
133
+ name: "PRD Creation",
134
+ description: "Generate a Product Requirements Document from a description",
135
+ validateInput: (input) => typeof input.description === "string" && input.description.length > 0,
136
+ execute: async (input, aiOptions, streamingOptions) => {
137
+ return await prd_1.prdService.generatePRD({
138
+ description: input.description,
139
+ outputDir: input.outputDir,
140
+ filename: input.filename,
141
+ aiOptions,
142
+ streamingOptions,
143
+ callbacks: {},
144
+ });
145
+ },
146
+ });
147
+ // PRD Combine
148
+ this.register({
149
+ id: "prd-combine",
150
+ name: "PRD Combination",
151
+ description: "Combine multiple PRD files into a single master PRD",
152
+ validateInput: (input) => Array.isArray(input.prds) &&
153
+ input.prds.length > 0 &&
154
+ typeof input.originalDescription === "string",
155
+ execute: async (input, aiOptions, streamingOptions) => {
156
+ return await prd_1.prdService.combinePRDs({
157
+ prds: input.prds,
158
+ originalDescription: input.originalDescription,
159
+ outputDir: input.outputDir,
160
+ filename: input.filename,
161
+ aiOptions,
162
+ streamingOptions,
163
+ callbacks: {},
164
+ });
165
+ },
166
+ });
167
+ // PRD Question Generation
168
+ this.register({
169
+ id: "prd-question",
170
+ name: "PRD Question Generation",
171
+ description: "Generate clarifying questions for a PRD",
172
+ validateInput: (input) => typeof input.file === "string" && input.file.length > 0,
173
+ execute: async (input, aiOptions, streamingOptions) => {
174
+ return await prd_1.prdService.generateQuestions({
175
+ file: input.file,
176
+ workingDirectory: input.workingDirectory,
177
+ enableFilesystemTools: input.tools,
178
+ promptOverride: input.prompt,
179
+ messageOverride: input.message,
180
+ aiOptions,
181
+ streamingOptions,
182
+ callbacks: {},
183
+ });
184
+ },
185
+ });
186
+ // PRD Refinement
187
+ this.register({
188
+ id: "prd-refine",
189
+ name: "PRD Refinement",
190
+ description: "Refine a PRD by generating questions and incorporating answers",
191
+ validateInput: (input) => typeof input.file === "string" &&
192
+ input.file.length > 0 &&
193
+ typeof input.questionMode === "string" &&
194
+ (input.questionMode === "user" || input.questionMode === "ai"),
195
+ execute: async (input, aiOptions, streamingOptions) => {
196
+ return await prd_1.prdService.refinePRDWithQuestions({
197
+ file: input.file,
198
+ questionMode: input.questionMode,
199
+ answers: input.answers,
200
+ questionAIOptions: input.questionAIOptions,
201
+ workingDirectory: input.workingDirectory,
202
+ enableFilesystemTools: input.tools,
203
+ aiOptions,
204
+ streamingOptions,
205
+ callbacks: {},
206
+ });
207
+ },
208
+ });
209
+ }
210
+ }
211
+ exports.BenchmarkRegistry = BenchmarkRegistry;
212
+ exports.benchmarkRegistry = new BenchmarkRegistry();
@@ -0,0 +1,6 @@
1
+ import { BenchmarkConfig, BenchmarkRun, BenchmarkProgressEvent } from "./types";
2
+ export declare class BenchmarkRunner {
3
+ run(operationId: string, input: any, config: BenchmarkConfig, onProgress?: (event: BenchmarkProgressEvent) => void): Promise<BenchmarkRun>;
4
+ }
5
+ export declare const benchmarkRunner: BenchmarkRunner;
6
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/lib/benchmark/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,YAAY,EACZ,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAMjB,qBAAa,eAAe;IACpB,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,eAAe,EACvB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,GACnD,OAAO,CAAC,YAAY,CAAC;CA0KzB;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}