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,344 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PromptBuilder = void 0;
4
+ const prompt_registry_1 = require("./prompt-registry");
5
+ const fs_1 = require("fs");
6
+ const config_1 = require("./config");
7
+ const ai_service_factory_1 = require("../utils/ai-service-factory");
8
+ const path_1 = require("path");
9
+ const logger_1 = require("./logger");
10
+ class PromptBuilder {
11
+ /**
12
+ * Build a prompt with variable replacement
13
+ */
14
+ static buildPrompt(options) {
15
+ const { name, type = "user", variables, ...directVars } = options;
16
+ // Get the prompt name with type suffix if specified
17
+ const promptName = type === "system" ? `${name}-system` : name;
18
+ // Get prompt metadata from registry
19
+ const metadata = prompt_registry_1.PromptRegistry.getPrompt(promptName);
20
+ if (!metadata) {
21
+ return {
22
+ success: false,
23
+ error: `Prompt not found: ${promptName}. Available prompts:\n${prompt_registry_1.PromptRegistry.listPrompts()}`,
24
+ };
25
+ }
26
+ // Combine all variables (direct variables + variables object)
27
+ const allVariables = { ...variables, ...directVars };
28
+ // Validate required variables
29
+ const validation = prompt_registry_1.PromptRegistry.validatePrompt(promptName, allVariables);
30
+ if (!validation.valid) {
31
+ return {
32
+ success: false,
33
+ error: `Missing required variables: ${validation.missingRequired.join(", ")}`,
34
+ missingVariables: validation.missingRequired,
35
+ };
36
+ }
37
+ // Log missing optional variables for user awareness
38
+ if (validation.missingOptional.length > 0) {
39
+ logger_1.logger.warn(`Note: Missing optional variables: ${validation.missingOptional.join(", ")}`);
40
+ }
41
+ try {
42
+ // Replace variables in the prompt text
43
+ let promptText = metadata.promptText;
44
+ // Replace all {VAR_NAME} patterns with their values
45
+ for (const [key, value] of Object.entries(allVariables)) {
46
+ const pattern = new RegExp(`\\{${key}\\}`, "g");
47
+ promptText = promptText.replace(pattern, value || "");
48
+ }
49
+ // Check for any unreplaced variables (optional ones that weren't provided)
50
+ const unreplacedVars = promptText.match(/\{[^}]+\}/g);
51
+ if (unreplacedVars && unreplacedVars.length > 0) {
52
+ const varNames = unreplacedVars.map((v) => v.slice(1, -1));
53
+ const optionalUnreplaced = varNames.filter((v) => metadata.optionalVariables.includes(v));
54
+ if (optionalUnreplaced.length > 0) {
55
+ logger_1.logger.warn(`Note: Optional variables not replaced: ${optionalUnreplaced.join(", ")}`);
56
+ }
57
+ }
58
+ return {
59
+ success: true,
60
+ prompt: promptText,
61
+ metadata,
62
+ };
63
+ }
64
+ catch (error) {
65
+ return {
66
+ success: false,
67
+ error: `Error building prompt: ${error instanceof Error ? error.message : "Unknown error"}`,
68
+ };
69
+ }
70
+ }
71
+ /**
72
+ * List all available prompts
73
+ */
74
+ static listPrompts() {
75
+ return prompt_registry_1.PromptRegistry.listPrompts();
76
+ }
77
+ /**
78
+ * Get metadata for a specific prompt
79
+ */
80
+ static getPromptMetadata(name, type) {
81
+ const promptName = type === "system" ? `${name}-system` : name;
82
+ return prompt_registry_1.PromptRegistry.getPrompt(promptName) || null;
83
+ }
84
+ /**
85
+ * Load PRD content from file
86
+ */
87
+ static loadPRDContent(filePath) {
88
+ if (!(0, fs_1.existsSync)(filePath)) {
89
+ throw new Error(`PRD file not found: ${filePath}`);
90
+ }
91
+ return (0, fs_1.readFileSync)(filePath, "utf-8");
92
+ }
93
+ /**
94
+ * Auto-detect and load PRD content from project
95
+ */
96
+ static async autoDetectPRDContent() {
97
+ try {
98
+ const contextBuilder = (0, ai_service_factory_1.getContextBuilder)();
99
+ // Build context for a dummy task to get PRD content
100
+ const context = await contextBuilder.buildContextForNewTask("Dummy Task", "For PRD detection");
101
+ return context.prdContent;
102
+ }
103
+ catch (error) {
104
+ logger_1.logger.warn(`Could not auto-detect PRD content: ${error}`);
105
+ return undefined;
106
+ }
107
+ }
108
+ /**
109
+ * Build task context from file or content using ContextBuilder
110
+ */
111
+ static async buildTaskContext(taskTitle, content, filePath) {
112
+ let taskDescription = "";
113
+ if (filePath) {
114
+ if (!(0, fs_1.existsSync)(filePath)) {
115
+ throw new Error(`Task file not found: ${filePath}`);
116
+ }
117
+ taskDescription = (0, fs_1.readFileSync)(filePath, "utf-8");
118
+ }
119
+ else if (content) {
120
+ taskDescription = content;
121
+ }
122
+ // Use ContextBuilder to get rich context if we have a title
123
+ if (taskTitle) {
124
+ try {
125
+ const contextBuilder = (0, ai_service_factory_1.getContextBuilder)();
126
+ const context = await contextBuilder.buildContextForNewTask(taskTitle, taskDescription);
127
+ // Return formatted context instead of just description
128
+ return contextBuilder.formatContextForAI(context);
129
+ }
130
+ catch (error) {
131
+ logger_1.logger.warn(`Could not build rich task context, using basic description: ${error}`);
132
+ return taskDescription;
133
+ }
134
+ }
135
+ return taskDescription;
136
+ }
137
+ /**
138
+ * Detect stack info using ContextBuilder (proper BTS config loading)
139
+ */
140
+ static async detectStackInfo(projectPath) {
141
+ try {
142
+ // Default to current working directory if not provided
143
+ const workDir = projectPath || process.cwd();
144
+ config_1.configManager.setWorkingDirectory(workDir);
145
+ await config_1.configManager.load();
146
+ const contextBuilder = (0, ai_service_factory_1.getContextBuilder)();
147
+ // Build context for a dummy task to get stack info
148
+ const context = await contextBuilder.buildContextForNewTask("Dummy Task", "For stack detection");
149
+ if (context.stack && context.stack._source === "file") {
150
+ const parts = [
151
+ `Frontend: ${context.stack.frontend}`,
152
+ `Backend: ${context.stack.backend}`,
153
+ ];
154
+ if (context.stack.database !== "none") {
155
+ parts.push(`Database: ${context.stack.database}`);
156
+ }
157
+ if (context.stack.orm !== "none") {
158
+ parts.push(`ORM: ${context.stack.orm}`);
159
+ }
160
+ parts.push(`Auth: ${context.stack.auth}`);
161
+ if (context.stack.addons.length > 0) {
162
+ parts.push(`Addons: ${context.stack.addons.join(", ")}`);
163
+ }
164
+ return parts.join(", ");
165
+ }
166
+ return "Not detected";
167
+ }
168
+ catch (error) {
169
+ logger_1.logger.warn(`Could not detect stack info using ContextBuilder: ${error}`);
170
+ return "Not detected";
171
+ }
172
+ }
173
+ /**
174
+ * Build comprehensive project context for external executors
175
+ */
176
+ static async buildFullProjectContext(projectPath) {
177
+ const contextParts = [];
178
+ contextParts.push("**Project Context:**");
179
+ // Detect package.json and dependencies
180
+ const packageJsonPath = (0, path_1.join)(projectPath, "package.json");
181
+ if ((0, fs_1.existsSync)(packageJsonPath)) {
182
+ try {
183
+ const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, "utf-8"));
184
+ const deps = Object.keys(packageJson.dependencies || {});
185
+ const devDeps = Object.keys(packageJson.devDependencies || {});
186
+ contextParts.push(`\n**Dependencies:**`);
187
+ if (deps.length > 0) {
188
+ contextParts.push(`- Production: ${deps.slice(0, 10).join(", ")}${deps.length > 10 ? ` (+${deps.length - 10} more)` : ""}`);
189
+ }
190
+ if (devDeps.length > 0) {
191
+ contextParts.push(`- Development: ${devDeps.slice(0, 10).join(", ")}${devDeps.length > 10 ? ` (+${devDeps.length - 10} more)` : ""}`);
192
+ }
193
+ if (packageJson.scripts) {
194
+ const scripts = Object.keys(packageJson.scripts);
195
+ contextParts.push(`\n**Available Scripts:** ${scripts.join(", ")}`);
196
+ }
197
+ }
198
+ catch (error) {
199
+ logger_1.logger.warn(`Could not parse package.json: ${error}`);
200
+ }
201
+ }
202
+ // Detect project structure
203
+ try {
204
+ const files = (0, fs_1.readdirSync)(projectPath);
205
+ const directories = files.filter((f) => {
206
+ try {
207
+ const stat = (0, fs_1.statSync)((0, path_1.join)(projectPath, f));
208
+ return stat.isDirectory() && !f.startsWith(".");
209
+ }
210
+ catch {
211
+ return false;
212
+ }
213
+ });
214
+ if (directories.length > 0) {
215
+ contextParts.push(`\n**Project Structure:** ${directories.join(", ")}`);
216
+ }
217
+ // Detect configuration files
218
+ const configFiles = files.filter((f) => f.match(/\.(config|rc)\.(js|ts|json|yaml|yml)$/) ||
219
+ [
220
+ "tsconfig.json",
221
+ "next.config.js",
222
+ "vite.config.ts",
223
+ "tailwind.config.js",
224
+ ].includes(f));
225
+ if (configFiles.length > 0) {
226
+ contextParts.push(`\n**Configuration Files:** ${configFiles.join(", ")}`);
227
+ }
228
+ }
229
+ catch (error) {
230
+ logger_1.logger.warn(`Could not read project structure: ${error}`);
231
+ }
232
+ // Detect frameworks and tools
233
+ const detectedTools = [];
234
+ if ((0, fs_1.existsSync)((0, path_1.join)(projectPath, "next.config.js")) ||
235
+ (0, fs_1.existsSync)((0, path_1.join)(projectPath, "next.config.ts"))) {
236
+ detectedTools.push("Next.js");
237
+ }
238
+ if ((0, fs_1.existsSync)((0, path_1.join)(projectPath, "vite.config.ts")) ||
239
+ (0, fs_1.existsSync)((0, path_1.join)(projectPath, "vite.config.js"))) {
240
+ detectedTools.push("Vite");
241
+ }
242
+ if ((0, fs_1.existsSync)((0, path_1.join)(projectPath, "tailwind.config.js")) ||
243
+ (0, fs_1.existsSync)((0, path_1.join)(projectPath, "tailwind.config.ts"))) {
244
+ detectedTools.push("Tailwind CSS");
245
+ }
246
+ if ((0, fs_1.existsSync)((0, path_1.join)(projectPath, "convex"))) {
247
+ detectedTools.push("Convex");
248
+ }
249
+ if ((0, fs_1.existsSync)((0, path_1.join)(projectPath, "turbo.json"))) {
250
+ detectedTools.push("Turborepo");
251
+ }
252
+ if (detectedTools.length > 0) {
253
+ contextParts.push(`\n**Detected Tools:** ${detectedTools.join(", ")}`);
254
+ }
255
+ return contextParts.join("\n");
256
+ }
257
+ /**
258
+ * Format prompt for specific executor
259
+ */
260
+ static formatForExecutor(prompt, executor) {
261
+ // Most executors work well with plain text prompts
262
+ // This method exists for future customization if needed
263
+ switch (executor) {
264
+ case "claude":
265
+ // Claude Code works well with structured markdown
266
+ return prompt;
267
+ case "gemini":
268
+ // Gemini CLI supports file references with @
269
+ return prompt;
270
+ case "codex":
271
+ // Codex CLI supports structured prompts
272
+ return prompt;
273
+ case "opencode":
274
+ default:
275
+ return prompt;
276
+ }
277
+ }
278
+ /**
279
+ * Build execution prompt with task context
280
+ */
281
+ static buildExecutionPrompt(options) {
282
+ const { taskTitle, taskDescription, taskPlan, stack, documentation, retryContext, prdContent, } = options;
283
+ // Build TASK_PLAN variable
284
+ let taskPlanText = "";
285
+ if (taskPlan) {
286
+ taskPlanText = `# Task Plan\n\n${taskPlan}\n`;
287
+ }
288
+ else {
289
+ taskPlanText = `# Task: ${taskTitle}\n\n${taskDescription || "No description"}\n`;
290
+ }
291
+ // Build STACK_INFO variable
292
+ let stackInfo = "";
293
+ if (stack) {
294
+ const stackParts = [];
295
+ stackParts.push(`- **Project**: ${stack.projectName}`);
296
+ stackParts.push(`- **Frontend**: ${stack.frontend}`);
297
+ stackParts.push(`- **Backend**: ${stack.backend}`);
298
+ if (stack.database !== "none") {
299
+ stackParts.push(`- **Database**: ${stack.database}`);
300
+ }
301
+ if (stack.orm !== "none") {
302
+ stackParts.push(`- **ORM**: ${stack.orm}`);
303
+ }
304
+ stackParts.push(`- **Auth**: ${stack.auth}`);
305
+ if (stack.addons && stack.addons.length > 0) {
306
+ stackParts.push(`- **Addons**: ${stack.addons.join(", ")}`);
307
+ }
308
+ stackParts.push(`- **Package Manager**: ${stack.packageManager}`);
309
+ stackInfo = stackParts.join("\n");
310
+ }
311
+ // Build DOCUMENTATION_CONTEXT variable
312
+ let docContext = "";
313
+ if (documentation) {
314
+ const docParts = [];
315
+ docParts.push(`\n# Documentation Context\n`);
316
+ docParts.push(documentation.recap);
317
+ if (documentation.files && documentation.files.length > 0) {
318
+ docParts.push(`\n**Relevant Documentation Files**:`);
319
+ documentation.files.forEach((file) => {
320
+ docParts.push(`- ${file.path}`);
321
+ });
322
+ }
323
+ docContext = docParts.join("\n");
324
+ }
325
+ // Build PRD_CONTENT variable
326
+ let prdCtx = "";
327
+ if (prdContent) {
328
+ prdCtx = `\n# Product Requirements Document\n\n${prdContent}\n`;
329
+ }
330
+ // Build RETRY_CONTEXT variable
331
+ const retryCtx = retryContext || "";
332
+ return this.buildPrompt({
333
+ name: "task-execution",
334
+ variables: {
335
+ RETRY_CONTEXT: retryCtx,
336
+ TASK_PLAN: taskPlanText,
337
+ STACK_INFO: stackInfo,
338
+ DOCUMENTATION_CONTEXT: docContext,
339
+ PRD_CONTENT: prdCtx,
340
+ },
341
+ });
342
+ }
343
+ }
344
+ exports.PromptBuilder = PromptBuilder;
@@ -0,0 +1,22 @@
1
+ export interface PromptMetadata {
2
+ name: string;
3
+ description: string;
4
+ type: "system" | "user";
5
+ requiredVariables: string[];
6
+ optionalVariables: string[];
7
+ promptText: string;
8
+ }
9
+ export declare class PromptRegistry {
10
+ private static prompts;
11
+ static getPrompt(name: string): PromptMetadata | undefined;
12
+ static getAllPrompts(): PromptMetadata[];
13
+ static getPromptsByType(type: "system" | "user"): PromptMetadata[];
14
+ static hasPrompt(name: string): boolean;
15
+ static listPrompts(): string;
16
+ static validatePrompt(name: string, variables: Record<string, string>): {
17
+ valid: boolean;
18
+ missingRequired: string[];
19
+ missingOptional: string[];
20
+ };
21
+ }
22
+ //# sourceMappingURL=prompt-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-registry.d.ts","sourceRoot":"","sources":["../../src/lib/prompt-registry.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,OAAO,CA6VnB;IAEH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI1D,MAAM,CAAC,aAAa,IAAI,cAAc,EAAE;IAIxC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,cAAc,EAAE;IAMlE,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC,MAAM,CAAC,WAAW,IAAI,MAAM;IAiD5B,MAAM,CAAC,cAAc,CACnB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC;QACD,KAAK,EAAE,OAAO,CAAC;QACf,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B;CAuBF"}