factory-factory 0.3.17 → 0.3.19

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 (276) hide show
  1. package/README.md +3 -1
  2. package/dist/client/assets/{arc-CAOrfHBL.js → arc-DQhOC8k-.js} +1 -1
  3. package/dist/client/assets/{architectureDiagram-3BPJPVTR-CzxGCKeM.js → architectureDiagram-3BPJPVTR-BnnC0MnW.js} +1 -1
  4. package/dist/client/assets/{blockDiagram-GPEHLZMM-B4k0dvv-.js → blockDiagram-GPEHLZMM-CNaYKejS.js} +1 -1
  5. package/dist/client/assets/{c4Diagram-AAUBKEIU-ByaECY1u.js → c4Diagram-AAUBKEIU-B6TiwlCJ.js} +1 -1
  6. package/dist/client/assets/channel-aiW5SBbk.js +1 -0
  7. package/dist/client/assets/{chunk-2J33WTMH-Crxo1uMY.js → chunk-2J33WTMH-XXkb30dE.js} +1 -1
  8. package/dist/client/assets/{chunk-4BX2VUAB-CggFLwAA.js → chunk-4BX2VUAB-78mYakPy.js} +1 -1
  9. package/dist/client/assets/{chunk-55IACEB6-BSoTWFAF.js → chunk-55IACEB6-D_0y5jOy.js} +1 -1
  10. package/dist/client/assets/{chunk-727SXJPM-DcQoeGkQ.js → chunk-727SXJPM-BWqoGJOj.js} +1 -1
  11. package/dist/client/assets/{chunk-AQP2D5EJ-Ci5tNJvg.js → chunk-AQP2D5EJ-l9AUcgrx.js} +1 -1
  12. package/dist/client/assets/{chunk-FMBD7UC4-CjYtwTh4.js → chunk-FMBD7UC4-B63Nwghi.js} +1 -1
  13. package/dist/client/assets/{chunk-ND2GUHAM-Dla8Gmku.js → chunk-ND2GUHAM-DYoFXWFH.js} +1 -1
  14. package/dist/client/assets/{chunk-QZHKN3VN-CiblfzNN.js → chunk-QZHKN3VN-faBOxK9Y.js} +1 -1
  15. package/dist/client/assets/classDiagram-4FO5ZUOK-DdRRgcVJ.js +1 -0
  16. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DdRRgcVJ.js +1 -0
  17. package/dist/client/assets/{cose-bilkent-S5V4N54A-DWuzgvAN.js → cose-bilkent-S5V4N54A-s9MyXm2i.js} +1 -1
  18. package/dist/client/assets/{dagre-BM42HDAG-hvdcGfHc.js → dagre-BM42HDAG-DFzoOzIg.js} +1 -1
  19. package/dist/client/assets/{diagram-2AECGRRQ-DVZDsgVY.js → diagram-2AECGRRQ-BkiOxNc9.js} +1 -1
  20. package/dist/client/assets/{diagram-5GNKFQAL-BLXKSUUu.js → diagram-5GNKFQAL-CqXCPCvK.js} +1 -1
  21. package/dist/client/assets/{diagram-KO2AKTUF-1nNBdWqs.js → diagram-KO2AKTUF-BIDL-rtL.js} +1 -1
  22. package/dist/client/assets/{diagram-LMA3HP47-CTw-M4zU.js → diagram-LMA3HP47-C5Q4rNwM.js} +1 -1
  23. package/dist/client/assets/{diagram-OG6HWLK6-D9J0vyno.js → diagram-OG6HWLK6-NUBLwB2y.js} +1 -1
  24. package/dist/client/assets/{erDiagram-TEJ5UH35-DYXcLeDs.js → erDiagram-TEJ5UH35-DE7FkKUT.js} +1 -1
  25. package/dist/client/assets/{flowDiagram-I6XJVG4X-CXFyFXcd.js → flowDiagram-I6XJVG4X-Kn-tG-yL.js} +1 -1
  26. package/dist/client/assets/{ganttDiagram-6RSMTGT7-CPGMIRhg.js → ganttDiagram-6RSMTGT7-By6WP-ZX.js} +1 -1
  27. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-BCIDHp-Q.js → gitGraphDiagram-PVQCEYII-nZ9iXa1J.js} +1 -1
  28. package/dist/client/assets/{index-gIy0Sz_B.js → index-Bcwk_kNL.js} +144 -144
  29. package/dist/client/assets/index-p_tQjQfx.css +1 -0
  30. package/dist/client/assets/{infoDiagram-5YYISTIA-ThNaUmLI.js → infoDiagram-5YYISTIA-W-ABsfEh.js} +1 -1
  31. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-nD7e1KKT.js → ishikawaDiagram-YF4QCWOH-JxGcwHMc.js} +1 -1
  32. package/dist/client/assets/{journeyDiagram-JHISSGLW-DKfK1tIp.js → journeyDiagram-JHISSGLW-D_KdYlXr.js} +1 -1
  33. package/dist/client/assets/{kanban-definition-UN3LZRKU-C61PkF-T.js → kanban-definition-UN3LZRKU-D-UVbQXc.js} +1 -1
  34. package/dist/client/assets/{linear-yYp6Wht8.js → linear-Cj1wlnWl.js} +1 -1
  35. package/dist/client/assets/{mindmap-definition-RKZ34NQL-DI6Bl654.js → mindmap-definition-RKZ34NQL-DwGZS8do.js} +1 -1
  36. package/dist/client/assets/{mobile-baseline-DRrQYbFX.js → mobile-baseline-BGE4NQIr.js} +1 -1
  37. package/dist/client/assets/{pieDiagram-4H26LBE5-CNV-VY3H.js → pieDiagram-4H26LBE5-CY9En855.js} +1 -1
  38. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-CDBpCVHO.js → quadrantDiagram-W4KKPZXB-DOyyttJG.js} +1 -1
  39. package/dist/client/assets/{requirementDiagram-4Y6WPE33-D_rxDIc5.js → requirementDiagram-4Y6WPE33-B4JqooNB.js} +1 -1
  40. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-DeyadfL0.js → sankeyDiagram-5OEKKPKP-BB77NiWq.js} +1 -1
  41. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-36_kZ6la.js → sequenceDiagram-3UESZ5HK-BeL59Hty.js} +1 -1
  42. package/dist/client/assets/{stateDiagram-AJRCARHV-4ayM-mAT.js → stateDiagram-AJRCARHV-r1MOX3Bu.js} +1 -1
  43. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-Dd555Ct_.js +1 -0
  44. package/dist/client/assets/{terminal-instance-CMp5bO62.js → terminal-instance-BjuTwvmO.js} +1 -1
  45. package/dist/client/assets/{timeline-definition-PNZ67QCA-D0pQgePo.js → timeline-definition-PNZ67QCA-D01xTiJg.js} +1 -1
  46. package/dist/client/assets/{vennDiagram-CIIHVFJN-CnoMcpwq.js → vennDiagram-CIIHVFJN-Kc3pSNeO.js} +1 -1
  47. package/dist/client/assets/{wardley-L42UT6IY-DOtSWmwv.js → wardley-L42UT6IY-Bf_y6FVI.js} +1 -1
  48. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-Z3hYGa2_.js → wardleyDiagram-YWT4CUSO-7PwdKD27.js} +1 -1
  49. package/dist/client/assets/{xychartDiagram-2RQKCTM6-CBvgTdkn.js → xychartDiagram-2RQKCTM6-CAKTkp2-.js} +1 -1
  50. package/dist/client/index.html +2 -2
  51. package/dist/prisma/generated/internal/class.js +4 -4
  52. package/dist/prisma/generated/internal/class.js.map +1 -1
  53. package/dist/prisma/generated/internal/prismaNamespace.d.ts +3 -0
  54. package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
  55. package/dist/prisma/generated/internal/prismaNamespace.js +3 -0
  56. package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
  57. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +3 -0
  58. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  59. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js +3 -0
  60. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  61. package/dist/prisma/generated/models/PeriodicTask.d.ts +158 -1
  62. package/dist/prisma/generated/models/PeriodicTask.d.ts.map +1 -1
  63. package/dist/src/backend/interceptors/pr-detection.interceptor.d.ts.map +1 -1
  64. package/dist/src/backend/interceptors/pr-detection.interceptor.js +10 -7
  65. package/dist/src/backend/interceptors/pr-detection.interceptor.js.map +1 -1
  66. package/dist/src/backend/interceptors/pr-detection.interceptor.test.js +88 -0
  67. package/dist/src/backend/interceptors/pr-detection.interceptor.test.js.map +1 -1
  68. package/dist/src/backend/orchestration/data-backup.service.d.ts.map +1 -1
  69. package/dist/src/backend/orchestration/data-backup.service.js +3 -1
  70. package/dist/src/backend/orchestration/data-backup.service.js.map +1 -1
  71. package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts.map +1 -1
  72. package/dist/src/backend/orchestration/domain-bridges.orchestrator.js +16 -2
  73. package/dist/src/backend/orchestration/domain-bridges.orchestrator.js.map +1 -1
  74. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js +133 -5
  75. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js.map +1 -1
  76. package/dist/src/backend/orchestration/workspace-init-github-username-cache.d.ts +10 -0
  77. package/dist/src/backend/orchestration/workspace-init-github-username-cache.d.ts.map +1 -0
  78. package/dist/src/backend/orchestration/workspace-init-github-username-cache.js +27 -0
  79. package/dist/src/backend/orchestration/workspace-init-github-username-cache.js.map +1 -0
  80. package/dist/src/backend/orchestration/workspace-init-issue-prompts.d.ts +6 -0
  81. package/dist/src/backend/orchestration/workspace-init-issue-prompts.d.ts.map +1 -0
  82. package/dist/src/backend/orchestration/workspace-init-issue-prompts.js +262 -0
  83. package/dist/src/backend/orchestration/workspace-init-issue-prompts.js.map +1 -0
  84. package/dist/src/backend/orchestration/workspace-init.orchestrator.d.ts.map +1 -1
  85. package/dist/src/backend/orchestration/workspace-init.orchestrator.js +16 -435
  86. package/dist/src/backend/orchestration/workspace-init.orchestrator.js.map +1 -1
  87. package/dist/src/backend/services/auto-iteration/service/auto-iteration-loop-state.d.ts +16 -0
  88. package/dist/src/backend/services/auto-iteration/service/auto-iteration-loop-state.d.ts.map +1 -0
  89. package/dist/src/backend/services/auto-iteration/service/auto-iteration-loop-state.js +45 -0
  90. package/dist/src/backend/services/auto-iteration/service/auto-iteration-loop-state.js.map +1 -0
  91. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.d.ts.map +1 -1
  92. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.js +4 -109
  93. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.js.map +1 -1
  94. package/dist/src/backend/services/auto-iteration/service/auto-iteration.types.d.ts +2 -50
  95. package/dist/src/backend/services/auto-iteration/service/auto-iteration.types.d.ts.map +1 -1
  96. package/dist/src/backend/services/auto-iteration/service/logbook.service.d.ts.map +1 -1
  97. package/dist/src/backend/services/auto-iteration/service/logbook.service.js +6 -9
  98. package/dist/src/backend/services/auto-iteration/service/logbook.service.js.map +1 -1
  99. package/dist/src/backend/services/auto-iteration/service/logbook.service.test.d.ts +2 -0
  100. package/dist/src/backend/services/auto-iteration/service/logbook.service.test.d.ts.map +1 -0
  101. package/dist/src/backend/services/auto-iteration/service/logbook.service.test.js +63 -0
  102. package/dist/src/backend/services/auto-iteration/service/logbook.service.test.js.map +1 -0
  103. package/dist/src/backend/services/auto-iteration/service/response-parsing.d.ts +4 -0
  104. package/dist/src/backend/services/auto-iteration/service/response-parsing.d.ts.map +1 -0
  105. package/dist/src/backend/services/auto-iteration/service/response-parsing.js +91 -0
  106. package/dist/src/backend/services/auto-iteration/service/response-parsing.js.map +1 -0
  107. package/dist/src/backend/services/auto-iteration/service/response-parsing.test.d.ts +2 -0
  108. package/dist/src/backend/services/auto-iteration/service/response-parsing.test.d.ts.map +1 -0
  109. package/dist/src/backend/services/auto-iteration/service/response-parsing.test.js +66 -0
  110. package/dist/src/backend/services/auto-iteration/service/response-parsing.test.js.map +1 -0
  111. package/dist/src/backend/services/check-single-writer.test.js +21 -0
  112. package/dist/src/backend/services/check-single-writer.test.js.map +1 -1
  113. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.d.ts +6 -2
  114. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.d.ts.map +1 -1
  115. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.js +151 -19
  116. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.js.map +1 -1
  117. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.test.d.ts +2 -0
  118. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.test.d.ts.map +1 -0
  119. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.test.js +150 -0
  120. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.test.js.map +1 -0
  121. package/dist/src/backend/services/periodic-task/service/periodic-task.service.d.ts +5 -1
  122. package/dist/src/backend/services/periodic-task/service/periodic-task.service.d.ts.map +1 -1
  123. package/dist/src/backend/services/periodic-task/service/periodic-task.service.js +20 -4
  124. package/dist/src/backend/services/periodic-task/service/periodic-task.service.js.map +1 -1
  125. package/dist/src/backend/services/periodic-task/service/periodic-task.service.test.d.ts +2 -0
  126. package/dist/src/backend/services/periodic-task/service/periodic-task.service.test.d.ts.map +1 -0
  127. package/dist/src/backend/services/periodic-task/service/periodic-task.service.test.js +144 -0
  128. package/dist/src/backend/services/periodic-task/service/periodic-task.service.test.js.map +1 -0
  129. package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.d.ts +64 -0
  130. package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.d.ts.map +1 -0
  131. package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.js +76 -0
  132. package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.js.map +1 -0
  133. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.d.ts +9 -0
  134. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.d.ts.map +1 -0
  135. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.js +36 -0
  136. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.js.map +1 -0
  137. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.test.d.ts +2 -0
  138. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.test.d.ts.map +1 -0
  139. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.test.js +25 -0
  140. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.test.js.map +1 -0
  141. package/dist/src/backend/services/ratchet/service/ratchet.service.d.ts +42 -9
  142. package/dist/src/backend/services/ratchet/service/ratchet.service.d.ts.map +1 -1
  143. package/dist/src/backend/services/ratchet/service/ratchet.service.js +38 -105
  144. package/dist/src/backend/services/ratchet/service/ratchet.service.js.map +1 -1
  145. package/dist/src/backend/services/ratchet/service/ratchet.service.test.js +43 -0
  146. package/dist/src/backend/services/ratchet/service/ratchet.service.test.js.map +1 -1
  147. package/dist/src/backend/services/ratchet/service/reconciliation.service.d.ts +3 -2
  148. package/dist/src/backend/services/ratchet/service/reconciliation.service.d.ts.map +1 -1
  149. package/dist/src/backend/services/ratchet/service/reconciliation.service.js +43 -18
  150. package/dist/src/backend/services/ratchet/service/reconciliation.service.js.map +1 -1
  151. package/dist/src/backend/services/ratchet/service/reconciliation.service.test.js +50 -16
  152. package/dist/src/backend/services/ratchet/service/reconciliation.service.test.js.map +1 -1
  153. package/dist/src/backend/services/run-script/service/run-script-output-buffer.d.ts +16 -0
  154. package/dist/src/backend/services/run-script/service/run-script-output-buffer.d.ts.map +1 -0
  155. package/dist/src/backend/services/run-script/service/run-script-output-buffer.js +62 -0
  156. package/dist/src/backend/services/run-script/service/run-script-output-buffer.js.map +1 -0
  157. package/dist/src/backend/services/run-script/service/run-script-output-buffer.test.d.ts +2 -0
  158. package/dist/src/backend/services/run-script/service/run-script-output-buffer.test.d.ts.map +1 -0
  159. package/dist/src/backend/services/run-script/service/run-script-output-buffer.test.js +25 -0
  160. package/dist/src/backend/services/run-script/service/run-script-output-buffer.test.js.map +1 -0
  161. package/dist/src/backend/services/run-script/service/run-script-process-utils.d.ts +19 -0
  162. package/dist/src/backend/services/run-script/service/run-script-process-utils.d.ts.map +1 -0
  163. package/dist/src/backend/services/run-script/service/run-script-process-utils.js +105 -0
  164. package/dist/src/backend/services/run-script/service/run-script-process-utils.js.map +1 -0
  165. package/dist/src/backend/services/run-script/service/run-script.service.d.ts +3 -6
  166. package/dist/src/backend/services/run-script/service/run-script.service.d.ts.map +1 -1
  167. package/dist/src/backend/services/run-script/service/run-script.service.js +42 -202
  168. package/dist/src/backend/services/run-script/service/run-script.service.js.map +1 -1
  169. package/dist/src/backend/services/run-script/service/run-script.service.test.js +40 -28
  170. package/dist/src/backend/services/run-script/service/run-script.service.test.js.map +1 -1
  171. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.d.ts.map +1 -1
  172. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js +3 -386
  173. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js.map +1 -1
  174. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.d.ts +16 -0
  175. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.d.ts.map +1 -0
  176. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.js +153 -0
  177. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.js.map +1 -0
  178. package/dist/src/backend/services/session/service/acp/acp-session-config-options.d.ts +9 -0
  179. package/dist/src/backend/services/session/service/acp/acp-session-config-options.d.ts.map +1 -0
  180. package/dist/src/backend/services/session/service/acp/acp-session-config-options.js +162 -0
  181. package/dist/src/backend/services/session/service/acp/acp-session-config-options.js.map +1 -0
  182. package/dist/src/backend/services/session/service/acp/acp-stream-normalizer.d.ts +3 -0
  183. package/dist/src/backend/services/session/service/acp/acp-stream-normalizer.d.ts.map +1 -0
  184. package/dist/src/backend/services/session/service/acp/acp-stream-normalizer.js +81 -0
  185. package/dist/src/backend/services/session/service/acp/acp-stream-normalizer.js.map +1 -0
  186. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.d.ts +10 -0
  187. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.d.ts.map +1 -0
  188. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.js +162 -0
  189. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.js.map +1 -0
  190. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.d.ts +0 -7
  191. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.d.ts.map +1 -1
  192. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.js +19 -338
  193. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.js.map +1 -1
  194. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/plan-approval-handler.d.ts +23 -0
  195. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/plan-approval-handler.d.ts.map +1 -0
  196. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/plan-approval-handler.js +191 -0
  197. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/plan-approval-handler.js.map +1 -0
  198. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.d.ts.map +1 -1
  199. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.js +2 -12
  200. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.js.map +1 -1
  201. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.d.ts +19 -0
  202. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.d.ts.map +1 -0
  203. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.js +199 -0
  204. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.js.map +1 -0
  205. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.d.ts +5 -0
  206. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.d.ts.map +1 -0
  207. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.js +37 -0
  208. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.js.map +1 -0
  209. package/dist/src/backend/services/session/service/lifecycle/session-runtime-state.helpers.d.ts +3 -0
  210. package/dist/src/backend/services/session/service/lifecycle/session-runtime-state.helpers.d.ts.map +1 -0
  211. package/dist/src/backend/services/session/service/lifecycle/session-runtime-state.helpers.js +12 -0
  212. package/dist/src/backend/services/session/service/lifecycle/session-runtime-state.helpers.js.map +1 -0
  213. package/dist/src/backend/services/session/service/lifecycle/session.config.service.d.ts +1 -13
  214. package/dist/src/backend/services/session/service/lifecycle/session.config.service.d.ts.map +1 -1
  215. package/dist/src/backend/services/session/service/lifecycle/session.config.service.js +12 -210
  216. package/dist/src/backend/services/session/service/lifecycle/session.config.service.js.map +1 -1
  217. package/dist/src/backend/services/session/service/lifecycle/session.error-message.d.ts.map +1 -1
  218. package/dist/src/backend/services/session/service/lifecycle/session.error-message.js +43 -4
  219. package/dist/src/backend/services/session/service/lifecycle/session.error-message.js.map +1 -1
  220. package/dist/src/backend/services/session/service/lifecycle/session.error-message.test.js +11 -5
  221. package/dist/src/backend/services/session/service/lifecycle/session.error-message.test.js.map +1 -1
  222. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts +0 -1
  223. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts.map +1 -1
  224. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js +4 -45
  225. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js.map +1 -1
  226. package/dist/src/backend/services/session/service/lifecycle/session.service.d.ts +1 -0
  227. package/dist/src/backend/services/session/service/lifecycle/session.service.d.ts.map +1 -1
  228. package/dist/src/backend/services/session/service/lifecycle/session.service.js +26 -5
  229. package/dist/src/backend/services/session/service/lifecycle/session.service.js.map +1 -1
  230. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js +35 -0
  231. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js.map +1 -1
  232. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.d.ts.map +1 -1
  233. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.js +13 -2
  234. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.js.map +1 -1
  235. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js +37 -0
  236. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js.map +1 -1
  237. package/dist/src/backend/trpc/admin.trpc.d.ts +16 -2
  238. package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
  239. package/dist/src/backend/trpc/auto-iteration.trpc.d.ts +34 -6
  240. package/dist/src/backend/trpc/auto-iteration.trpc.d.ts.map +1 -1
  241. package/dist/src/backend/trpc/auto-iteration.trpc.js +32 -26
  242. package/dist/src/backend/trpc/auto-iteration.trpc.js.map +1 -1
  243. package/dist/src/backend/trpc/auto-iteration.trpc.test.d.ts +2 -0
  244. package/dist/src/backend/trpc/auto-iteration.trpc.test.d.ts.map +1 -0
  245. package/dist/src/backend/trpc/auto-iteration.trpc.test.js +118 -0
  246. package/dist/src/backend/trpc/auto-iteration.trpc.test.js.map +1 -0
  247. package/dist/src/backend/trpc/index.d.ts +70 -8
  248. package/dist/src/backend/trpc/index.d.ts.map +1 -1
  249. package/dist/src/backend/trpc/periodic-task.trpc.d.ts +19 -0
  250. package/dist/src/backend/trpc/periodic-task.trpc.d.ts.map +1 -1
  251. package/dist/src/backend/trpc/periodic-task.trpc.js +22 -0
  252. package/dist/src/backend/trpc/periodic-task.trpc.js.map +1 -1
  253. package/dist/src/backend/trpc/workspace.router.test.js +25 -0
  254. package/dist/src/backend/trpc/workspace.router.test.js.map +1 -1
  255. package/dist/src/backend/trpc/workspace.trpc.d.ts +1 -0
  256. package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
  257. package/dist/src/backend/trpc/workspace.trpc.js +2 -9
  258. package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
  259. package/dist/src/shared/schemas/auto-iteration.schema.d.ts +106 -0
  260. package/dist/src/shared/schemas/auto-iteration.schema.d.ts.map +1 -0
  261. package/dist/src/shared/schemas/auto-iteration.schema.js +60 -0
  262. package/dist/src/shared/schemas/auto-iteration.schema.js.map +1 -0
  263. package/dist/src/shared/schemas/export-data.schema.d.ts +16 -2
  264. package/dist/src/shared/schemas/export-data.schema.d.ts.map +1 -1
  265. package/dist/src/shared/schemas/export-data.schema.js +2 -1
  266. package/dist/src/shared/schemas/export-data.schema.js.map +1 -1
  267. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  268. package/package.json +5 -3
  269. package/prisma/migrations/20260519122959_add_periodic_task_scheduled_time/migration.sql +3 -0
  270. package/prisma/migrations/20260520120000_add_periodic_task_scheduled_day_of_month/migration.sql +10 -0
  271. package/prisma/schema.prisma +6 -3
  272. package/dist/client/assets/channel-D2ho7Eza.js +0 -1
  273. package/dist/client/assets/classDiagram-4FO5ZUOK-ZExoOExU.js +0 -1
  274. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-ZExoOExU.js +0 -1
  275. package/dist/client/assets/index-IJ_NNlgJ.css +0 -1
  276. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-ChnnLckY.js +0 -1
