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,322 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bootstrapCliProject = bootstrapCliProject;
4
+ const node_child_process_1 = require("node:child_process");
5
+ const node_fs_1 = require("node:fs");
6
+ const node_path_1 = require("node:path");
7
+ const node_util_1 = require("node:util");
8
+ const logger_1 = require("../logger");
9
+ const execAsync = (0, node_util_1.promisify)(node_child_process_1.exec);
10
+ async function bootstrapCliProject(options) {
11
+ try {
12
+ logger_1.logger.info(`\n🚀 Bootstrapping CLI project: ${options.projectName}`);
13
+ // Create project directory
14
+ if (!(0, node_fs_1.existsSync)(options.projectPath)) {
15
+ (0, node_fs_1.mkdirSync)(options.projectPath, { recursive: true });
16
+ logger_1.logger.success(` ✓ Created project directory`);
17
+ }
18
+ // Create directory structure
19
+ const dirs = [
20
+ "src/cli",
21
+ "src/commands",
22
+ "src/types",
23
+ ];
24
+ // Add services dir for standard+
25
+ if (options.dependencyLevel !== "minimal") {
26
+ dirs.push("src/services");
27
+ }
28
+ // Add test dir for full+
29
+ if (options.dependencyLevel === "full" || options.dependencyLevel === "task-o-matic") {
30
+ dirs.push("src/test");
31
+ }
32
+ for (const dir of dirs) {
33
+ const fullPath = (0, node_path_1.join)(options.projectPath, dir);
34
+ (0, node_fs_1.mkdirSync)(fullPath, { recursive: true });
35
+ }
36
+ logger_1.logger.success(` ✓ Created directory structure`);
37
+ // Generate files
38
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(options.projectPath, "package.json"), generatePackageJson(options));
39
+ logger_1.logger.success(` ✓ Created package.json`);
40
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(options.projectPath, "tsconfig.json"), generateTsConfig(options.dependencyLevel === "full" || options.dependencyLevel === "task-o-matic"));
41
+ logger_1.logger.success(` ✓ Created tsconfig.json`);
42
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(options.projectPath, "src/cli/bin.ts"), generateBinTemplate());
43
+ logger_1.logger.success(` ✓ Created src/cli/bin.ts`);
44
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(options.projectPath, "src/index.ts"), generateIndexTemplate(options.projectName));
45
+ logger_1.logger.success(` ✓ Created src/index.ts`);
46
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(options.projectPath, "src/commands/index.ts"), generateCommandsIndexTemplate());
47
+ logger_1.logger.success(` ✓ Created src/commands/index.ts`);
48
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(options.projectPath, "src/commands/example.ts"), generateExampleCommandTemplate());
49
+ logger_1.logger.success(` ✓ Created src/commands/example.ts`);
50
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(options.projectPath, "src/types/index.ts"), generateTypesTemplate());
51
+ logger_1.logger.success(` ✓ Created src/types/index.ts`);
52
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(options.projectPath, "README.md"), generateReadmeTemplate(options));
53
+ logger_1.logger.success(` ✓ Created README.md`);
54
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(options.projectPath, ".gitignore"), generateGitignoreTemplate());
55
+ logger_1.logger.success(` ✓ Created .gitignore`);
56
+ // Install dependencies
57
+ logger_1.logger.progress(`\n 📦 Installing dependencies with ${options.packageManager}...`);
58
+ const installCmd = options.packageManager === "npm" ? "npm install" :
59
+ options.packageManager === "pnpm" ? "pnpm install" :
60
+ "bun install";
61
+ await execAsync(installCmd, { cwd: options.projectPath });
62
+ logger_1.logger.success(` ✓ Dependencies installed`);
63
+ return {
64
+ success: true,
65
+ message: `CLI project "${options.projectName}" created successfully!`
66
+ };
67
+ }
68
+ catch (error) {
69
+ const message = error instanceof Error ? error.message : String(error);
70
+ return {
71
+ success: false,
72
+ message: `Failed to bootstrap CLI project: ${message}`
73
+ };
74
+ }
75
+ }
76
+ function generatePackageJson(options) {
77
+ const deps = getBaseDependencies(options.dependencyLevel);
78
+ const devDeps = getDevDependencies(options);
79
+ const scripts = getScripts(options);
80
+ const pkg = {
81
+ name: options.projectName,
82
+ version: "0.1.0",
83
+ type: "module",
84
+ main: "./dist/lib/index.js",
85
+ types: "./dist/lib/index.d.ts",
86
+ bin: {
87
+ [options.projectName]: "./dist/cli/bin.js"
88
+ },
89
+ scripts,
90
+ dependencies: deps,
91
+ devDependencies: devDeps,
92
+ };
93
+ return JSON.stringify(pkg, null, 2);
94
+ }
95
+ function getBaseDependencies(level) {
96
+ const deps = {
97
+ minimal: {
98
+ commander: "latest",
99
+ chalk: "latest"
100
+ },
101
+ standard: {
102
+ commander: "latest",
103
+ chalk: "latest",
104
+ inquirer: "latest",
105
+ dotenv: "latest"
106
+ },
107
+ full: {
108
+ commander: "latest",
109
+ chalk: "latest",
110
+ inquirer: "latest",
111
+ dotenv: "latest"
112
+ },
113
+ "task-o-matic": {
114
+ commander: "latest",
115
+ chalk: "latest",
116
+ inquirer: "latest",
117
+ dotenv: "latest",
118
+ ai: "latest",
119
+ "@ai-sdk/anthropic": "latest",
120
+ "@ai-sdk/openai": "latest",
121
+ zod: "latest"
122
+ }
123
+ };
124
+ return deps[level];
125
+ }
126
+ function getDevDependencies(options) {
127
+ const devDeps = {
128
+ typescript: "latest",
129
+ "@types/node": "latest",
130
+ };
131
+ if (options.dependencyLevel === "full" || options.dependencyLevel === "task-o-matic") {
132
+ devDeps.mocha = "latest";
133
+ devDeps.tsx = "latest";
134
+ devDeps["@types/mocha"] = "latest";
135
+ }
136
+ return devDeps;
137
+ }
138
+ function getScripts(options) {
139
+ const scripts = {
140
+ build: "rm -rf dist && tsc",
141
+ "build:watch": "tsc --watch",
142
+ dev: "tsx src/cli/bin.ts",
143
+ start: "node dist/cli/bin.js",
144
+ "check-types": "tsc --noEmit"
145
+ };
146
+ if (options.dependencyLevel === "full" || options.dependencyLevel === "task-o-matic") {
147
+ scripts.test = "mocha -r tsx/cjs src/test/**/*.test.ts";
148
+ }
149
+ return scripts;
150
+ }
151
+ function generateBinTemplate() {
152
+ return `#!/usr/bin/env node
153
+ import { runCLI } from "../index.js";
154
+
155
+ runCLI().catch((error) => {
156
+ console.error(error);
157
+ process.exit(1);
158
+ });
159
+ `;
160
+ }
161
+ function generateIndexTemplate(projectName) {
162
+ return `import { Command } from "commander";
163
+ import chalk from "chalk";
164
+ import { exampleCommand } from "./commands/example.js";
165
+
166
+ const program = new Command();
167
+
168
+ program
169
+ .name("${projectName}")
170
+ .description("CLI application generated by task-o-matic")
171
+ .version("0.1.0");
172
+
173
+ program.addCommand(exampleCommand);
174
+
175
+ program.action(() => {
176
+ console.log(chalk.blue("Welcome to ${projectName}!"));
177
+ console.log(chalk.gray("Run with --help to see available commands"));
178
+ });
179
+
180
+ export const runCLI = async () => {
181
+ await program.parseAsync(process.argv);
182
+ };
183
+ `;
184
+ }
185
+ function generateCommandsIndexTemplate() {
186
+ return `export * from "./example.js";
187
+ `;
188
+ }
189
+ function generateExampleCommandTemplate() {
190
+ return `import { Command } from "commander";
191
+ import chalk from "chalk";
192
+
193
+ export const exampleCommand = new Command("hello")
194
+ .description("Example command that greets the user")
195
+ .argument("[name]", "Name to greet", "World")
196
+ .action((name: string) => {
197
+ console.log(chalk.green(\`Hello, \${name}!\`));
198
+ });
199
+ `;
200
+ }
201
+ function generateTypesTemplate() {
202
+ return `// Add your custom types here
203
+
204
+ export interface ExampleType {
205
+ name: string;
206
+ value: number;
207
+ }
208
+ `;
209
+ }
210
+ function generateTsConfig(strict) {
211
+ const config = {
212
+ compilerOptions: {
213
+ target: "ES2022",
214
+ module: "ESNext",
215
+ moduleResolution: "bundler",
216
+ strict: strict,
217
+ esModuleInterop: true,
218
+ skipLibCheck: true,
219
+ declaration: true,
220
+ declarationMap: true,
221
+ outDir: "dist",
222
+ rootDir: "src",
223
+ },
224
+ include: ["src/**/*"],
225
+ exclude: ["node_modules", "dist"]
226
+ };
227
+ return JSON.stringify(config, null, 2);
228
+ }
229
+ function generateReadmeTemplate(options) {
230
+ return `# ${options.projectName}
231
+
232
+ CLI application generated by task-o-matic
233
+
234
+ ## Installation
235
+
236
+ \`\`\`bash
237
+ ${options.packageManager} install
238
+ \`\`\`
239
+
240
+ ## Development
241
+
242
+ \`\`\`bash
243
+ # Run in development mode
244
+ ${options.packageManager} run dev
245
+
246
+ # Build the project
247
+ ${options.packageManager} run build
248
+
249
+ # Run the built CLI
250
+ ${options.packageManager} start
251
+ \`\`\`
252
+
253
+ ## Usage
254
+
255
+ \`\`\`bash
256
+ ${options.projectName} --help
257
+ ${options.projectName} hello World
258
+ \`\`\`
259
+
260
+ ## Project Structure
261
+
262
+ - \`src/cli/bin.ts\` - CLI entry point
263
+ - \`src/index.ts\` - Main CLI setup with Commander.js
264
+ - \`src/commands/\` - Command implementations
265
+ - \`src/types/\` - TypeScript type definitions
266
+ ${options.dependencyLevel !== "minimal" ? "- `src/services/` - Business logic services\n" : ""}${(options.dependencyLevel === "full" || options.dependencyLevel === "task-o-matic") ? "- `src/test/` - Test files\n" : ""}
267
+ ## Dependencies
268
+
269
+ This project uses:
270
+ - **Commander.js** - CLI framework
271
+ - **Chalk** - Terminal string styling
272
+ ${options.dependencyLevel !== "minimal" ? "- **Inquirer** - Interactive CLI prompts\n- **Dotenv** - Environment variable management\n" : ""}${options.dependencyLevel === "task-o-matic" ? "- **Vercel AI SDK** - AI integration\n- **Zod** - Runtime type validation\n" : ""}
273
+ ## Scripts
274
+
275
+ - \`${options.packageManager} run build\` - Build the TypeScript project
276
+ - \`${options.packageManager} run dev\` - Run in development mode with tsx
277
+ - \`${options.packageManager} start\` - Run the built CLI
278
+ - \`${options.packageManager} run check-types\` - Type check without compilation
279
+ ${(options.dependencyLevel === "full" || options.dependencyLevel === "task-o-matic") ? `- \`${options.packageManager} test\` - Run tests with Mocha\n` : ""}
280
+ ---
281
+
282
+ Generated with [task-o-matic](https://github.com/anthropics/task-o-matic)
283
+ `;
284
+ }
285
+ function generateGitignoreTemplate() {
286
+ return `# Dependencies
287
+ node_modules/
288
+ .pnp
289
+ .pnp.js
290
+
291
+ # Testing
292
+ coverage/
293
+
294
+ # Production
295
+ dist/
296
+ build/
297
+
298
+ # Misc
299
+ .DS_Store
300
+ .env
301
+ .env.local
302
+ .env.development.local
303
+ .env.test.local
304
+ .env.production.local
305
+
306
+ # Logs
307
+ npm-debug.log*
308
+ yarn-debug.log*
309
+ yarn-error.log*
310
+ lerna-debug.log*
311
+
312
+ # IDEs
313
+ .idea/
314
+ .vscode/
315
+ *.swp
316
+ *.swo
317
+ *~
318
+
319
+ # TypeScript
320
+ *.tsbuildinfo
321
+ `;
322
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./cli-bootstrap.js";
2
+ export * from "./medusa-bootstrap.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/bootstrap/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./cli-bootstrap.js"), exports);
18
+ __exportStar(require("./medusa-bootstrap.js"), exports);
@@ -0,0 +1,14 @@
1
+ export interface MedusaBootstrapOptions {
2
+ projectName: string;
3
+ projectPath: string;
4
+ packageManager: "npm" | "pnpm" | "bun";
5
+ database?: "postgres" | "sqlite";
6
+ skipDb?: boolean;
7
+ skipInstall?: boolean;
8
+ version?: string;
9
+ }
10
+ export declare function bootstrapMedusaProject(options: MedusaBootstrapOptions): Promise<{
11
+ success: boolean;
12
+ message: string;
13
+ }>;
14
+ //# sourceMappingURL=medusa-bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"medusa-bootstrap.d.ts","sourceRoot":"","sources":["../../../src/lib/bootstrap/medusa-bootstrap.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IACvC,QAAQ,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAqGhD"}
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bootstrapMedusaProject = bootstrapMedusaProject;
4
+ const node_child_process_1 = require("node:child_process");
5
+ const node_crypto_1 = require("node:crypto");
6
+ const node_fs_1 = require("node:fs");
7
+ const node_path_1 = require("node:path");
8
+ const node_util_1 = require("node:util");
9
+ const logger_1 = require("../logger");
10
+ const execAsync = (0, node_util_1.promisify)(node_child_process_1.exec);
11
+ async function bootstrapMedusaProject(options) {
12
+ try {
13
+ logger_1.logger.info(`\n🚀 Bootstrapping MedusaJS project: ${options.projectName}`);
14
+ // Create project directory
15
+ if (!(0, node_fs_1.existsSync)(options.projectPath)) {
16
+ (0, node_fs_1.mkdirSync)(options.projectPath, { recursive: true });
17
+ logger_1.logger.success(` ✓ Created project directory`);
18
+ }
19
+ // Build create-medusa-app command with correct package runner
20
+ const versionFlag = options.version ? `@${options.version}` : "@latest";
21
+ const dbFlag = options.database === "postgres"
22
+ ? "--db-type postgres"
23
+ : "--db-type sqlite";
24
+ const skipInstallFlag = options.skipInstall ? "--skip-install" : "";
25
+ // Respect package manager for the runner
26
+ const packageRunner = options.packageManager === "npm"
27
+ ? "npx"
28
+ : options.packageManager === "pnpm"
29
+ ? "pnpm dlx"
30
+ : "bunx";
31
+ // Use the project path as the target directory
32
+ const createCmd = `${packageRunner} create-medusa-app${versionFlag} ${options.projectPath} ${dbFlag} ${skipInstallFlag} --skip-db --no-browser`;
33
+ logger_1.logger.progress(`\n 📦 Running create-medusa-app with ${options.packageManager}...`);
34
+ await execAsync(createCmd, { cwd: process.cwd() });
35
+ logger_1.logger.success(` ✓ MedusaJS project scaffolded`);
36
+ // Generate environment file
37
+ const envContent = generateEnvFile(options);
38
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(options.projectPath, ".env"), envContent);
39
+ logger_1.logger.success(` ✓ Created .env file`);
40
+ // Generate README
41
+ const readmeContent = generateReadme(options);
42
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(options.projectPath, "README.md"), readmeContent);
43
+ logger_1.logger.success(` ✓ Created README.md`);
44
+ // Install dependencies if not skipped
45
+ if (!options.skipInstall) {
46
+ logger_1.logger.progress(`\n 📦 Installing dependencies with ${options.packageManager}...`);
47
+ const installCmd = options.packageManager === "npm"
48
+ ? "npm install"
49
+ : options.packageManager === "pnpm"
50
+ ? "pnpm install"
51
+ : "bun install";
52
+ await execAsync(installCmd, { cwd: options.projectPath });
53
+ logger_1.logger.success(` ✓ Dependencies installed`);
54
+ }
55
+ // Setup database if not skipped
56
+ if (!options.skipDb) {
57
+ logger_1.logger.progress(`\n 🗄️ Setting up database...`);
58
+ try {
59
+ const dbPackageRunner = options.packageManager === "npm"
60
+ ? "npx"
61
+ : options.packageManager === "pnpm"
62
+ ? "pnpm dlx"
63
+ : "bunx";
64
+ await execAsync(`${dbPackageRunner} medusa db:setup`, {
65
+ cwd: options.projectPath,
66
+ });
67
+ logger_1.logger.success(` ✓ Database setup complete`);
68
+ }
69
+ catch (_error) {
70
+ const dbPackageRunner = options.packageManager === "npm"
71
+ ? "npx"
72
+ : options.packageManager === "pnpm"
73
+ ? "pnpm dlx"
74
+ : "bunx";
75
+ logger_1.logger.warn(` ⚠️ Database setup skipped (run '${dbPackageRunner} medusa db:setup' manually)`);
76
+ }
77
+ }
78
+ return {
79
+ success: true,
80
+ message: `MedusaJS project "${options.projectName}" created successfully!`,
81
+ };
82
+ }
83
+ catch (error) {
84
+ const message = error instanceof Error ? error.message : String(error);
85
+ return {
86
+ success: false,
87
+ message: `Failed to bootstrap MedusaJS project: ${message}`,
88
+ };
89
+ }
90
+ }
91
+ function generateEnvFile(options) {
92
+ const database = options.database || "sqlite";
93
+ const databaseUrl = database === "postgres"
94
+ ? "postgres://postgres:postgres@localhost:5432/medusa-store"
95
+ : "sqlite://./medusa.db";
96
+ // Generate secure random secrets
97
+ const jwtSecret = (0, node_crypto_1.randomBytes)(32).toString("hex");
98
+ const cookieSecret = (0, node_crypto_1.randomBytes)(32).toString("hex");
99
+ return `# Database Configuration
100
+ DATABASE_URL=${databaseUrl}
101
+
102
+ # Authentication Secrets (auto-generated)
103
+ JWT_SECRET=${jwtSecret}
104
+ COOKIE_SECRET=${cookieSecret}
105
+
106
+ # CORS Configuration (adjust for your frontend)
107
+ STORE_CORS=http://localhost:8000
108
+ ADMIN_CORS=http://localhost:7001,http://localhost:7000
109
+
110
+ # Server Configuration
111
+ PORT=9000
112
+
113
+ # Redis (optional - uncomment for production)
114
+ # REDIS_URL=redis://localhost:6379
115
+
116
+ # Worker Mode (shared = single process, server = API only, worker = background jobs only)
117
+ WORKER_MODE=shared
118
+ `;
119
+ }
120
+ function generateReadme(options) {
121
+ const database = options.database || "sqlite";
122
+ return `# ${options.projectName}
123
+
124
+ MedusaJS e-commerce backend generated by task-o-matic
125
+
126
+ ## Getting Started
127
+
128
+ ### Prerequisites
129
+
130
+ ${database === "postgres"
131
+ ? `- PostgreSQL database running
132
+ - Update \`DATABASE_URL\` in \`.env\` with your database credentials`
133
+ : `- SQLite (no additional setup required)`}
134
+
135
+ ### Installation
136
+
137
+ \`\`\`bash
138
+ ${options.packageManager} install
139
+ \`\`\`
140
+
141
+ ### Database Setup
142
+
143
+ \`\`\`bash
144
+ # Run migrations and seed data
145
+ ${options.packageManager === "npm"
146
+ ? "npx"
147
+ : options.packageManager === "pnpm"
148
+ ? "pnpm dlx"
149
+ : "bunx"} medusa db:setup
150
+ \`\`\`
151
+
152
+ ### Development
153
+
154
+ \`\`\`bash
155
+ # Start development server
156
+ ${options.packageManager} run dev
157
+
158
+ # The API will be available at http://localhost:9000
159
+ # Admin dashboard at http://localhost:9000/app
160
+ \`\`\`
161
+
162
+ ### Build
163
+
164
+ \`\`\`bash
165
+ # Build for production
166
+ ${options.packageManager} run build
167
+
168
+ # Start production server
169
+ ${options.packageManager} start
170
+ \`\`\`
171
+
172
+ ## Project Structure
173
+
174
+ - \`src/\` - Source code
175
+ - \`src/admin/\` - Admin dashboard customizations
176
+ - \`src/api/\` - API routes and middlewares
177
+ - \`src/modules/\` - Custom modules
178
+ - \`src/workflows/\` - Business logic workflows
179
+ - \`src/subscribers/\` - Event subscribers
180
+ - \`medusa-config.ts\` - MedusaJS configuration
181
+ - \`.env\` - Environment variables
182
+
183
+ ## Environment Variables
184
+
185
+ Key environment variables (see \`.env\` for full list):
186
+
187
+ - \`DATABASE_URL\` - Database connection string
188
+ - \`JWT_SECRET\` - Secret for JWT tokens
189
+ - \`COOKIE_SECRET\` - Secret for cookies
190
+ - \`STORE_CORS\` - Allowed origins for storefront
191
+ - \`ADMIN_CORS\` - Allowed origins for admin
192
+
193
+ ## Documentation
194
+
195
+ - [MedusaJS Documentation](https://docs.medusajs.com)
196
+ - [API Reference](https://docs.medusajs.com/api)
197
+ - [Admin Guide](https://docs.medusajs.com/admin)
198
+
199
+ ## Next Steps
200
+
201
+ 1. Configure your database connection in \`.env\`
202
+ 2. Run \`${options.packageManager === "npm"
203
+ ? "npx"
204
+ : options.packageManager === "pnpm"
205
+ ? "pnpm dlx"
206
+ : "bunx"} medusa db:setup\` to initialize the database
207
+ 3. Start the development server with \`${options.packageManager} run dev\`
208
+ 4. Access the admin dashboard at http://localhost:9000/app
209
+ 5. Create your first admin user
210
+
211
+ ---
212
+
213
+ Generated with [task-o-matic](https://github.com/DimitriGilbert/task-o-matic)
214
+ `;
215
+ }