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,91 @@
1
+ import { StreamingOptions } from "../types/index.js";
2
+
3
+ /**
4
+ * Token usage metrics from AI operations
5
+ */
6
+ export interface TokenUsage {
7
+ prompt: number;
8
+ completion: number;
9
+ total: number;
10
+ }
11
+
12
+ export interface MetricsTracker {
13
+ tokenUsage: TokenUsage;
14
+ timeToFirstToken: number | undefined;
15
+ }
16
+
17
+ export interface MetricsStreamingResult {
18
+ options: StreamingOptions;
19
+ getMetrics: () => MetricsTracker;
20
+ }
21
+
22
+ /**
23
+ * Creates streaming options with automatic metrics tracking.
24
+ * Wraps provided streaming callbacks to capture token usage and timing metrics.
25
+ *
26
+ * @param streamingOptions - Optional base streaming options to wrap
27
+ * @param aiStartTime - Optional timestamp when AI operation started (for measuring time to first token)
28
+ * @returns Object containing wrapped streaming options and metrics getter
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const aiStartTime = Date.now();
33
+ * const { options, getMetrics } = createMetricsStreamingOptions(userCallbacks, aiStartTime);
34
+ *
35
+ * await generateText({ model, prompt, ...options });
36
+ *
37
+ * const { tokenUsage, timeToFirstToken } = getMetrics();
38
+ * console.log(`Used ${tokenUsage.total} tokens in ${timeToFirstToken}ms`);
39
+ * ```
40
+ */
41
+ export function createMetricsStreamingOptions(
42
+ streamingOptions?: StreamingOptions,
43
+ aiStartTime?: number
44
+ ): MetricsStreamingResult {
45
+ let tokenUsage: TokenUsage = { prompt: 0, completion: 0, total: 0 };
46
+ let timeToFirstToken: number | undefined = undefined;
47
+
48
+ const wrappedOptions: StreamingOptions = {
49
+ onFinish: async (result: any) => {
50
+ // Extract token usage from result
51
+ if (result.usage) {
52
+ tokenUsage = {
53
+ prompt: result.usage.inputTokens || result.usage.promptTokens || 0,
54
+ completion:
55
+ result.usage.outputTokens || result.usage.completionTokens || 0,
56
+ total: result.usage.totalTokens || 0,
57
+ };
58
+ }
59
+
60
+ // Call original onFinish callback if provided
61
+ await streamingOptions?.onFinish?.(result);
62
+ },
63
+ onChunk: (chunk: string) => {
64
+ // Measure time to first token (ignore empty/whitespace chunks)
65
+ if (chunk && chunk.trim() && !timeToFirstToken && aiStartTime) {
66
+ timeToFirstToken = Date.now() - aiStartTime;
67
+ }
68
+
69
+ // Call original onChunk callback if provided
70
+ streamingOptions?.onChunk?.(chunk);
71
+ },
72
+ onError: (error: unknown) => {
73
+ // Pass through error callback
74
+ streamingOptions?.onError?.(error);
75
+ },
76
+ onReasoning: (text: string) => {
77
+ // Measure time to first token (reasoning counts as response start)
78
+ if (text && text.trim() && !timeToFirstToken && aiStartTime) {
79
+ timeToFirstToken = Date.now() - aiStartTime;
80
+ }
81
+
82
+ // Pass through reasoning callback
83
+ streamingOptions?.onReasoning?.(text);
84
+ },
85
+ };
86
+
87
+ return {
88
+ options: wrappedOptions,
89
+ getMetrics: () => ({ tokenUsage, timeToFirstToken }),
90
+ };
91
+ }
@@ -0,0 +1,393 @@
1
+ import { getErrorMessage, formatError } from "./error-utils";
2
+
3
+ /**
4
+ * TaskOMaticError - Standardized error class for TaskOMatic
5
+ *
6
+ * Provides consistent error handling with context, suggestions, and typing.
7
+ * All errors in the system should use this class or one of the helper functions
8
+ * to ensure consistent error reporting and debugging experience.
9
+ *
10
+ * @example Basic usage
11
+ * ```typescript
12
+ * throw new TaskOMaticError("Task not found", {
13
+ * code: "TASK_NOT_FOUND",
14
+ * context: "Attempted to retrieve task ID: 123",
15
+ * suggestions: [
16
+ * "Verify the task ID is correct",
17
+ * "Check if the task was deleted"
18
+ * ]
19
+ * });
20
+ * ```
21
+ *
22
+ * @example With cause chain
23
+ * ```typescript
24
+ * try {
25
+ * await storage.getTask(id);
26
+ * } catch (error) {
27
+ * throw new TaskOMaticError("Failed to retrieve task", {
28
+ * code: "STORAGE_ERROR",
29
+ * cause: error instanceof Error ? error : new Error(String(error)),
30
+ * context: `Task ID: ${id}`,
31
+ * suggestions: ["Check storage permissions", "Verify storage is initialized"]
32
+ * });
33
+ * }
34
+ * ```
35
+ *
36
+ * @example With metadata
37
+ * ```typescript
38
+ * throw new TaskOMaticError("AI operation timed out", {
39
+ * code: "AI_OPERATION_FAILED",
40
+ * metadata: {
41
+ * operation: "task-breakdown",
42
+ * duration: 30000,
43
+ * retryAttempts: 3
44
+ * },
45
+ * suggestions: ["Increase timeout", "Check AI service status"]
46
+ * });
47
+ * ```
48
+ */
49
+ export class TaskOMaticError extends Error {
50
+ /**
51
+ * Error code for categorization
52
+ */
53
+ code: string;
54
+
55
+ /**
56
+ * Additional context information
57
+ */
58
+ context?: string;
59
+
60
+ /**
61
+ * Actionable suggestions for resolving the error
62
+ */
63
+ suggestions?: string[];
64
+
65
+ /**
66
+ * Original error that caused this error (if applicable)
67
+ */
68
+ cause?: Error;
69
+
70
+ /**
71
+ * Timestamp when the error occurred
72
+ */
73
+ timestamp: number;
74
+
75
+ /**
76
+ * Additional metadata for debugging
77
+ */
78
+ metadata?: Record<string, unknown>;
79
+
80
+ /**
81
+ * Create a new TaskOMaticError
82
+ *
83
+ * @param message - Error message
84
+ * @param options - Additional error options
85
+ */
86
+ constructor(
87
+ message: string,
88
+ options: {
89
+ code: string;
90
+ context?: string;
91
+ suggestions?: string[];
92
+ cause?: Error;
93
+ metadata?: Record<string, unknown>;
94
+ }
95
+ ) {
96
+ super(message);
97
+
98
+ this.name = "TaskOMaticError";
99
+ this.code = options.code;
100
+ this.context = options.context;
101
+ this.suggestions = options.suggestions;
102
+ this.cause = options.cause;
103
+ this.timestamp = Date.now();
104
+ this.metadata = options.metadata;
105
+
106
+ // Maintain proper stack trace
107
+ if (Error.captureStackTrace) {
108
+ Error.captureStackTrace(this, TaskOMaticError);
109
+ }
110
+ }
111
+
112
+ /**
113
+ * Get full error details as a formatted string
114
+ */
115
+ getDetails(): string {
116
+ let details = `[${this.code}] ${this.message}`;
117
+
118
+ if (this.context) {
119
+ details += `\nContext: ${this.context}`;
120
+ }
121
+
122
+ if (this.suggestions && this.suggestions.length > 0) {
123
+ details += `\nSuggestions:\n- ${this.suggestions.join("\n- ")}`;
124
+ }
125
+
126
+ if (this.cause) {
127
+ details += `\nCaused by: ${this.cause.message}`;
128
+ }
129
+
130
+ if (this.metadata && Object.keys(this.metadata).length > 0) {
131
+ details += `\nMetadata: ${JSON.stringify(this.metadata, null, 2)}`;
132
+ }
133
+
134
+ return details;
135
+ }
136
+
137
+ /**
138
+ * Get error details as a structured object
139
+ */
140
+ toJSON(): {
141
+ name: string;
142
+ code: string;
143
+ message: string;
144
+ context?: string;
145
+ suggestions?: string[];
146
+ cause?: string;
147
+ timestamp: number;
148
+ metadata?: Record<string, unknown>;
149
+ stack?: string;
150
+ } {
151
+ return {
152
+ name: this.name,
153
+ code: this.code,
154
+ message: this.message,
155
+ context: this.context,
156
+ suggestions: this.suggestions,
157
+ cause: this.cause?.message,
158
+ timestamp: this.timestamp,
159
+ metadata: this.metadata,
160
+ stack: this.stack,
161
+ };
162
+ }
163
+ }
164
+
165
+ /**
166
+ * Standard error codes for TaskOMatic
167
+ */
168
+ export const TaskOMaticErrorCodes = {
169
+ // General errors
170
+ UNEXPECTED_ERROR: "TASK_O_MATIC_001",
171
+ INVALID_INPUT: "TASK_O_MATIC_002",
172
+ CONFIGURATION_ERROR: "TASK_O_MATIC_003",
173
+
174
+ // Task-related errors
175
+ TASK_NOT_FOUND: "TASK_O_MATIC_101",
176
+ TASK_ALREADY_EXISTS: "TASK_O_MATIC_102",
177
+ INVALID_TASK_STATUS: "TASK_O_MATIC_103",
178
+ TASK_OPERATION_FAILED: "TASK_O_MATIC_104",
179
+
180
+ // Storage errors
181
+ STORAGE_ERROR: "TASK_O_MATIC_201",
182
+ STORAGE_NOT_INITIALIZED: "TASK_O_MATIC_202",
183
+ STORAGE_INTEGRITY_ERROR: "TASK_O_MATIC_203",
184
+
185
+ // AI operation errors
186
+ AI_OPERATION_FAILED: "TASK_O_MATIC_301",
187
+ AI_CONFIGURATION_ERROR: "TASK_O_MATIC_302",
188
+ AI_RATE_LIMIT: "TASK_O_MATIC_303",
189
+
190
+ // Workflow errors
191
+ WORKFLOW_VALIDATION_ERROR: "TASK_O_MATIC_401",
192
+ WORKFLOW_EXECUTION_ERROR: "TASK_O_MATIC_402",
193
+
194
+ // PRD errors
195
+ PRD_PARSING_ERROR: "TASK_O_MATIC_501",
196
+ PRD_GENERATION_ERROR: "TASK_O_MATIC_502",
197
+ PRD_VALIDATION_ERROR: "TASK_O_MATIC_503",
198
+ } as const;
199
+
200
+ type TaskOMaticErrorCode =
201
+ (typeof TaskOMaticErrorCodes)[keyof typeof TaskOMaticErrorCodes];
202
+
203
+ /**
204
+ * Create a standardized error with context and suggestions
205
+ *
206
+ * Helper function to create TaskOMaticError instances with proper error codes
207
+ * from the TaskOMaticErrorCodes constants.
208
+ *
209
+ * @param code - Error code from TaskOMaticErrorCodes
210
+ * @param message - Human-readable error message
211
+ * @param options - Additional error options
212
+ * @returns Configured TaskOMaticError instance
213
+ *
214
+ * @example
215
+ * ```typescript
216
+ * throw createStandardError(
217
+ * TaskOMaticErrorCodes.TASK_NOT_FOUND,
218
+ * "Task with ID '123' not found",
219
+ * {
220
+ * context: "User attempted to retrieve non-existent task",
221
+ * suggestions: ["Verify task ID", "List all tasks to see available IDs"]
222
+ * }
223
+ * );
224
+ * ```
225
+ */
226
+ export function createStandardError(
227
+ code: TaskOMaticErrorCode,
228
+ message: string,
229
+ options: {
230
+ context?: string;
231
+ suggestions?: string[];
232
+ cause?: Error;
233
+ metadata?: Record<string, unknown>;
234
+ } = {}
235
+ ): TaskOMaticError {
236
+ return new TaskOMaticError(message, {
237
+ code,
238
+ context: options.context,
239
+ suggestions: options.suggestions,
240
+ cause: options.cause,
241
+ metadata: options.metadata,
242
+ });
243
+ }
244
+
245
+ /**
246
+ * Format an existing error into a TaskOMaticError with context and suggestions
247
+ *
248
+ * Useful for wrapping caught errors with additional context while preserving
249
+ * the original error as the cause.
250
+ *
251
+ * @param error - Original error to wrap
252
+ * @param code - Error code from TaskOMaticErrorCodes
253
+ * @param options - Additional error options
254
+ * @returns TaskOMaticError wrapping the original error
255
+ *
256
+ * @example
257
+ * ```typescript
258
+ * try {
259
+ * await dangerousOperation();
260
+ * } catch (error) {
261
+ * throw formatStandardError(
262
+ * error,
263
+ * TaskOMaticErrorCodes.STORAGE_ERROR,
264
+ * {
265
+ * context: "Failed during task persistence",
266
+ * suggestions: ["Check disk space", "Verify write permissions"]
267
+ * }
268
+ * );
269
+ * }
270
+ * ```
271
+ */
272
+ export function formatStandardError(
273
+ error: unknown,
274
+ code: TaskOMaticErrorCode,
275
+ options: {
276
+ context?: string;
277
+ suggestions?: string[];
278
+ metadata?: Record<string, unknown>;
279
+ } = {}
280
+ ): TaskOMaticError {
281
+ const message = getErrorMessage(error);
282
+ const cause = error instanceof Error ? error : undefined;
283
+
284
+ return new TaskOMaticError(message, {
285
+ code,
286
+ context: options.context,
287
+ suggestions: options.suggestions,
288
+ cause,
289
+ metadata: options.metadata,
290
+ });
291
+ }
292
+
293
+ /**
294
+ * Type guard for TaskOMaticError
295
+ */
296
+ export function isTaskOMaticError(error: unknown): error is TaskOMaticError {
297
+ return error instanceof TaskOMaticError;
298
+ }
299
+
300
+ /**
301
+ * Common error formatting functions
302
+ */
303
+
304
+ export function formatTaskNotFoundError(taskId: string): TaskOMaticError {
305
+ return createStandardError(
306
+ TaskOMaticErrorCodes.TASK_NOT_FOUND,
307
+ `Task with ID "${taskId}" not found`,
308
+ {
309
+ context: `The task "${taskId}" could not be found in the storage.`,
310
+ suggestions: [
311
+ "Verify the task ID is correct",
312
+ "Check if the task was deleted",
313
+ "List all tasks to see available IDs",
314
+ ],
315
+ }
316
+ );
317
+ }
318
+
319
+ export function formatInvalidStatusTransitionError(
320
+ fromStatus: string,
321
+ toStatus: string
322
+ ): TaskOMaticError {
323
+ return createStandardError(
324
+ TaskOMaticErrorCodes.INVALID_TASK_STATUS,
325
+ `Invalid status transition from "${fromStatus}" to "${toStatus}"`,
326
+ {
327
+ context: `Task status transitions must follow the workflow: todo -> in-progress -> completed.`,
328
+ suggestions: [
329
+ "Use a valid status transition",
330
+ "Check the current task status",
331
+ "Review the workflow documentation",
332
+ ],
333
+ }
334
+ );
335
+ }
336
+
337
+ export function formatStorageError(
338
+ operation: string,
339
+ cause?: Error
340
+ ): TaskOMaticError {
341
+ return createStandardError(
342
+ TaskOMaticErrorCodes.STORAGE_ERROR,
343
+ `Storage operation "${operation}" failed`,
344
+ {
345
+ context: `The storage operation "${operation}" could not be completed.`,
346
+ suggestions: [
347
+ "Check storage permissions",
348
+ "Verify storage configuration",
349
+ "Review storage logs for details",
350
+ ],
351
+ cause,
352
+ }
353
+ );
354
+ }
355
+
356
+ export function formatAIOperationError(
357
+ operation: string,
358
+ cause?: Error
359
+ ): TaskOMaticError {
360
+ return createStandardError(
361
+ TaskOMaticErrorCodes.AI_OPERATION_FAILED,
362
+ `AI operation "${operation}" failed`,
363
+ {
364
+ context: `The AI operation "${operation}" could not be completed.`,
365
+ suggestions: [
366
+ "Check AI configuration",
367
+ "Verify API keys and endpoints",
368
+ "Review AI service status",
369
+ "Check rate limits",
370
+ ],
371
+ cause,
372
+ }
373
+ );
374
+ }
375
+
376
+ /**
377
+ * Backward compatibility wrapper
378
+ * Maintains existing error handling patterns while using new error system
379
+ */
380
+ export function wrapErrorForBackwardCompatibility(
381
+ error: unknown,
382
+ context?: string
383
+ ): Error {
384
+ if (isTaskOMaticError(error)) {
385
+ return error;
386
+ }
387
+
388
+ if (error instanceof Error) {
389
+ return error;
390
+ }
391
+
392
+ return new Error(formatError(error, context));
393
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "dist",
5
+ "rootDir": "src",
6
+ "baseUrl": ".",
7
+ "paths": {
8
+ "@/*": [
9
+ "src/*"
10
+ ]
11
+ },
12
+ "composite": true,
13
+ "resolveJsonModule": true,
14
+ "esModuleInterop": true
15
+ },
16
+ "include": [
17
+ "src",
18
+ "src/**/*.json"
19
+ ]
20
+ }