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,215 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Zod schema for AI Provider
4
+ */
5
+ export declare const AIProviderSchema: z.ZodEnum<["openai", "anthropic", "openrouter", "custom", "gemini", "zai"]>;
6
+ /**
7
+ * Zod schema for AI Configuration
8
+ */
9
+ export declare const AIConfigSchema: z.ZodObject<{
10
+ provider: z.ZodEnum<["openai", "anthropic", "openrouter", "custom", "gemini", "zai"]>;
11
+ model: z.ZodString;
12
+ apiKey: z.ZodOptional<z.ZodString>;
13
+ baseURL: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
14
+ maxTokens: z.ZodOptional<z.ZodNumber>;
15
+ temperature: z.ZodOptional<z.ZodNumber>;
16
+ context7Enabled: z.ZodOptional<z.ZodBoolean>;
17
+ reasoning: z.ZodOptional<z.ZodObject<{
18
+ maxTokens: z.ZodOptional<z.ZodNumber>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ maxTokens?: number | undefined;
21
+ }, {
22
+ maxTokens?: number | undefined;
23
+ }>>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ provider: "custom" | "openai" | "anthropic" | "openrouter" | "gemini" | "zai";
26
+ model: string;
27
+ apiKey?: string | undefined;
28
+ baseURL?: string | undefined;
29
+ maxTokens?: number | undefined;
30
+ temperature?: number | undefined;
31
+ context7Enabled?: boolean | undefined;
32
+ reasoning?: {
33
+ maxTokens?: number | undefined;
34
+ } | undefined;
35
+ }, {
36
+ provider: "custom" | "openai" | "anthropic" | "openrouter" | "gemini" | "zai";
37
+ model: string;
38
+ apiKey?: string | undefined;
39
+ baseURL?: string | undefined;
40
+ maxTokens?: number | undefined;
41
+ temperature?: number | undefined;
42
+ context7Enabled?: boolean | undefined;
43
+ reasoning?: {
44
+ maxTokens?: number | undefined;
45
+ } | undefined;
46
+ }>;
47
+ /**
48
+ * Zod schema for full Config object
49
+ */
50
+ export declare const ConfigSchema: z.ZodObject<{
51
+ ai: z.ZodObject<{
52
+ provider: z.ZodEnum<["openai", "anthropic", "openrouter", "custom", "gemini", "zai"]>;
53
+ model: z.ZodString;
54
+ apiKey: z.ZodOptional<z.ZodString>;
55
+ baseURL: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
56
+ maxTokens: z.ZodOptional<z.ZodNumber>;
57
+ temperature: z.ZodOptional<z.ZodNumber>;
58
+ context7Enabled: z.ZodOptional<z.ZodBoolean>;
59
+ reasoning: z.ZodOptional<z.ZodObject<{
60
+ maxTokens: z.ZodOptional<z.ZodNumber>;
61
+ }, "strip", z.ZodTypeAny, {
62
+ maxTokens?: number | undefined;
63
+ }, {
64
+ maxTokens?: number | undefined;
65
+ }>>;
66
+ }, "strip", z.ZodTypeAny, {
67
+ provider: "custom" | "openai" | "anthropic" | "openrouter" | "gemini" | "zai";
68
+ model: string;
69
+ apiKey?: string | undefined;
70
+ baseURL?: string | undefined;
71
+ maxTokens?: number | undefined;
72
+ temperature?: number | undefined;
73
+ context7Enabled?: boolean | undefined;
74
+ reasoning?: {
75
+ maxTokens?: number | undefined;
76
+ } | undefined;
77
+ }, {
78
+ provider: "custom" | "openai" | "anthropic" | "openrouter" | "gemini" | "zai";
79
+ model: string;
80
+ apiKey?: string | undefined;
81
+ baseURL?: string | undefined;
82
+ maxTokens?: number | undefined;
83
+ temperature?: number | undefined;
84
+ context7Enabled?: boolean | undefined;
85
+ reasoning?: {
86
+ maxTokens?: number | undefined;
87
+ } | undefined;
88
+ }>;
89
+ workingDirectory: z.ZodOptional<z.ZodString>;
90
+ }, "strip", z.ZodTypeAny, {
91
+ ai: {
92
+ provider: "custom" | "openai" | "anthropic" | "openrouter" | "gemini" | "zai";
93
+ model: string;
94
+ apiKey?: string | undefined;
95
+ baseURL?: string | undefined;
96
+ maxTokens?: number | undefined;
97
+ temperature?: number | undefined;
98
+ context7Enabled?: boolean | undefined;
99
+ reasoning?: {
100
+ maxTokens?: number | undefined;
101
+ } | undefined;
102
+ };
103
+ workingDirectory?: string | undefined;
104
+ }, {
105
+ ai: {
106
+ provider: "custom" | "openai" | "anthropic" | "openrouter" | "gemini" | "zai";
107
+ model: string;
108
+ apiKey?: string | undefined;
109
+ baseURL?: string | undefined;
110
+ maxTokens?: number | undefined;
111
+ temperature?: number | undefined;
112
+ context7Enabled?: boolean | undefined;
113
+ reasoning?: {
114
+ maxTokens?: number | undefined;
115
+ } | undefined;
116
+ };
117
+ workingDirectory?: string | undefined;
118
+ }>;
119
+ /**
120
+ * Validation result type
121
+ */
122
+ export interface ValidationResult<T> {
123
+ success: boolean;
124
+ data?: T;
125
+ errors?: Array<{
126
+ path: string;
127
+ message: string;
128
+ }>;
129
+ }
130
+ /**
131
+ * Validate AI configuration
132
+ *
133
+ * @param config - AI configuration to validate
134
+ * @returns Validated and typed configuration
135
+ * @throws {TaskOMaticError} If validation fails
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * const aiConfig = {
140
+ * provider: "openai",
141
+ * model: "gpt-4",
142
+ * temperature: 0.7,
143
+ * maxTokens: 4000
144
+ * };
145
+ *
146
+ * const validated = validateAIConfig(aiConfig);
147
+ * // validated is now type-safe and guaranteed valid
148
+ * ```
149
+ */
150
+ export declare function validateAIConfig(config: unknown): z.infer<typeof AIConfigSchema>;
151
+ /**
152
+ * Validate full configuration object
153
+ *
154
+ * @param config - Configuration object to validate
155
+ * @returns Validated and typed configuration
156
+ * @throws {TaskOMaticError} If validation fails
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * const config = {
161
+ * ai: {
162
+ * provider: "anthropic",
163
+ * model: "claude-sonnet-4.5",
164
+ * temperature: 0.5
165
+ * },
166
+ * workingDirectory: "/path/to/project"
167
+ * };
168
+ *
169
+ * const validated = validateConfig(config);
170
+ * ```
171
+ */
172
+ export declare function validateConfig(config: unknown): z.infer<typeof ConfigSchema>;
173
+ /**
174
+ * Safe validation that returns a result object instead of throwing
175
+ *
176
+ * @param config - Configuration to validate
177
+ * @returns Validation result with success flag and data or errors
178
+ *
179
+ * @example
180
+ * ```typescript
181
+ * const result = safeValidateConfig(userInput);
182
+ * if (result.success) {
183
+ * console.log("Valid config:", result.data);
184
+ * } else {
185
+ * console.error("Validation errors:", result.errors);
186
+ * }
187
+ * ```
188
+ */
189
+ export declare function safeValidateConfig(config: unknown): ValidationResult<z.infer<typeof ConfigSchema>>;
190
+ /**
191
+ * Safe AI config validation
192
+ *
193
+ * @param config - AI configuration to validate
194
+ * @returns Validation result with success flag and data or errors
195
+ */
196
+ export declare function safeValidateAIConfig(config: unknown): ValidationResult<z.infer<typeof AIConfigSchema>>;
197
+ /**
198
+ * Validate partial AI config (for updates)
199
+ *
200
+ * @param config - Partial AI configuration to validate
201
+ * @returns Validated partial configuration
202
+ * @throws {TaskOMaticError} If validation fails
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * // Only validating fields that are present
207
+ * const updates = {
208
+ * temperature: 0.8
209
+ * };
210
+ *
211
+ * const validated = validatePartialAIConfig(updates);
212
+ * ```
213
+ */
214
+ export declare function validatePartialAIConfig(config: unknown): Partial<z.infer<typeof AIConfigSchema>>;
215
+ //# sourceMappingURL=config-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-validation.d.ts","sourceRoot":"","sources":["../../src/lib/config-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB;;GAEG;AACH,eAAO,MAAM,gBAAgB,6EAI3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGvB,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,OAAO,GACd,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CA0BhC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAuB5E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,GACd,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC,CAiBhD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,GACd,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC,CAiBlD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC,CAsBzC"}
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConfigSchema = exports.AIConfigSchema = exports.AIProviderSchema = void 0;
4
+ exports.validateAIConfig = validateAIConfig;
5
+ exports.validateConfig = validateConfig;
6
+ exports.safeValidateConfig = safeValidateConfig;
7
+ exports.safeValidateAIConfig = safeValidateAIConfig;
8
+ exports.validatePartialAIConfig = validatePartialAIConfig;
9
+ const zod_1 = require("zod");
10
+ const task_o_matic_error_1 = require("../utils/task-o-matic-error");
11
+ /**
12
+ * Zod schema for AI Provider
13
+ */
14
+ const types_1 = require("../types");
15
+ /**
16
+ * Zod schema for AI Provider
17
+ */
18
+ exports.AIProviderSchema = zod_1.z.enum(types_1.AI_PROVIDERS_LIST, {
19
+ errorMap: () => ({
20
+ message: `Provider must be one of: ${types_1.AI_PROVIDERS_LIST.join(", ")}`,
21
+ }),
22
+ });
23
+ /**
24
+ * Zod schema for AI Configuration
25
+ */
26
+ exports.AIConfigSchema = zod_1.z.object({
27
+ provider: exports.AIProviderSchema,
28
+ model: zod_1.z.string().min(1, "Model name cannot be empty"),
29
+ apiKey: zod_1.z.string().optional(),
30
+ baseURL: zod_1.z
31
+ .string()
32
+ .url("Base URL must be a valid URL")
33
+ .optional()
34
+ .or(zod_1.z.literal("")),
35
+ maxTokens: zod_1.z
36
+ .number()
37
+ .int("Max tokens must be an integer")
38
+ .positive("Max tokens must be positive")
39
+ .max(1000000, "Max tokens cannot exceed 1,000,000")
40
+ .optional(),
41
+ temperature: zod_1.z
42
+ .number()
43
+ .min(0, "Temperature must be between 0 and 2")
44
+ .max(2, "Temperature must be between 0 and 2")
45
+ .optional(),
46
+ context7Enabled: zod_1.z.boolean().optional(),
47
+ reasoning: zod_1.z
48
+ .object({
49
+ maxTokens: zod_1.z
50
+ .number()
51
+ .int("Reasoning max tokens must be an integer")
52
+ .positive("Reasoning max tokens must be positive")
53
+ .max(100000, "Reasoning max tokens cannot exceed 100,000")
54
+ .optional(),
55
+ })
56
+ .optional(),
57
+ });
58
+ /**
59
+ * Zod schema for full Config object
60
+ */
61
+ exports.ConfigSchema = zod_1.z.object({
62
+ ai: exports.AIConfigSchema,
63
+ workingDirectory: zod_1.z.string().optional(),
64
+ });
65
+ /**
66
+ * Validate AI configuration
67
+ *
68
+ * @param config - AI configuration to validate
69
+ * @returns Validated and typed configuration
70
+ * @throws {TaskOMaticError} If validation fails
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * const aiConfig = {
75
+ * provider: "openai",
76
+ * model: "gpt-4",
77
+ * temperature: 0.7,
78
+ * maxTokens: 4000
79
+ * };
80
+ *
81
+ * const validated = validateAIConfig(aiConfig);
82
+ * // validated is now type-safe and guaranteed valid
83
+ * ```
84
+ */
85
+ function validateAIConfig(config) {
86
+ try {
87
+ return exports.AIConfigSchema.parse(config);
88
+ }
89
+ catch (error) {
90
+ if (error instanceof zod_1.z.ZodError) {
91
+ const errors = error.errors.map((err) => ({
92
+ path: err.path.join("."),
93
+ message: err.message,
94
+ }));
95
+ throw new task_o_matic_error_1.TaskOMaticError("AI configuration validation failed", {
96
+ code: task_o_matic_error_1.TaskOMaticErrorCodes.CONFIGURATION_ERROR,
97
+ context: JSON.stringify(config, null, 2),
98
+ suggestions: [
99
+ "Check that all required fields are present",
100
+ "Verify provider is one of: openai, anthropic, openrouter, custom",
101
+ "Ensure model name is not empty",
102
+ "Check temperature is between 0 and 2",
103
+ "Verify maxTokens is a positive integer",
104
+ ...errors.map((e) => `Fix ${e.path}: ${e.message}`),
105
+ ],
106
+ metadata: { errors },
107
+ });
108
+ }
109
+ throw error;
110
+ }
111
+ }
112
+ /**
113
+ * Validate full configuration object
114
+ *
115
+ * @param config - Configuration object to validate
116
+ * @returns Validated and typed configuration
117
+ * @throws {TaskOMaticError} If validation fails
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * const config = {
122
+ * ai: {
123
+ * provider: "anthropic",
124
+ * model: "claude-sonnet-4.5",
125
+ * temperature: 0.5
126
+ * },
127
+ * workingDirectory: "/path/to/project"
128
+ * };
129
+ *
130
+ * const validated = validateConfig(config);
131
+ * ```
132
+ */
133
+ function validateConfig(config) {
134
+ try {
135
+ return exports.ConfigSchema.parse(config);
136
+ }
137
+ catch (error) {
138
+ if (error instanceof zod_1.z.ZodError) {
139
+ const errors = error.errors.map((err) => ({
140
+ path: err.path.join("."),
141
+ message: err.message,
142
+ }));
143
+ throw new task_o_matic_error_1.TaskOMaticError("Configuration validation failed", {
144
+ code: task_o_matic_error_1.TaskOMaticErrorCodes.CONFIGURATION_ERROR,
145
+ context: JSON.stringify(config, null, 2),
146
+ suggestions: [
147
+ "Check that all required fields are present",
148
+ "Verify the configuration structure is correct",
149
+ ...errors.map((e) => `Fix ${e.path}: ${e.message}`),
150
+ ],
151
+ metadata: { errors },
152
+ });
153
+ }
154
+ throw error;
155
+ }
156
+ }
157
+ /**
158
+ * Safe validation that returns a result object instead of throwing
159
+ *
160
+ * @param config - Configuration to validate
161
+ * @returns Validation result with success flag and data or errors
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * const result = safeValidateConfig(userInput);
166
+ * if (result.success) {
167
+ * console.log("Valid config:", result.data);
168
+ * } else {
169
+ * console.error("Validation errors:", result.errors);
170
+ * }
171
+ * ```
172
+ */
173
+ function safeValidateConfig(config) {
174
+ const result = exports.ConfigSchema.safeParse(config);
175
+ if (result.success) {
176
+ return {
177
+ success: true,
178
+ data: result.data,
179
+ };
180
+ }
181
+ else {
182
+ return {
183
+ success: false,
184
+ errors: result.error.errors.map((err) => ({
185
+ path: err.path.join("."),
186
+ message: err.message,
187
+ })),
188
+ };
189
+ }
190
+ }
191
+ /**
192
+ * Safe AI config validation
193
+ *
194
+ * @param config - AI configuration to validate
195
+ * @returns Validation result with success flag and data or errors
196
+ */
197
+ function safeValidateAIConfig(config) {
198
+ const result = exports.AIConfigSchema.safeParse(config);
199
+ if (result.success) {
200
+ return {
201
+ success: true,
202
+ data: result.data,
203
+ };
204
+ }
205
+ else {
206
+ return {
207
+ success: false,
208
+ errors: result.error.errors.map((err) => ({
209
+ path: err.path.join("."),
210
+ message: err.message,
211
+ })),
212
+ };
213
+ }
214
+ }
215
+ /**
216
+ * Validate partial AI config (for updates)
217
+ *
218
+ * @param config - Partial AI configuration to validate
219
+ * @returns Validated partial configuration
220
+ * @throws {TaskOMaticError} If validation fails
221
+ *
222
+ * @example
223
+ * ```typescript
224
+ * // Only validating fields that are present
225
+ * const updates = {
226
+ * temperature: 0.8
227
+ * };
228
+ *
229
+ * const validated = validatePartialAIConfig(updates);
230
+ * ```
231
+ */
232
+ function validatePartialAIConfig(config) {
233
+ try {
234
+ return exports.AIConfigSchema.partial().parse(config);
235
+ }
236
+ catch (error) {
237
+ if (error instanceof zod_1.z.ZodError) {
238
+ const errors = error.errors.map((err) => ({
239
+ path: err.path.join("."),
240
+ message: err.message,
241
+ }));
242
+ throw new task_o_matic_error_1.TaskOMaticError("AI configuration update validation failed", {
243
+ code: task_o_matic_error_1.TaskOMaticErrorCodes.CONFIGURATION_ERROR,
244
+ context: JSON.stringify(config, null, 2),
245
+ suggestions: [
246
+ "Check that field values are valid",
247
+ ...errors.map((e) => `Fix ${e.path}: ${e.message}`),
248
+ ],
249
+ metadata: { errors },
250
+ });
251
+ }
252
+ throw error;
253
+ }
254
+ }
@@ -0,0 +1,55 @@
1
+ import { AIConfig } from "../types";
2
+ export interface Config {
3
+ ai: AIConfig;
4
+ workingDirectory?: string;
5
+ }
6
+ export interface ConfigCallbacks {
7
+ read: (key: string) => Promise<string | null>;
8
+ write: (key: string, value: string) => Promise<void>;
9
+ getEnv: (key: string) => string | undefined;
10
+ }
11
+ import PROVIDER_DEFAULTS from "./provider-defaults.json";
12
+ export { PROVIDER_DEFAULTS as providerDefaults };
13
+ export declare function createDefaultConfigCallbacks(workingDir?: string): ConfigCallbacks;
14
+ export declare class ConfigManager {
15
+ private config;
16
+ private customWorkingDir;
17
+ private callbacks;
18
+ constructor(callbacks?: ConfigCallbacks, workingDirectory?: string);
19
+ setWorkingDirectory(dir: string): void;
20
+ setCallbacks(callbacks: ConfigCallbacks): void;
21
+ getWorkingDirectory(): string;
22
+ getTaskOMaticDir(): string;
23
+ private loadEnvConfig;
24
+ load(): Promise<Config>;
25
+ save(): Promise<void>;
26
+ getConfig(): Config;
27
+ getAIConfig(): AIConfig;
28
+ setAIConfig(aiConfig: Partial<AIConfig>): Promise<void>;
29
+ setConfig(config: Config): void;
30
+ getConfigFilePath(): string;
31
+ /**
32
+ * Validate configuration independently of load().
33
+ * Can be used to validate config before applying changes.
34
+ */
35
+ validate(configToValidate?: Partial<Config>): {
36
+ valid: boolean;
37
+ errors: string[];
38
+ };
39
+ }
40
+ export declare const configManager: ConfigManager;
41
+ /**
42
+ * Helper function to set working directory and reload config.
43
+ * Combines the common pattern of setWorkingDirectory + load.
44
+ *
45
+ * @param dir - Working directory path
46
+ * @param manager - ConfigManager instance (defaults to singleton)
47
+ * @returns Loaded config
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * await setupWorkingDirectory("/path/to/project");
52
+ * ```
53
+ */
54
+ export declare function setupWorkingDirectory(dir: string, manager?: ConfigManager): Promise<Config>;
55
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAA6C,MAAM,UAAU,CAAC;AAU/E,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,QAAQ,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAC7C;AAID,OAAO,iBAAiB,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,iBAAiB,IAAI,gBAAgB,EAAE,CAAC;AAsBjD,wBAAgB,4BAA4B,CAC1C,UAAU,GAAE,MAAc,GACzB,eAAe,CA+BjB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,SAAS,CAAkB;gBAEvB,SAAS,CAAC,EAAE,eAAe,EAAE,gBAAgB,CAAC,EAAE,MAAM;IAiBlE,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQtC,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAK9C,mBAAmB,IAAI,MAAM;IAI7B,gBAAgB,IAAI,MAAM;IAI1B,OAAO,CAAC,aAAa;IA0Df,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IA0EvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB3B,SAAS,IAAI,MAAM;IAqBnB,WAAW,IAAI,QAAQ;IAIjB,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB7D,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK/B,iBAAiB,IAAI,MAAM;IAI3B;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;QAC5C,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;CAwEF;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,aAA6B,GACrC,OAAO,CAAC,MAAM,CAAC,CAGjB"}