@@ -2,37 +2,45 @@ import { TRPCError } from '@trpc/server';
2
2
  import { z } from 'zod';
3
3
  import { autoIterationService, insightsService, logbookService, } from '../../backend/services/auto-iteration/index.js';
4
4
  import { workspaceDataService } from '../../backend/services/workspace/index.js';
5
+ import { autoIterationConfigSchema, autoIterationProgressSchema, } from '../../shared/schemas/auto-iteration.schema.js';
5
6
  import { publicProcedure, router } from './trpc.js';
6
- const autoIterationConfigSchema = z.object({
7
- testCommand: z.string().min(1),
8
- targetDescription: z.string().min(1),
9
- maxIterations: z.number().int().min(0).default(25),
10
- testTimeoutSeconds: z.number().int().min(1).default(600),
11
- sessionRecycleInterval: z.number().int().min(1).default(10),
12
- });
13
- async function handleResumeFromFailed(workspace, workspaceId) {
14
- if (!workspace.autoIterationConfig) {
7
+ function parseAutoIterationConfig(value) {
8
+ const parsed = autoIterationConfigSchema.safeParse(value);
9
+ if (!parsed.success) {
15
10
  throw new TRPCError({
16
11
  code: 'BAD_REQUEST',
17
- message: 'Workspace has no auto-iteration config',
12
+ message: `Invalid auto-iteration config: ${parsed.error.message}`,
18
13
  });
19
14
  }
20
- const configParsed = autoIterationConfigSchema.safeParse(workspace.autoIterationConfig);
21
- if (!configParsed.success) {
15
+ return parsed.data;
16
+ }
17
+ function parseAutoIterationProgress(value) {
18
+ const parsed = autoIterationProgressSchema.safeParse(value);
19
+ if (!parsed.success) {
22
20
  throw new TRPCError({
23
21
  code: 'BAD_REQUEST',
24
- message: `Invalid auto-iteration config: ${configParsed.error.message}`,
22
+ message: `Invalid auto-iteration progress: ${parsed.error.message}`,
25
23
  });
26
24
  }
27
- const progress = workspace.autoIterationProgress;
28
- if (!progress) {
25
+ return parsed.data;
26
+ }
27
+ async function handleResumeFromFailed(workspace, workspaceId) {
28
+ if (!workspace.autoIterationConfig) {
29
+ throw new TRPCError({
30
+ code: 'BAD_REQUEST',
31
+ message: 'Workspace has no auto-iteration config',
32
+ });
33
+ }
34
+ const config = parseAutoIterationConfig(workspace.autoIterationConfig);
35
+ if (!workspace.autoIterationProgress) {
29
36
  throw new TRPCError({
30
37
  code: 'BAD_REQUEST',
31
38
  message: 'No progress data to resume from — use restart instead',
32
39
  });
33
40
  }
41
+ const progress = parseAutoIterationProgress(workspace.autoIterationProgress);
34
42
  try {
35
- await autoIterationService.resumeFromFailed(workspaceId, configParsed.data, progress);
43
+ await autoIterationService.resumeFromFailed(workspaceId, config, progress);
36
44
  }
37
45
  catch (err) {
38
46
  if (err instanceof Error && err.message.includes('already running')) {
@@ -67,15 +75,9 @@ export const autoIterationRouter = router({
67
75
  message: 'Auto-iteration is already running',
68
76
  });
69
77
  }
70
- const configParsed = autoIterationConfigSchema.safeParse(workspace.autoIterationConfig);
71
- if (!configParsed.success) {
72
- throw new TRPCError({
73
- code: 'BAD_REQUEST',
74
- message: `Invalid auto-iteration config: ${configParsed.error.message}`,
75
- });
76
- }
78
+ const config = parseAutoIterationConfig(workspace.autoIterationConfig);
77
79
  try {
78
- await autoIterationService.start(input.workspaceId, configParsed.data);
80
+ await autoIterationService.start(input.workspaceId, config);
79
81
  }
80
82
  catch (err) {
81
83
  if (err instanceof Error && err.message.includes('already running')) {
@@ -150,8 +152,12 @@ export const autoIterationRouter = router({
150
152
  }
151
153
  return {
152
154
  status: workspace.autoIterationStatus ?? null,
153
- config: workspace.autoIterationConfig ?? null,
154
- progress: workspace.autoIterationProgress ?? null,
155
+ config: workspace.autoIterationConfig
156
+ ? parseAutoIterationConfig(workspace.autoIterationConfig)
157
+ : null,
158
+ progress: workspace.autoIterationProgress
159
+ ? parseAutoIterationProgress(workspace.autoIterationProgress)
160
+ : null,
155
161
  };
156
162
  }),
157
163
  getLogbook: publicProcedure
@@ -1 +1 @@
1
- {"version":3,"file":"auto-iteration.trpc.js","sourceRoot":"","sources":["../../../../src/backend/trpc/auto-iteration.trpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-iteration.trpc.js","sourceRoot":"","sources":["../../../../src/backend/trpc/auto-iteration.trpc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=auto-iteration.trpc.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-iteration.trpc.test.d.ts","sourceRoot":"","sources":["../../../../src/backend/trpc/auto-iteration.trpc.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,118 @@
1
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
2
+ const mockAutoIterationService = vi.hoisted(() => ({
3
+ start: vi.fn(),
4
+ pause: vi.fn(),
5
+ resume: vi.fn(),
6
+ resumeFromFailed: vi.fn(),
7
+ stop: vi.fn(),
8
+ getStatus: vi.fn(),
9
+ isRunning: vi.fn(),
10
+ }));
11
+ const mockWorkspaceDataService = vi.hoisted(() => ({
12
+ findById: vi.fn(),
13
+ }));
14
+ vi.mock('@/backend/services/auto-iteration', () => ({
15
+ autoIterationService: mockAutoIterationService,
16
+ insightsService: { read: vi.fn() },
17
+ logbookService: { read: vi.fn() },
18
+ }));
19
+ vi.mock('@/backend/services/workspace', () => ({
20
+ workspaceDataService: mockWorkspaceDataService,
21
+ }));
22
+ import { autoIterationRouter } from './auto-iteration.trpc.js';
23
+ const validProgress = {
24
+ currentIteration: 2,
25
+ baselineMetricSummary: '10 tests passing',
26
+ currentMetricSummary: '12 tests passing',
27
+ acceptedCount: 1,
28
+ rejectedRegressionCount: 0,
29
+ rejectedCritiqueCount: 1,
30
+ crashedCount: 0,
31
+ sessionRecycleCount: 0,
32
+ startedAt: '2026-05-17T12:00:00.000Z',
33
+ lastIterationAt: null,
34
+ currentPhase: 'idle',
35
+ lastTestOutput: 'ok',
36
+ };
37
+ function createCaller() {
38
+ return autoIterationRouter.createCaller({ appContext: {} });
39
+ }
40
+ describe('autoIterationRouter', () => {
41
+ beforeEach(() => {
42
+ vi.clearAllMocks();
43
+ mockAutoIterationService.getStatus.mockReturnValue(null);
44
+ mockAutoIterationService.isRunning.mockReturnValue(false);
45
+ mockAutoIterationService.start.mockResolvedValue(undefined);
46
+ mockAutoIterationService.resumeFromFailed.mockResolvedValue(undefined);
47
+ });
48
+ it('rejects malformed persisted config before starting', async () => {
49
+ const caller = createCaller();
50
+ mockWorkspaceDataService.findById.mockResolvedValue({
51
+ id: 'ws-1',
52
+ mode: 'AUTO_ITERATION',
53
+ autoIterationConfig: {
54
+ testCommand: '',
55
+ targetDescription: 'Improve coverage',
56
+ },
57
+ });
58
+ await expect(caller.start({ workspaceId: 'ws-1' })).rejects.toThrow('Invalid auto-iteration config');
59
+ expect(mockAutoIterationService.start).not.toHaveBeenCalled();
60
+ });
61
+ it('defaults persisted config before starting', async () => {
62
+ const caller = createCaller();
63
+ mockWorkspaceDataService.findById.mockResolvedValue({
64
+ id: 'ws-1',
65
+ mode: 'AUTO_ITERATION',
66
+ autoIterationConfig: {
67
+ testCommand: 'pnpm test',
68
+ targetDescription: 'Improve coverage',
69
+ },
70
+ });
71
+ await expect(caller.start({ workspaceId: 'ws-1' })).resolves.toEqual({ success: true });
72
+ expect(mockAutoIterationService.start).toHaveBeenCalledWith('ws-1', {
73
+ testCommand: 'pnpm test',
74
+ targetDescription: 'Improve coverage',
75
+ maxIterations: 25,
76
+ testTimeoutSeconds: 600,
77
+ sessionRecycleInterval: 10,
78
+ });
79
+ });
80
+ it('rejects malformed progress before failed resume', async () => {
81
+ const caller = createCaller();
82
+ mockWorkspaceDataService.findById.mockResolvedValue({
83
+ id: 'ws-1',
84
+ autoIterationStatus: 'FAILED',
85
+ autoIterationConfig: {
86
+ testCommand: 'pnpm test',
87
+ targetDescription: 'Improve coverage',
88
+ },
89
+ autoIterationProgress: { currentIteration: 2 },
90
+ });
91
+ await expect(caller.resume({ workspaceId: 'ws-1' })).rejects.toThrow('Invalid auto-iteration progress');
92
+ expect(mockAutoIterationService.resumeFromFailed).not.toHaveBeenCalled();
93
+ });
94
+ it('parses persisted snapshot data in getStatus fallback', async () => {
95
+ const caller = createCaller();
96
+ mockWorkspaceDataService.findById.mockResolvedValue({
97
+ id: 'ws-1',
98
+ autoIterationStatus: 'FAILED',
99
+ autoIterationConfig: {
100
+ testCommand: 'pnpm test',
101
+ targetDescription: 'Improve coverage',
102
+ },
103
+ autoIterationProgress: validProgress,
104
+ });
105
+ await expect(caller.getStatus({ workspaceId: 'ws-1' })).resolves.toEqual({
106
+ status: 'FAILED',
107
+ config: {
108
+ testCommand: 'pnpm test',
109
+ targetDescription: 'Improve coverage',
110
+ maxIterations: 25,
111
+ testTimeoutSeconds: 600,
112
+ sessionRecycleInterval: 10,
113
+ },
114
+ progress: validProgress,
115
+ });
116
+ });
117
+ });
118
+ //# sourceMappingURL=auto-iteration.trpc.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-iteration.trpc.test.js","sourceRoot":"","sources":["../../../../src/backend/trpc/auto-iteration.trpc.test.ts"],"names":[],"mappings":"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"}
@@ -652,7 +652,14 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
652
652
  runScriptStartedAt: string | null;
653
653
  runScriptStatus: "FAILED" | "IDLE" | "RUNNING" | "COMPLETED" | "STARTING" | "STOPPING";
654
654
  mode: "STANDARD" | "AUTO_ITERATION";
655
- autoIterationConfig: unknown;
655
+ autoIterationConfig: {
656
+ testCommand: string;
657
+ targetDescription: string;
658
+ maxIterations: number;
659
+ testTimeoutSeconds: number;
660
+ sessionRecycleInterval: number;
661
+ promptTimeoutSeconds?: number | undefined;
662
+ } | null;
656
663
  prUrl: string | null;
657
664
  githubIssueNumber: number | null;
658
665
  githubIssueUrl: string | null;
@@ -798,7 +805,14 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
798
805
  createdAt: string;
799
806
  updatedAt: string;
800
807
  mode?: "STANDARD" | "AUTO_ITERATION" | undefined;
801
- autoIterationConfig?: unknown;
808
+ autoIterationConfig?: {
809
+ testCommand: string;
810
+ targetDescription: string;
811
+ maxIterations?: number | undefined;
812
+ testTimeoutSeconds?: number | undefined;
813
+ sessionRecycleInterval?: number | undefined;
814
+ promptTimeoutSeconds?: number | undefined;
815
+ } | null | undefined;
802
816
  }[];
803
817
  agentSessions: {
804
818
  id: string;
@@ -1616,6 +1630,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
1616
1630
  maxIterations?: number | undefined;
1617
1631
  testTimeoutSeconds?: number | undefined;
1618
1632
  sessionRecycleInterval?: number | undefined;
1633
+ promptTimeoutSeconds?: number | undefined;
1619
1634
  } | undefined;
1620
1635
  } | {
1621
1636
  type: "RESUME_BRANCH";
@@ -3148,18 +3163,46 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3148
3163
  input: {
3149
3164
  workspaceId: string;
3150
3165
  };
3151
- output: import("../services/auto-iteration/index.js").AutoIterationSnapshot | {
3152
- status: import("../../../prisma/generated/enums.js").AutoIterationStatus | null;
3153
- config: string | number | boolean | import("@prisma/client/runtime/client").JsonObject | import("@prisma/client/runtime/client").JsonArray | null;
3154
- progress: string | number | boolean | import("@prisma/client/runtime/client").JsonObject | import("@prisma/client/runtime/client").JsonArray | null;
3155
- };
3166
+ output: import("../services/auto-iteration/index.js").AutoIterationSnapshot;
3156
3167
  meta: object;
3157
3168
  }>;
3158
3169
  getLogbook: import("@trpc/server").TRPCQueryProcedure<{
3159
3170
  input: {
3160
3171
  workspaceId: string;
3161
3172
  };
3162
- output: import("../services/auto-iteration/index.js").AgentLogbook | null;
3173
+ output: {
3174
+ workspaceId: string;
3175
+ config: {
3176
+ testCommand: string;
3177
+ targetDescription: string;
3178
+ maxIterations: number;
3179
+ testTimeoutSeconds: number;
3180
+ sessionRecycleInterval: number;
3181
+ promptTimeoutSeconds?: number | undefined;
3182
+ };
3183
+ baseline: {
3184
+ testOutput: string;
3185
+ metricSummary: string;
3186
+ evaluatedAt: string;
3187
+ };
3188
+ iterations: {
3189
+ iteration: number;
3190
+ startedAt: string;
3191
+ completedAt: string;
3192
+ status: "crashed" | "accepted" | "rejected_regression" | "rejected_critique";
3193
+ changeDescription: string;
3194
+ commitSha: string;
3195
+ commitReverted: boolean;
3196
+ metricBefore: string;
3197
+ metricAfter: string | null;
3198
+ testOutput: string;
3199
+ metricImproved: boolean | null;
3200
+ crashError: string | null;
3201
+ fixAttempts: number;
3202
+ critiqueNotes: string | null;
3203
+ critiqueApproved: boolean | null;
3204
+ }[];
3205
+ } | null;
3163
3206
  meta: object;
3164
3207
  }>;
3165
3208
  getInsights: import("@trpc/server").TRPCQueryProcedure<{
@@ -3198,6 +3241,9 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3198
3241
  projectId: string;
3199
3242
  prompt: string;
3200
3243
  cadence: import("../../../prisma/generated/enums.js").PeriodicTaskCadence;
3244
+ scheduledTime: string | null;
3245
+ timezone: string | null;
3246
+ scheduledDayOfMonth: number | null;
3201
3247
  isEnabled: boolean;
3202
3248
  nextRunAt: Date;
3203
3249
  lastRunAt: Date | null;
@@ -3218,6 +3264,9 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3218
3264
  projectId: string;
3219
3265
  prompt: string;
3220
3266
  cadence: import("../../../prisma/generated/enums.js").PeriodicTaskCadence;
3267
+ scheduledTime: string | null;
3268
+ timezone: string | null;
3269
+ scheduledDayOfMonth: number | null;
3221
3270
  isEnabled: boolean;
3222
3271
  nextRunAt: Date;
3223
3272
  lastRunAt: Date | null;
@@ -3232,6 +3281,8 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3232
3281
  name: string;
3233
3282
  prompt: string;
3234
3283
  cadence: "EVERY_MINUTE" | "EVERY_FIVE_MINUTES" | "DAILY" | "WEEKLY" | "MONTHLY";
3284
+ scheduledTime?: string | null | undefined;
3285
+ timezone?: string | null | undefined;
3235
3286
  };
3236
3287
  output: {
3237
3288
  name: string;
@@ -3241,6 +3292,9 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3241
3292
  projectId: string;
3242
3293
  prompt: string;
3243
3294
  cadence: import("../../../prisma/generated/enums.js").PeriodicTaskCadence;
3295
+ scheduledTime: string | null;
3296
+ timezone: string | null;
3297
+ scheduledDayOfMonth: number | null;
3244
3298
  isEnabled: boolean;
3245
3299
  nextRunAt: Date;
3246
3300
  lastRunAt: Date | null;
@@ -3253,6 +3307,8 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3253
3307
  name?: string | undefined;
3254
3308
  prompt?: string | undefined;
3255
3309
  cadence?: "EVERY_MINUTE" | "EVERY_FIVE_MINUTES" | "DAILY" | "WEEKLY" | "MONTHLY" | undefined;
3310
+ scheduledTime?: string | null | undefined;
3311
+ timezone?: string | null | undefined;
3256
3312
  };
3257
3313
  output: {
3258
3314
  name: string;
@@ -3262,6 +3318,9 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3262
3318
  projectId: string;
3263
3319
  prompt: string;
3264
3320
  cadence: import("../../../prisma/generated/enums.js").PeriodicTaskCadence;
3321
+ scheduledTime: string | null;
3322
+ timezone: string | null;
3323
+ scheduledDayOfMonth: number | null;
3265
3324
  isEnabled: boolean;
3266
3325
  nextRunAt: Date;
3267
3326
  lastRunAt: Date | null;
@@ -3290,6 +3349,9 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3290
3349
  projectId: string;
3291
3350
  prompt: string;
3292
3351
  cadence: import("../../../prisma/generated/enums.js").PeriodicTaskCadence;
3352
+ scheduledTime: string | null;
3353
+ timezone: string | null;
3354
+ scheduledDayOfMonth: number | null;
3293
3355
  isEnabled: boolean;
3294
3356
  nextRunAt: Date;
3295
3357
  lastRunAt: Date | null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/trpc/index.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAapB,CAAC;AAGH,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/trpc/index.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAapB,CAAC;AAGH,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC"}
@@ -16,6 +16,9 @@ export declare const periodicTaskRouter: import("@trpc/server").TRPCBuiltRouter<
16
16
  projectId: string;
17
17
  prompt: string;
18
18
  cadence: import("../../../prisma/generated/enums.js").PeriodicTaskCadence;
19
+ scheduledTime: string | null;
20
+ timezone: string | null;
21
+ scheduledDayOfMonth: number | null;
19
22
  isEnabled: boolean;
20
23
  nextRunAt: Date;
21
24
  lastRunAt: Date | null;
@@ -36,6 +39,9 @@ export declare const periodicTaskRouter: import("@trpc/server").TRPCBuiltRouter<
36
39
  projectId: string;
37
40
  prompt: string;
38
41
  cadence: import("../../../prisma/generated/enums.js").PeriodicTaskCadence;
42
+ scheduledTime: string | null;
43
+ timezone: string | null;
44
+ scheduledDayOfMonth: number | null;
39
45
  isEnabled: boolean;
40
46
  nextRunAt: Date;
41
47
  lastRunAt: Date | null;
@@ -50,6 +56,8 @@ export declare const periodicTaskRouter: import("@trpc/server").TRPCBuiltRouter<
50
56
  name: string;
51
57
  prompt: string;
52
58
  cadence: "EVERY_MINUTE" | "EVERY_FIVE_MINUTES" | "DAILY" | "WEEKLY" | "MONTHLY";
59
+ scheduledTime?: string | null | undefined;
60
+ timezone?: string | null | undefined;
53
61
  };
54
62
  output: {
55
63
  name: string;
@@ -59,6 +67,9 @@ export declare const periodicTaskRouter: import("@trpc/server").TRPCBuiltRouter<
59
67
  projectId: string;
60
68
  prompt: string;
61
69
  cadence: import("../../../prisma/generated/enums.js").PeriodicTaskCadence;
70
+ scheduledTime: string | null;
71
+ timezone: string | null;
72
+ scheduledDayOfMonth: number | null;
62
73
  isEnabled: boolean;
63
74
  nextRunAt: Date;
64
75
  lastRunAt: Date | null;
@@ -71,6 +82,8 @@ export declare const periodicTaskRouter: import("@trpc/server").TRPCBuiltRouter<
71
82
  name?: string | undefined;
72
83
  prompt?: string | undefined;
73
84
  cadence?: "EVERY_MINUTE" | "EVERY_FIVE_MINUTES" | "DAILY" | "WEEKLY" | "MONTHLY" | undefined;
85
+ scheduledTime?: string | null | undefined;
86
+ timezone?: string | null | undefined;
74
87
  };
75
88
  output: {
76
89
  name: string;
@@ -80,6 +93,9 @@ export declare const periodicTaskRouter: import("@trpc/server").TRPCBuiltRouter<
80
93
  projectId: string;
81
94
  prompt: string;
82
95
  cadence: import("../../../prisma/generated/enums.js").PeriodicTaskCadence;
96
+ scheduledTime: string | null;
97
+ timezone: string | null;
98
+ scheduledDayOfMonth: number | null;
83
99
  isEnabled: boolean;
84
100
  nextRunAt: Date;
85
101
  lastRunAt: Date | null;
@@ -108,6 +124,9 @@ export declare const periodicTaskRouter: import("@trpc/server").TRPCBuiltRouter<
108
124
  projectId: string;
109
125
  prompt: string;
110
126
  cadence: import("../../../prisma/generated/enums.js").PeriodicTaskCadence;
127
+ scheduledTime: string | null;
128
+ timezone: string | null;
129
+ scheduledDayOfMonth: number | null;
111
130
  isEnabled: boolean;
112
131
  nextRunAt: Date;
113
132
  lastRunAt: Date | null;
@@ -1 +1 @@
1
- {"version":3,"file":"periodic-task.trpc.d.ts","sourceRoot":"","sources":["../../../../src/backend/trpc/periodic-task.trpc.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkE7B,CAAC"}
1
+ {"version":3,"file":"periodic-task.trpc.d.ts","sourceRoot":"","sources":["../../../../src/backend/trpc/periodic-task.trpc.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsE7B,CAAC"}
@@ -2,6 +2,24 @@ import { TRPCError } from '@trpc/server';
2
2
  import { z } from 'zod';
3
3
  import { periodicTaskAccessor } from '../../backend/services/periodic-task/index.js';
4
4
  import { publicProcedure, router } from './trpc.js';
5
+ const scheduledTimeSchema = z
6
+ .string()
7
+ .regex(/^([01]\d|2[0-3]):[0-5]\d$/, 'Must be a valid HH:MM time (00:00–23:59)')
8
+ .nullable()
9
+ .optional();
10
+ const timezoneSchema = z
11
+ .string()
12
+ .refine((tz) => {
13
+ try {
14
+ Intl.DateTimeFormat(undefined, { timeZone: tz });
15
+ return true;
16
+ }
17
+ catch {
18
+ return false;
19
+ }
20
+ }, { message: 'Must be a valid IANA timezone (e.g. America/New_York)' })
21
+ .nullable()
22
+ .optional();
5
23
  export const periodicTaskRouter = router({
6
24
  list: publicProcedure.input(z.object({ projectId: z.string() })).query(({ input }) => {
7
25
  return periodicTaskAccessor.listByProject(input.projectId);
@@ -19,6 +37,8 @@ export const periodicTaskRouter = router({
19
37
  name: z.string().min(1),
20
38
  prompt: z.string().min(1),
21
39
  cadence: z.enum(['EVERY_MINUTE', 'EVERY_FIVE_MINUTES', 'DAILY', 'WEEKLY', 'MONTHLY']),
40
+ scheduledTime: scheduledTimeSchema,
41
+ timezone: timezoneSchema,
22
42
  }))
23
43
  .mutation(({ input }) => {
24
44
  return periodicTaskAccessor.create(input);
@@ -31,6 +51,8 @@ export const periodicTaskRouter = router({
31
51
  cadence: z
32
52
  .enum(['EVERY_MINUTE', 'EVERY_FIVE_MINUTES', 'DAILY', 'WEEKLY', 'MONTHLY'])
33
53
  .optional(),
54
+ scheduledTime: scheduledTimeSchema,
55
+ timezone: timezoneSchema,
34
56
  }))
35
57
  .mutation(({ input }) => {
36
58
  const { id, ...data } = input;
@@ -1 +1 @@
1
- {"version":3,"file":"periodic-task.trpc.js","sourceRoot":"","sources":["../../../../src/backend/trpc/periodic-task.trpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"periodic-task.trpc.js","sourceRoot":"","sources":["../../../../src/backend/trpc/periodic-task.trpc.ts"],"names":[],"mappings":"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"}
@@ -243,6 +243,31 @@ describe('workspaceRouter', () => {
243
243
  startupModePreset: 'plan',
244
244
  }));
245
245
  });
246
+ it('defaults auto-iteration config before workspace creation', async () => {
247
+ const { caller } = createCaller();
248
+ mockWorkspaceCreationCreate.mockResolvedValue({ id: 'w-created' });
249
+ await caller.create({
250
+ type: 'MANUAL',
251
+ projectId: 'p1',
252
+ name: 'Auto Iteration Workspace',
253
+ mode: 'AUTO_ITERATION',
254
+ autoIterationConfig: {
255
+ testCommand: 'pnpm test',
256
+ targetDescription: 'Improve coverage',
257
+ },
258
+ });
259
+ expect(mockWorkspaceCreationCreate).toHaveBeenCalledWith(expect.objectContaining({
260
+ type: 'MANUAL',
261
+ mode: 'AUTO_ITERATION',
262
+ autoIterationConfig: {
263
+ testCommand: 'pnpm test',
264
+ targetDescription: 'Improve coverage',
265
+ maxIterations: 25,
266
+ testTimeoutSeconds: 600,
267
+ sessionRecycleInterval: 10,
268
+ },
269
+ }));
270
+ });
246
271
  it('passes startup mode preset through GitHub issue workspace creation', async () => {
247
272
  const { caller } = createCaller();
248
273
  mockWorkspaceCreationCreate.mockResolvedValue({ id: 'w-created' });