factory-factory 0.4.8 → 0.4.9

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 (425) hide show
  1. package/README.md +66 -29
  2. package/dist/client/assets/{Archive.es-CGY-HOtI.js → Archive.es-moH8rDRO.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft.es-BkuVunBb.js → ArrowLeft.es-CVl_zVBC.js} +1 -1
  4. package/dist/client/assets/{abnfDiagram-VCTEODGH-B2jWIJ_F.js → abnfDiagram-VCTEODGH-DzuBdUSN.js} +1 -1
  5. package/dist/client/assets/admin-page-CAsPxzW9.js +1 -0
  6. package/dist/client/assets/{alert-PePzkOCj.js → alert-2CAe526X.js} +1 -1
  7. package/dist/client/assets/{alert-dialog-BgqiS2Mp.js → alert-dialog-8vhMuR-k.js} +1 -1
  8. package/dist/client/assets/architecture-7GRP2DOG-Bcwjoi8B.js +1 -0
  9. package/dist/client/assets/{architectureDiagram-5GKGNRK7-CV8YjPRr.js → architectureDiagram-5GKGNRK7-CeuoQvaW.js} +1 -1
  10. package/dist/client/assets/{badge-BESbZ2wy.js → badge-CoDH1rER.js} +1 -1
  11. package/dist/client/assets/{blockDiagram-I7D4REHJ-BdQWAITV.js → blockDiagram-I7D4REHJ-BY92gQgN.js} +1 -1
  12. package/dist/client/assets/{c4Diagram-7LVT6UL2-Dp1ETdzU.js → c4Diagram-7LVT6UL2-D5TNBYXh.js} +1 -1
  13. package/dist/client/assets/channel-NEbtzeVB.js +1 -0
  14. package/dist/client/assets/{chunk-4HAMMTFA-BXRLulFZ.js → chunk-4HAMMTFA-DBbX-wzu.js} +1 -1
  15. package/dist/client/assets/{chunk-75Z2AOVW-FUHgKXYa.js → chunk-75Z2AOVW-962-yyBD.js} +1 -1
  16. package/dist/client/assets/{chunk-DU6HZSFF-nxkO_ute.js → chunk-DU6HZSFF-CHHMX1CR.js} +1 -1
  17. package/dist/client/assets/{chunk-F27PBJKO-Dal8QxK3.js → chunk-F27PBJKO-BOnYAGjZ.js} +1 -1
  18. package/dist/client/assets/{chunk-GMAD6QVW-B_VbYl2S.js → chunk-GMAD6QVW-DQF31PdR.js} +1 -1
  19. package/dist/client/assets/{chunk-GVQU2GXP-DobNOfAy.js → chunk-GVQU2GXP-rruJzn36.js} +1 -1
  20. package/dist/client/assets/{chunk-IMKFNOWR-D_P1eTAa.js → chunk-IMKFNOWR-GIKO0MCA.js} +1 -1
  21. package/dist/client/assets/{chunk-L3NEJ4N5-CZpV3_Q0.js → chunk-L3NEJ4N5-USlKRxmU.js} +1 -1
  22. package/dist/client/assets/{chunk-OSK3NFVY-e3uqzkQq.js → chunk-OSK3NFVY-DYQeYWNP.js} +1 -1
  23. package/dist/client/assets/{chunk-P2QGCYS3-B1FUAlmg.js → chunk-P2QGCYS3-SDkZ9hQX.js} +1 -1
  24. package/dist/client/assets/{chunk-POPQ4Y6H-BKVSxG-w.js → chunk-POPQ4Y6H-bdnFdIMc.js} +1 -1
  25. package/dist/client/assets/{chunk-PWAF6VOD-DQe8ztwz.js → chunk-PWAF6VOD-DuKrEmQw.js} +1 -1
  26. package/dist/client/assets/{chunk-SHT3W25Y-D8Ie2IK_.js → chunk-SHT3W25Y-BnWDS29f.js} +1 -1
  27. package/dist/client/assets/{chunk-SVP7TREG-_l4ZFWYL.js → chunk-SVP7TREG-BqyZjR36.js} +1 -1
  28. package/dist/client/assets/{chunk-TICWLB2K-BfcOBlR4.js → chunk-TICWLB2K-ZCb3dlre.js} +1 -1
  29. package/dist/client/assets/{ci-status-ChifTKM1.js → ci-status-cs76P3se.js} +1 -1
  30. package/dist/client/assets/classDiagram-ZZMXUADV-zE_E4kYq.js +1 -0
  31. package/dist/client/assets/classDiagram-v2-VYDZK3BY-zE_E4kYq.js +1 -0
  32. package/dist/client/assets/components-CoS_rGt2.js +1 -0
  33. package/dist/client/assets/{confirm-dialog-BAfboPjS.js → confirm-dialog-CfvO9f42.js} +1 -1
  34. package/dist/client/assets/{core-DW1Rn28Z.js → core-DW3tuXQ3.js} +1 -1
  35. package/dist/client/assets/{cynefin-OW5HDTMX-B7JP5WcM.js → cynefin-OW5HDTMX-Ci2WypGa.js} +1 -1
  36. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-B5jcLvUi.js → cynefinDiagram-5FMLGOSQ-CGea7wa2.js} +1 -1
  37. package/dist/client/assets/{dagre-GXQ25YYZ-CFkt7lun.js → dagre-GXQ25YYZ-CJcHs09G.js} +1 -1
  38. package/dist/client/assets/data-import-button-cvKmYZJe.js +6 -0
  39. package/dist/client/assets/detail-C3U9ED1b.js +1 -0
  40. package/dist/client/assets/{diagram-S7CK7UJ4-DpT9R2w0.js → diagram-S7CK7UJ4-Drsfjeco.js} +1 -1
  41. package/dist/client/assets/{diagram-UQ7AKVKN-DAy1Fpaf.js → diagram-UQ7AKVKN-0SrBP_3E.js} +1 -1
  42. package/dist/client/assets/{diagram-VSXAHHWV-Co-NFSf3.js → diagram-VSXAHHWV-DB2rqHgv.js} +1 -1
  43. package/dist/client/assets/{diagram-VX7I27RA-CaIWof2e.js → diagram-VX7I27RA-B2y3VQbR.js} +1 -1
  44. package/dist/client/assets/{diagram-Z3DM3KII-BpcVyNtl.js → diagram-Z3DM3KII-D63_zfy5.js} +1 -1
  45. package/dist/client/assets/diff-highlight.worker-FEJq0yPv.js +60 -0
  46. package/dist/client/assets/dist-BO6Gz-vk.js +1 -0
  47. package/dist/client/assets/{dist-Dtgf0TOg.js → dist-DGw3MClt.js} +1 -1
  48. package/dist/client/assets/{ebnfDiagram-PWID7BFC-CS26Rt0p.js → ebnfDiagram-PWID7BFC-8gEK-ifx.js} +1 -1
  49. package/dist/client/assets/{en-US-SlQiGO_s.js → en-US-C-x19js7.js} +1 -1
  50. package/dist/client/assets/{erDiagram-RLTQ6QDP-DsdFXV4-.js → erDiagram-RLTQ6QDP-B2CcHHg7.js} +1 -1
  51. package/dist/client/assets/eventmodeling-NTZA5JFV-DqUwwD9w.js +1 -0
  52. package/dist/client/assets/{factory-config-scripts-BoDNVi6q.js → factory-config-scripts-C2BfO5od.js} +1 -1
  53. package/dist/client/assets/flowDiagram-HODETNUW-DCZkaOsj.js +1 -0
  54. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-D_b7Bn-J.js → ganttDiagram-EL5Y4UJY-B_Y3HJTL.js} +1 -1
  55. package/dist/client/assets/{gitGraph-4MIJSDKK-De5ASUSY.js → gitGraph-4MIJSDKK-DBd1UxTm.js} +1 -1
  56. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-BHMJvUNJ.js → gitGraphDiagram-WWUBYQGX-CrdKibnu.js} +1 -1
  57. package/dist/client/assets/{home-DjDt91tt.js → home-DRzNpm0E.js} +1 -1
  58. package/dist/client/assets/hooks-3rxtNHRh.js +1 -0
  59. package/dist/client/assets/index-BJo4hZ8z.js +10 -0
  60. package/dist/client/assets/{info-A6RAGUB7-DNiM6MW6.js → info-A6RAGUB7-CCMRmQ2H.js} +1 -1
  61. package/dist/client/assets/{infoDiagram-27XIBGKW-4g58w-zo.js → infoDiagram-27XIBGKW-DO-IhKUM.js} +1 -1
  62. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-DO7_eJ6Q.js → ishikawaDiagram-5VMMS53U-KejlLQ1k.js} +1 -1
  63. package/dist/client/assets/{journeyDiagram-3NMN7TZE-6CJtdIGo.js → journeyDiagram-3NMN7TZE-DemWKqD6.js} +1 -1
  64. package/dist/client/assets/jsx-runtime-BNakU3Ej.js +1 -0
  65. package/dist/client/assets/{kanban-definition-UXKFOSKX-D211MzXr.js → kanban-definition-UXKFOSKX-uRffHAE9.js} +1 -1
  66. package/dist/client/assets/{label-CI3jpwv-.js → label-ANA2Lfpk.js} +1 -1
  67. package/dist/client/assets/lib-CHy_7XQu.js +1 -0
  68. package/dist/client/assets/{line-DotOMT4o.js → line-CfCBYCoS.js} +1 -1
  69. package/dist/client/assets/list-C3P6JbyU.js +30 -0
  70. package/dist/client/assets/{list-bUzF8ozJ.js → list-oJCufmEX.js} +1 -1
  71. package/dist/client/assets/{logs-CjKXHkrB.js → logs-zb2la033.js} +1 -1
  72. package/dist/client/assets/{mermaid-diagram-CESNj6Ju.js → mermaid-diagram-kbWN558y.js} +4 -4
  73. package/dist/client/assets/{mermaid-parser.core-DK0kgowR.js → mermaid-parser.core-CpkwJ-8U.js} +3 -3
  74. package/dist/client/assets/{mindmap-definition-YA3MSWOX-DF5ewLZ5.js → mindmap-definition-YA3MSWOX-DYYi_9Si.js} +1 -1
  75. package/dist/client/assets/{mobile-baseline-B0PakiKB.js → mobile-baseline-BVS3GXLz.js} +1 -1
  76. package/dist/client/assets/new-BiEmR60A.js +1 -0
  77. package/dist/client/assets/new-CcQm3ES8.js +1 -0
  78. package/dist/client/assets/{packet-AYTQ26CC-C4EHUAzU.js → packet-AYTQ26CC-kvNXQn-j.js} +1 -1
  79. package/dist/client/assets/{page-header-BCpV1oUO.js → page-header-CpSh-j1O.js} +1 -1
  80. package/dist/client/assets/{pegDiagram-XKGWAZYB-_WrA16pJ.js → pegDiagram-XKGWAZYB-CMAngYAK.js} +1 -1
  81. package/dist/client/assets/{pie-WAS4IAKB-BkSTK6KM.js → pie-WAS4IAKB-DFNGAljQ.js} +1 -1
  82. package/dist/client/assets/{pieDiagram-E7YTZNPT-CUR0mgrL.js → pieDiagram-E7YTZNPT-XGRy7b5E.js} +1 -1
  83. package/dist/client/assets/{popover-D-6mugCQ.js → popover-CIfFCO0U.js} +1 -1
  84. package/dist/client/assets/pr-inbox-item-D9UcI0SS.js +2 -0
  85. package/dist/client/assets/{preload-helper-Czpn1I53.js → preload-helper-BZ1Pz5am.js} +1 -1
  86. package/dist/client/assets/{project-repo-form-DjzRbY9O.js → project-repo-form-Dc8ha6XP.js} +1 -1
  87. package/dist/client/assets/{provider-cli-warning-LYUDO_5Y.js → provider-cli-warning-CIAJ88Cy.js} +1 -1
  88. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-QXmh8FnA.js → quadrantDiagram-AXDQQJYC-BFek-axl.js} +1 -1
  89. package/dist/client/assets/{radar-RG4KPBEZ-ymOfNW7I.js → radar-RG4KPBEZ-k-UBw86I.js} +1 -1
  90. package/dist/client/assets/{radio-group-CcAx51bT.js → radio-group-BhmTXkIv.js} +1 -1
  91. package/dist/client/assets/{railroad-74A4TZTK-CwWB40du.js → railroad-74A4TZTK-B6DuT-HY.js} +1 -1
  92. package/dist/client/assets/railroad-abnf-HS5TGJTU-DF-z1cVb.js +1 -0
  93. package/dist/client/assets/railroad-ebnf-LZEXJU2U-C6VgaalR.js +1 -0
  94. package/dist/client/assets/railroad-peg-WCYAUIDC-DRMqhGU3.js +1 -0
  95. package/dist/client/assets/{railroadDiagram-O6MQD6OU-O7DCuidl.js → railroadDiagram-O6MQD6OU-CBzDTFh9.js} +1 -1
  96. package/dist/client/assets/redirect-DexaYCz_.js +1 -0
  97. package/dist/client/assets/{requirementDiagram-BXWQKSXE-BajIi2rw.js → requirementDiagram-BXWQKSXE-DSgpbBy3.js} +1 -1
  98. package/dist/client/assets/{reviews-B04-ADI9.js → reviews-DDO7Pvrz.js} +1 -1
  99. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-CnR7slVB.js → sankeyDiagram-P5KCCOFB-BOWaOPXp.js} +1 -1
  100. package/dist/client/assets/{select-BgEObL9n.js → select-Cq3ddA2b.js} +1 -1
  101. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-BUxl34n_.js → sequenceDiagram-WJ2MYXX4-9wHsZFGh.js} +1 -1
  102. package/dist/client/assets/spinner-BszfzCYe.js +1 -0
  103. package/dist/client/assets/{startup-script-form-c7w0nnHp.js → startup-script-form-CHvwd1Nb.js} +1 -1
  104. package/dist/client/assets/{stateDiagram-D77RDMKH-aFuhfmKp.js → stateDiagram-D77RDMKH-Blo9H6q_.js} +1 -1
  105. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-BzJ9AKXW.js +1 -0
  106. package/dist/client/assets/{swimlanes-42K2YHIH-BccYx63r.js → swimlanes-42K2YHIH-DI0BHdWG.js} +1 -1
  107. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DSnxWZUW.js +8 -0
  108. package/dist/client/assets/{table-wIG3osPW.js → table-CUvMM0aA.js} +1 -1
  109. package/dist/client/assets/{tabs-Cn3M4k-N.js → tabs-BBAQyvSA.js} +1 -1
  110. package/dist/client/assets/{terminal-instance-7W1Sdy6P.js → terminal-instance-BEqkmyvv.js} +1 -1
  111. package/dist/client/assets/{textarea-BVHmIkCM.js → textarea-DxWYClhS.js} +1 -1
  112. package/dist/client/assets/{timeline-definition-24CTP7MA-CM_waoCp.js → timeline-definition-24CTP7MA-C8fyxpVm.js} +1 -1
  113. package/dist/client/assets/{tooltip-DCH0jP98.js → tooltip-DXcY1U7y.js} +1 -1
  114. package/dist/client/assets/{treeView-Q6P3EWNA-CkV-8YWk.js → treeView-Q6P3EWNA-CzQAwJw-.js} +1 -1
  115. package/dist/client/assets/{treemap-WGGIJYW6-L1FedAzz.js → treemap-WGGIJYW6-zWRSK6WR.js} +1 -1
  116. package/dist/client/assets/trpc-CQO3zfei.js +1 -0
  117. package/dist/client/assets/{use-auto-scroll-QQMmbsX-.js → use-auto-scroll-DNohsNoz.js} +1 -1
  118. package/dist/client/assets/{use-download-server-log-Bag_Et_8.js → use-download-server-log-efKIcIwE.js} +1 -1
  119. package/dist/client/assets/use-project-header-navigation-D5yIIgnb.js +1 -0
  120. package/dist/client/assets/{use-websocket-channel-DW9rsEG5.js → use-websocket-channel-dNXOJZfW.js} +1 -1
  121. package/dist/client/assets/use-websocket-transport-BuYcrZTd.js +55 -0
  122. package/dist/client/assets/vbnet-CwR9YcOY.js +57 -0
  123. package/dist/client/assets/{vennDiagram-4TSXK5OY-Djoofmfi.js → vennDiagram-4TSXK5OY-ffnMpD5u.js} +1 -1
  124. package/dist/client/assets/{wardley-WFR3VGLG-BU-g6L7U.js → wardley-WFR3VGLG-acbsrLnl.js} +1 -1
  125. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-DZNgTneT.js → wardleyDiagram-VM6X3IG4-BtqGCwsu.js} +1 -1
  126. package/dist/client/assets/workspace-a6lf168c.js +18 -0
  127. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-WTubjsZj.js → xychartDiagram-S5SC5T6Z-Bfy9xcWF.js} +1 -1
  128. package/dist/client/index.html +28 -35
  129. package/dist/prisma/generated/internal/class.js +1 -1
  130. package/dist/prisma/generated/internal/class.js.map +1 -1
  131. package/dist/prompts/quick-actions/fetch-rebase.md +5 -9
  132. package/dist/prompts/quick-actions/rename-branch.md +4 -8
  133. package/dist/prompts/quick-actions/review.md +6 -5
  134. package/dist/prompts/quick-actions/screenshots.md +7 -20
  135. package/dist/prompts/quick-actions/simplify.md +4 -1
  136. package/dist/prompts/ratchet/dispatch.md +13 -46
  137. package/dist/src/backend/orchestration/cli-health.service.d.ts.map +1 -1
  138. package/dist/src/backend/orchestration/cli-health.service.js +31 -23
  139. package/dist/src/backend/orchestration/cli-health.service.js.map +1 -1
  140. package/dist/src/backend/orchestration/cli-health.service.test.js +40 -0
  141. package/dist/src/backend/orchestration/cli-health.service.test.js.map +1 -1
  142. package/dist/src/backend/orchestration/data-backup.service.test.js +37 -4
  143. package/dist/src/backend/orchestration/data-backup.service.test.js.map +1 -1
  144. package/dist/src/backend/orchestration/event-collector.idle-refresh.test.d.ts +2 -0
  145. package/dist/src/backend/orchestration/event-collector.idle-refresh.test.d.ts.map +1 -0
  146. package/dist/src/backend/orchestration/event-collector.idle-refresh.test.js +83 -0
  147. package/dist/src/backend/orchestration/event-collector.idle-refresh.test.js.map +1 -0
  148. package/dist/src/backend/orchestration/event-collector.linear.test.d.ts +2 -0
  149. package/dist/src/backend/orchestration/event-collector.linear.test.d.ts.map +1 -0
  150. package/dist/src/backend/orchestration/event-collector.linear.test.js +206 -0
  151. package/dist/src/backend/orchestration/event-collector.linear.test.js.map +1 -0
  152. package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts.map +1 -1
  153. package/dist/src/backend/orchestration/event-collector.orchestrator.js +40 -8
  154. package/dist/src/backend/orchestration/event-collector.orchestrator.js.map +1 -1
  155. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts +1 -0
  156. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts.map +1 -1
  157. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js +20 -4
  158. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js.map +1 -1
  159. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js +55 -104
  160. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js.map +1 -1
  161. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.d.ts +6 -0
  162. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.d.ts.map +1 -0
  163. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.js +117 -0
  164. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.js.map +1 -0
  165. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.test.d.ts +2 -0
  166. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.test.d.ts.map +1 -0
  167. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.test.js +8 -0
  168. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.test.js.map +1 -0
  169. package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts.map +1 -1
  170. package/dist/src/backend/orchestration/workspace-archive.orchestrator.js +40 -34
  171. package/dist/src/backend/orchestration/workspace-archive.orchestrator.js.map +1 -1
  172. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js +4 -0
  173. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js.map +1 -1
  174. package/dist/src/backend/orchestration/workspace-children.orchestrator.d.ts.map +1 -1
  175. package/dist/src/backend/orchestration/workspace-children.orchestrator.js +1 -2
  176. package/dist/src/backend/orchestration/workspace-children.orchestrator.js.map +1 -1
  177. package/dist/src/backend/orchestration/workspace-init-issue-prompts.test.js +3 -3
  178. package/dist/src/backend/orchestration/workspace-init-issue-prompts.test.js.map +1 -1
  179. package/dist/src/backend/orchestration/workspace-init-script-pipeline.d.ts.map +1 -1
  180. package/dist/src/backend/orchestration/workspace-init-script-pipeline.js +3 -3
  181. package/dist/src/backend/orchestration/workspace-init-script-pipeline.js.map +1 -1
  182. package/dist/src/backend/orchestration/workspace-init-script-pipeline.test.d.ts +2 -0
  183. package/dist/src/backend/orchestration/workspace-init-script-pipeline.test.d.ts.map +1 -0
  184. package/dist/src/backend/orchestration/workspace-init-script-pipeline.test.js +52 -0
  185. package/dist/src/backend/orchestration/workspace-init-script-pipeline.test.js.map +1 -0
  186. package/dist/src/backend/orchestration/workspace-runtime-cleanup-notification.test.d.ts +2 -0
  187. package/dist/src/backend/orchestration/workspace-runtime-cleanup-notification.test.d.ts.map +1 -0
  188. package/dist/src/backend/orchestration/workspace-runtime-cleanup-notification.test.js +175 -0
  189. package/dist/src/backend/orchestration/workspace-runtime-cleanup-notification.test.js.map +1 -0
  190. package/dist/src/backend/prompts/branch-rename.js +1 -1
  191. package/dist/src/backend/prompts/ratchet-dispatch.d.ts.map +1 -1
  192. package/dist/src/backend/prompts/ratchet-dispatch.js +12 -78
  193. package/dist/src/backend/prompts/ratchet-dispatch.js.map +1 -1
  194. package/dist/src/backend/prompts/ratchet-dispatch.test.js +39 -27
  195. package/dist/src/backend/prompts/ratchet-dispatch.test.js.map +1 -1
  196. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.d.ts.map +1 -1
  197. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.js +6 -1
  198. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.js.map +1 -1
  199. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.test.js +60 -1
  200. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.test.js.map +1 -1
  201. package/dist/src/backend/services/auto-iteration/service/prompts.d.ts.map +1 -1
  202. package/dist/src/backend/services/auto-iteration/service/prompts.js +14 -54
  203. package/dist/src/backend/services/auto-iteration/service/prompts.js.map +1 -1
  204. package/dist/src/backend/services/github/service/github-cli-health-cache.test.d.ts +2 -0
  205. package/dist/src/backend/services/github/service/github-cli-health-cache.test.d.ts.map +1 -0
  206. package/dist/src/backend/services/github/service/github-cli-health-cache.test.js +45 -0
  207. package/dist/src/backend/services/github/service/github-cli-health-cache.test.js.map +1 -0
  208. package/dist/src/backend/services/github/service/github-cli.service.d.ts +1 -1
  209. package/dist/src/backend/services/github/service/github-cli.service.d.ts.map +1 -1
  210. package/dist/src/backend/services/github/service/github-cli.service.js +25 -23
  211. package/dist/src/backend/services/github/service/github-cli.service.js.map +1 -1
  212. package/dist/src/backend/services/linear/service/linear-client.service.d.ts +1 -1
  213. package/dist/src/backend/services/linear/service/linear-client.service.d.ts.map +1 -1
  214. package/dist/src/backend/services/linear/service/linear-client.service.js +24 -9
  215. package/dist/src/backend/services/linear/service/linear-client.service.js.map +1 -1
  216. package/dist/src/backend/services/linear/service/linear-client.service.test.js +46 -5
  217. package/dist/src/backend/services/linear/service/linear-client.service.test.js.map +1 -1
  218. package/dist/src/backend/services/linear/service/linear-state-sync.service.d.ts +1 -1
  219. package/dist/src/backend/services/linear/service/linear-state-sync.service.d.ts.map +1 -1
  220. package/dist/src/backend/services/linear/service/linear-state-sync.service.js +2 -1
  221. package/dist/src/backend/services/linear/service/linear-state-sync.service.js.map +1 -1
  222. package/dist/src/backend/services/linear/service/linear-state-sync.service.test.js +7 -3
  223. package/dist/src/backend/services/linear/service/linear-state-sync.service.test.js.map +1 -1
  224. package/dist/src/backend/services/ratchet/service/fixer-session.service.js +1 -1
  225. package/dist/src/backend/services/ratchet/service/fixer-session.service.js.map +1 -1
  226. package/dist/src/backend/services/ratchet/service/ratchet.service.test.js +1 -1
  227. package/dist/src/backend/services/ratchet/service/ratchet.service.test.js.map +1 -1
  228. package/dist/src/backend/services/run-script/service/startup-script.service.d.ts +1 -0
  229. package/dist/src/backend/services/run-script/service/startup-script.service.d.ts.map +1 -1
  230. package/dist/src/backend/services/run-script/service/startup-script.service.js +3 -1
  231. package/dist/src/backend/services/run-script/service/startup-script.service.js.map +1 -1
  232. package/dist/src/backend/services/session/service/acp/acp-runtime-quiescence.js +1 -1
  233. package/dist/src/backend/services/session/service/acp/acp-runtime-quiescence.js.map +1 -1
  234. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.js +1 -1
  235. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.js.map +1 -1
  236. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.d.ts.map +1 -1
  237. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.js +1 -3
  238. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.js.map +1 -1
  239. package/dist/src/backend/services/session/service/acp/types.d.ts +0 -1
  240. package/dist/src/backend/services/session/service/acp/types.d.ts.map +1 -1
  241. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.test.js +0 -1
  242. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.test.js.map +1 -1
  243. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.test.js +1 -1
  244. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.test.js.map +1 -1
  245. package/dist/src/backend/services/session/service/index.d.ts +1 -1
  246. package/dist/src/backend/services/session/service/index.d.ts.map +1 -1
  247. package/dist/src/backend/services/session/service/index.js +1 -1
  248. package/dist/src/backend/services/session/service/index.js.map +1 -1
  249. package/dist/src/backend/services/session/service/lifecycle/session-context.service.d.ts +1 -5
  250. package/dist/src/backend/services/session/service/lifecycle/session-context.service.d.ts.map +1 -1
  251. package/dist/src/backend/services/session/service/lifecycle/session-context.service.js +2 -63
  252. package/dist/src/backend/services/session/service/lifecycle/session-context.service.js.map +1 -1
  253. package/dist/src/backend/services/session/service/lifecycle/session-context.service.test.js +23 -99
  254. package/dist/src/backend/services/session/service/lifecycle/session-context.service.test.js.map +1 -1
  255. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.d.ts.map +1 -1
  256. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.js +13 -7
  257. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.js.map +1 -1
  258. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.test.js +26 -5
  259. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.test.js.map +1 -1
  260. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.d.ts +1 -0
  261. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.d.ts.map +1 -1
  262. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.js +3 -0
  263. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.js.map +1 -1
  264. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.d.ts +1 -1
  265. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.d.ts.map +1 -1
  266. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.js +0 -11
  267. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.js.map +1 -1
  268. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.d.ts +1 -1
  269. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.d.ts.map +1 -1
  270. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.js +8 -5
  271. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.js.map +1 -1
  272. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.test.js +9 -5
  273. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.test.js.map +1 -1
  274. package/dist/src/backend/services/session/service/lifecycle/session-services.composition.test.js +0 -1
  275. package/dist/src/backend/services/session/service/lifecycle/session-services.composition.test.js.map +1 -1
  276. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.d.ts.map +1 -1
  277. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.js +0 -1
  278. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.js.map +1 -1
  279. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.d.ts +7 -0
  280. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.d.ts.map +1 -0
  281. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.js +9 -0
  282. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.js.map +1 -0
  283. package/dist/src/backend/services/session/service/lifecycle/session.config.service.d.ts.map +1 -1
  284. package/dist/src/backend/services/session/service/lifecycle/session.config.service.js +4 -5
  285. package/dist/src/backend/services/session/service/lifecycle/session.config.service.js.map +1 -1
  286. package/dist/src/backend/services/session/service/lifecycle/session.config.service.test.js +8 -8
  287. package/dist/src/backend/services/session/service/lifecycle/session.config.service.test.js.map +1 -1
  288. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.facade.test.js +0 -2
  289. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.facade.test.js.map +1 -1
  290. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts +0 -1
  291. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts.map +1 -1
  292. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js.map +1 -1
  293. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.d.ts +0 -33
  294. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.d.ts.map +1 -1
  295. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.js +0 -40
  296. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.js.map +1 -1
  297. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.test.js +2 -170
  298. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.test.js.map +1 -1
  299. package/dist/src/backend/services/session/service/lifecycle/session.repository.d.ts +4 -12
  300. package/dist/src/backend/services/session/service/lifecycle/session.repository.d.ts.map +1 -1
  301. package/dist/src/backend/services/session/service/lifecycle/session.repository.js +2 -7
  302. package/dist/src/backend/services/session/service/lifecycle/session.repository.js.map +1 -1
  303. package/dist/src/backend/services/session/service/lifecycle/session.repository.test.js +1 -4
  304. package/dist/src/backend/services/session/service/lifecycle/session.repository.test.js.map +1 -1
  305. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js +0 -162
  306. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js.map +1 -1
  307. package/dist/src/backend/services/session/service/voice/voice-narration.service.d.ts +1 -0
  308. package/dist/src/backend/services/session/service/voice/voice-narration.service.d.ts.map +1 -1
  309. package/dist/src/backend/services/session/service/voice/voice-narration.service.js +69 -19
  310. package/dist/src/backend/services/session/service/voice/voice-narration.service.js.map +1 -1
  311. package/dist/src/backend/services/session/service/voice/voice-narration.service.test.js +196 -113
  312. package/dist/src/backend/services/session/service/voice/voice-narration.service.test.js.map +1 -1
  313. package/dist/src/backend/services/workspace/resources/project.accessor.d.ts.map +1 -1
  314. package/dist/src/backend/services/workspace/resources/project.accessor.js +3 -0
  315. package/dist/src/backend/services/workspace/resources/project.accessor.js.map +1 -1
  316. package/dist/src/backend/services/workspace/resources/project.accessor.test.js +24 -2
  317. package/dist/src/backend/services/workspace/resources/project.accessor.test.js.map +1 -1
  318. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.d.ts +2 -0
  319. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.d.ts.map +1 -1
  320. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.js +30 -0
  321. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.js.map +1 -1
  322. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.test.js +113 -0
  323. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.test.js.map +1 -1
  324. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js +2 -2
  325. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js.map +1 -1
  326. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.d.ts.map +1 -1
  327. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.js +12 -1
  328. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.js.map +1 -1
  329. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.test.js +15 -0
  330. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.test.js.map +1 -1
  331. package/dist/src/backend/services/workspace-git-state.service.js +1 -1
  332. package/dist/src/backend/services/workspace-git-state.service.js.map +1 -1
  333. package/dist/src/backend/trpc/admin.router.test.js +34 -1
  334. package/dist/src/backend/trpc/admin.router.test.js.map +1 -1
  335. package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
  336. package/dist/src/backend/trpc/admin.trpc.js +2 -2
  337. package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
  338. package/dist/src/backend/trpc/voice.trpc.d.ts.map +1 -1
  339. package/dist/src/backend/trpc/voice.trpc.js +6 -3
  340. package/dist/src/backend/trpc/voice.trpc.js.map +1 -1
  341. package/dist/src/backend/trpc/voice.trpc.test.js +27 -8
  342. package/dist/src/backend/trpc/voice.trpc.test.js.map +1 -1
  343. package/dist/src/backend/trpc/workspace/init.router.test.js +40 -1
  344. package/dist/src/backend/trpc/workspace/init.router.test.js.map +1 -1
  345. package/dist/src/backend/trpc/workspace/init.trpc.d.ts.map +1 -1
  346. package/dist/src/backend/trpc/workspace/init.trpc.js +20 -14
  347. package/dist/src/backend/trpc/workspace/init.trpc.js.map +1 -1
  348. package/dist/src/backend/trpc/workspace.router.test.js +1 -0
  349. package/dist/src/backend/trpc/workspace.router.test.js.map +1 -1
  350. package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
  351. package/dist/src/backend/trpc/workspace.trpc.js +17 -16
  352. package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
  353. package/dist/src/shared/deepgram-voices.d.ts +7 -3
  354. package/dist/src/shared/deepgram-voices.d.ts.map +1 -1
  355. package/dist/src/shared/deepgram-voices.js +62 -45
  356. package/dist/src/shared/deepgram-voices.js.map +1 -1
  357. package/dist/src/shared/issue-start-prompt.d.ts.map +1 -1
  358. package/dist/src/shared/issue-start-prompt.js +6 -160
  359. package/dist/src/shared/issue-start-prompt.js.map +1 -1
  360. package/dist/src/shared/schemas/export-data.schema.d.ts +4 -4
  361. package/dist/src/shared/schemas/export-data.schema.d.ts.map +1 -1
  362. package/dist/src/shared/schemas/export-data.schema.js +13 -5
  363. package/dist/src/shared/schemas/export-data.schema.js.map +1 -1
  364. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  365. package/package.json +34 -28
  366. package/prisma/migrations/20260904150539_upgrade_deepgram_flux_tts/migration.sql +43 -0
  367. package/prisma/schema.prisma +1 -1
  368. package/prompts/quick-actions/fetch-rebase.md +5 -9
  369. package/prompts/quick-actions/rename-branch.md +4 -8
  370. package/prompts/quick-actions/review.md +6 -5
  371. package/prompts/quick-actions/screenshots.md +7 -20
  372. package/prompts/quick-actions/simplify.md +4 -1
  373. package/prompts/ratchet/dispatch.md +13 -46
  374. package/dist/client/assets/admin-page-DSQHBVdP.js +0 -1
  375. package/dist/client/assets/architecture-7GRP2DOG-iqZodW6v.js +0 -1
  376. package/dist/client/assets/channel-CuF41sy9.js +0 -1
  377. package/dist/client/assets/classDiagram-ZZMXUADV-CSnIdOhD.js +0 -1
  378. package/dist/client/assets/classDiagram-v2-VYDZK3BY-CSnIdOhD.js +0 -1
  379. package/dist/client/assets/components-CYsyoHP0.js +0 -1
  380. package/dist/client/assets/data-import-button-D-ZWnQAg.js +0 -6
  381. package/dist/client/assets/detail-C1zBkWd-.js +0 -1
  382. package/dist/client/assets/diff-highlight.worker-C-7SSG_d.js +0 -55
  383. package/dist/client/assets/dist-BiFeezwN.js +0 -1
  384. package/dist/client/assets/eventmodeling-NTZA5JFV-C4d4RnR4.js +0 -1
  385. package/dist/client/assets/flowDiagram-HODETNUW-Df-T-03y.js +0 -1
  386. package/dist/client/assets/hooks-BTcY6K1q.js +0 -1
  387. package/dist/client/assets/index-D34fUfAP.js +0 -10
  388. package/dist/client/assets/jsx-runtime-DE3RlOCf.js +0 -1
  389. package/dist/client/assets/lib-DyBYhPHb.js +0 -1
  390. package/dist/client/assets/list-DozL_ZP-.js +0 -184
  391. package/dist/client/assets/new-C3e5S62x.js +0 -1
  392. package/dist/client/assets/new-CCDeoRvw.js +0 -1
  393. package/dist/client/assets/pr-inbox-item-vOH1gfSf.js +0 -2
  394. package/dist/client/assets/railroad-abnf-HS5TGJTU-DGUx-UBP.js +0 -1
  395. package/dist/client/assets/railroad-ebnf-LZEXJU2U-isA18bJo.js +0 -1
  396. package/dist/client/assets/railroad-peg-WCYAUIDC-Qz11I2dz.js +0 -1
  397. package/dist/client/assets/redirect-CNaRFL8d.js +0 -1
  398. package/dist/client/assets/spinner-ASaPCL5c.js +0 -1
  399. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-C3HBCmSp.js +0 -1
  400. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DXqJPUvi.js +0 -8
  401. package/dist/client/assets/trpc-X4t2_jd5.js +0 -1
  402. package/dist/client/assets/use-project-header-navigation-BXqLQ4G_.js +0 -1
  403. package/dist/client/assets/use-websocket-transport-BT1hhmkl.js +0 -50
  404. package/dist/client/assets/vbnet-CrqJJ08J.js +0 -57
  405. package/dist/client/assets/workspace-CsQCO4D_.js +0 -18
  406. package/dist/prompts/workflows/bugfix.md +0 -86
  407. package/dist/prompts/workflows/ci-fix.md +0 -52
  408. package/dist/prompts/workflows/explore.md +0 -54
  409. package/dist/prompts/workflows/feature.md +0 -80
  410. package/dist/prompts/workflows/followup.md +0 -32
  411. package/dist/prompts/workflows/pr-review-fix.md +0 -50
  412. package/dist/src/backend/prompts/workflows.d.ts +0 -14
  413. package/dist/src/backend/prompts/workflows.d.ts.map +0 -1
  414. package/dist/src/backend/prompts/workflows.js +0 -47
  415. package/dist/src/backend/prompts/workflows.js.map +0 -1
  416. package/dist/src/backend/prompts/workflows.test.d.ts +0 -2
  417. package/dist/src/backend/prompts/workflows.test.d.ts.map +0 -1
  418. package/dist/src/backend/prompts/workflows.test.js +0 -128
  419. package/dist/src/backend/prompts/workflows.test.js.map +0 -1
  420. package/prompts/workflows/bugfix.md +0 -86
  421. package/prompts/workflows/ci-fix.md +0 -52
  422. package/prompts/workflows/explore.md +0 -54
  423. package/prompts/workflows/feature.md +0 -80
  424. package/prompts/workflows/followup.md +0 -32
  425. package/prompts/workflows/pr-review-fix.md +0 -50
@@ -1,86 +0,0 @@
1
- ---
2
- name: Bug Fix
3
- description: Investigate and fix bugs with regression tests
4
- expectsPR: true
5
- ---
6
-
7
- # Bug Fix Workflow
8
-
9
- You are fixing a bug. Follow this workflow to ensure the fix is correct and doesn't introduce regressions.
10
-
11
- ## Workflow Steps
12
-
13
- ### 1. Reproduce the Bug
14
- - Understand the reported symptoms
15
- - Reproduce the issue locally if possible
16
- - Document the reproduction steps
17
-
18
- ### 2. Investigate Root Cause
19
- - Use search tools to find relevant code
20
- - Trace the code path that leads to the bug
21
- - Identify the root cause, not just symptoms
22
-
23
- ### 3. Write a Failing Test
24
- - Create a test that reproduces the bug
25
- - Verify the test fails before the fix
26
- - This ensures the bug is actually fixed
27
-
28
- ### 4. Implement the Fix
29
- - Make the minimal change needed to fix the bug
30
- - Avoid refactoring or feature additions
31
- - Keep the fix focused and reviewable
32
-
33
- ### 5. Verify the Fix
34
- - Confirm your test now passes
35
- - Run the full test suite to check for regressions
36
- - Test related functionality manually if needed
37
-
38
- ### 6. Verify Build and Lint
39
- - Run `pnpm typecheck` to catch type errors
40
- - Run `pnpm check:fix` to fix linting issues
41
- - Ensure the build passes
42
-
43
- ### 7. Capture UI Screenshots (if applicable)
44
-
45
- If your changes affect the UI:
46
-
47
- 1. Read `factory-factory.json` for the `scripts.run` command, pick a free port, replace `{port}`, and start it in the background.
48
- 2. Use `browser_navigate` to visit the dev server URL
49
- 3. Determine the most relevant screen showing your changes and capture a screenshot
50
- 4. Save screenshots to `.factory-factory/screenshots/` with descriptive names
51
- 5. Commit the screenshots
52
- 6. Reference them in the PR body using raw GitHub URLs:
53
- `![Description](https://raw.githubusercontent.com/{owner}/{repo}/{branch}/.factory-factory/screenshots/filename.png)`
54
-
55
- ### 8. Create Pull Request
56
- - Commit with a descriptive message referencing the bug
57
- - Push your branch: `git push -u origin HEAD`
58
- - Create the PR using the GitHub CLI with a body file to preserve formatting:
59
- ```bash
60
- cat > /tmp/pr-body.md << 'EOF'
61
- ## Bug Fix
62
- [Description of the bug and how it was fixed]
63
-
64
- ## Reproduction Steps
65
- 1. [Steps to reproduce the original bug]
66
-
67
- ## Fix Explanation
68
- [Technical explanation of the fix]
69
-
70
- ## Testing
71
- - [How to verify the fix works]
72
- EOF
73
- gh pr create --title "Fix: Brief description" --body-file /tmp/pr-body.md
74
- ```
75
- - **IMPORTANT**: Always append the following signature as the very last lines of the PR body, after a horizontal rule:
76
- ```
77
- ---
78
- 🏭 Forged in [Factory Factory](https://factoryfactory.ai)
79
- ```
80
-
81
- ## Guidelines
82
-
83
- - **Understand before fixing**: Avoid shotgun debugging
84
- - **Minimal changes**: Fix only what's broken
85
- - **Regression tests**: Every bug fix should include a test
86
- - **Document the root cause**: Help future developers understand
@@ -1,52 +0,0 @@
1
- ---
2
- name: CI Fix
3
- description: Investigate and fix CI failures
4
- expectsPR: false
5
- ---
6
-
7
- # CI Failure Resolution
8
-
9
- You are investigating and fixing CI failures for this workspace's pull request. Your goal is to get the CI checks passing.
10
-
11
- ## Workflow Steps
12
-
13
- ### 1. Understand the Failures
14
- - Review the CI failure information provided in the initial message
15
- - Use `gh pr checks <pr-number>` to see current check status
16
- - Use `gh run view <run-id> --log-failed` to see detailed failure logs
17
-
18
- ### 2. Diagnose Root Cause
19
- - Identify which specific tests or checks are failing
20
- - Understand why each is failing (test logic, code bug, environment issue, flaky test)
21
- - Prioritize fixes based on impact
22
-
23
- ### 3. Implement Fixes
24
- - Fix the underlying issues causing the failures
25
- - Run failing tests locally to verify your fix works: `pnpm test <test-file>`
26
- - Keep changes focused on fixing CI - avoid unrelated improvements
27
-
28
- ### 4. Verify Locally
29
- - Run the full test suite: `pnpm test`
30
- - Run type checking: `pnpm typecheck`
31
- - Run linting: `pnpm check:fix`
32
-
33
- ### 5. Commit and Push
34
- - Commit your fixes with clear messages explaining what was fixed
35
- - Push to the branch: `git push`
36
- - The CI will automatically re-run
37
-
38
- ## Guidelines
39
-
40
- - **Focus on CI failures only**: Don't refactor or improve unrelated code
41
- - **One fix at a time**: Commit each logical fix separately for easier review
42
- - **Verify locally first**: Run tests locally before pushing to avoid CI cycles
43
- - **Handle flaky tests**: If a test is flaky, fix the flakiness rather than just re-running
44
- - **Communicate blockers**: If you cannot determine the cause of a failure, explain what you've tried
45
-
46
- ## Common CI Failure Patterns
47
-
48
- - **Type errors**: Run `pnpm typecheck` and fix any issues
49
- - **Lint errors**: Run `pnpm check:fix` to auto-fix, then review remaining issues
50
- - **Test failures**: Read the test output carefully, reproduce locally, fix the code or test
51
- - **Build failures**: Check for missing dependencies or syntax errors
52
- - **Timeout issues**: Look for infinite loops or very slow operations
@@ -1,54 +0,0 @@
1
- ---
2
- name: Explore
3
- description: Understand codebase structure and answer questions
4
- expectsPR: false
5
- ---
6
-
7
- # Exploration Workflow
8
-
9
- You are exploring the codebase to understand how things work or answer questions.
10
-
11
- ## When to Use This Workflow
12
-
13
- - Learning how a feature is implemented
14
- - Understanding code architecture
15
- - Researching before implementing a feature
16
- - Answering questions about the codebase
17
- - Finding relevant code for a task
18
-
19
- ## Exploration Techniques
20
-
21
- ### 1. Start with Entry Points
22
- - Find main files, routers, or handlers
23
- - Trace the code path from user action to implementation
24
- - Identify key modules and their responsibilities
25
-
26
- ### 2. Use Search Effectively
27
- - `Grep` for specific function or variable names
28
- - `Glob` for file patterns (e.g., `**/*.test.ts`)
29
- - Read file headers and exports first
30
-
31
- ### 3. Build Mental Models
32
- - Map out module dependencies
33
- - Identify core abstractions and patterns
34
- - Note important files and their purposes
35
-
36
- ### 4. Document Findings
37
- - Summarize what you learned
38
- - Note important files and code locations
39
- - Explain patterns and conventions used
40
-
41
- ## Guidelines
42
-
43
- - **Use Task tool for deep dives**: Spawn exploration agents to protect context
44
- - **Be systematic**: Start broad, then narrow down
45
- - **Read before searching**: Sometimes reading related code is faster
46
- - **Share knowledge**: Document findings clearly for future reference
47
-
48
- ## Output Format
49
-
50
- When answering questions, include:
51
- - Direct answer to the question
52
- - Relevant file paths with line numbers
53
- - Brief explanation of how the code works
54
- - Any caveats or edge cases to be aware of
@@ -1,80 +0,0 @@
1
- ---
2
- name: Feature
3
- description: End-to-end feature implementation with PR creation
4
- expectsPR: true
5
- ---
6
-
7
- # Feature Implementation Workflow
8
-
9
- You are implementing a new feature. Follow this workflow to deliver high-quality, production-ready code.
10
-
11
- ## Workflow Steps
12
-
13
- ### 1. Understand Requirements
14
- - Read any linked issues, PRs, or documentation
15
- - Clarify ambiguous requirements before starting implementation
16
- - Identify affected areas of the codebase
17
-
18
- ### 2. Plan the Implementation
19
- - Use the TodoWrite tool to create a task list
20
- - Break down the work into logical commits
21
- - Consider edge cases and error handling upfront
22
-
23
- ### 3. Implement the Feature
24
- - Write clean, well-structured code
25
- - Follow existing patterns in the codebase
26
- - Add appropriate type definitions
27
- - Keep commits focused and atomic
28
-
29
- ### 4. Test Your Changes
30
- - Run the existing test suite (`pnpm test`)
31
- - Add new tests for your feature
32
- - Test edge cases and error scenarios
33
- - Verify the feature works end-to-end
34
-
35
- ### 5. Verify Build and Lint
36
- - Run `pnpm typecheck` to catch type errors
37
- - Run `pnpm check:fix` to fix linting issues
38
- - Ensure the build passes (`pnpm build:all`)
39
-
40
- ### 6. Capture UI Screenshots (if applicable)
41
-
42
- If your changes affect the UI:
43
-
44
- 1. Read `factory-factory.json` for the `scripts.run` command, pick a free port, replace `{port}`, and start it in the background.
45
- 2. Use `browser_navigate` to visit the dev server URL
46
- 3. Determine the most relevant screen showing your changes and capture a screenshot
47
- 4. Save screenshots to `.factory-factory/screenshots/` with descriptive names
48
- 5. Commit the screenshots
49
- 6. Reference them in the PR body using raw GitHub URLs:
50
- `![Description](https://raw.githubusercontent.com/{owner}/{repo}/{branch}/.factory-factory/screenshots/filename.png)`
51
-
52
- ### 7. Create Pull Request
53
- - Commit all changes with descriptive messages
54
- - Push your branch: `git push -u origin HEAD`
55
- - Create the PR using the GitHub CLI with a body file to preserve formatting:
56
- ```bash
57
- cat > /tmp/pr-body.md << 'EOF'
58
- ## Summary
59
- [Clear description of what this PR accomplishes]
60
-
61
- ## Changes
62
- - [List of key changes]
63
-
64
- ## Testing
65
- - [How to test the changes]
66
- EOF
67
- gh pr create --title "Your PR title" --body-file /tmp/pr-body.md
68
- ```
69
- - **IMPORTANT**: Always append the following signature as the very last lines of the PR body, after a horizontal rule:
70
- ```
71
- ---
72
- 🏭 Forged in [Factory Factory](https://factoryfactory.ai)
73
- ```
74
-
75
- ## Guidelines
76
-
77
- - **Protect context**: For complex sub-tasks, use the Task tool to spawn specialized agents
78
- - **Commit early, commit often**: Make atomic commits as you complete each logical unit
79
- - **Test-driven when appropriate**: Write tests before or alongside implementation
80
- - **Ask questions**: If requirements are unclear, ask before making assumptions
@@ -1,32 +0,0 @@
1
- ---
2
- name: Follow-up
3
- description: Continue previous work or handle ad-hoc tasks
4
- expectsPR: false
5
- ---
6
-
7
- # Follow-up Session
8
-
9
- This is a follow-up session. Continue where the previous session left off.
10
-
11
- ## Context Recovery
12
-
13
- If you're resuming previous work:
14
- 1. Review the conversation history
15
- 2. Check git status for uncommitted changes
16
- 3. Look at the TodoWrite list for pending tasks
17
- 4. Identify what was completed and what remains
18
-
19
- ## Ad-hoc Tasks
20
-
21
- For new tasks in this session:
22
- 1. Understand the request
23
- 2. Create a plan if needed (use TodoWrite)
24
- 3. Execute the task
25
- 4. Verify the result
26
-
27
- ## Guidelines
28
-
29
- - **Resume gracefully**: Don't repeat work that's already done
30
- - **Check state**: Review git status, test results, and build state
31
- - **Ask for clarification**: If the previous context is unclear, ask
32
- - **Commit frequently**: Don't let work pile up uncommitted
@@ -1,50 +0,0 @@
1
- ---
2
- name: PR Review Fix
3
- description: Address PR review comments and feedback
4
- expectsPR: false
5
- ---
6
-
7
- # PR Review Comment Resolution
8
-
9
- You are addressing PR review comments for this workspace's pull request. Your goal is to implement the requested changes and satisfy the reviewers.
10
-
11
- **CRITICAL: Execute autonomously. Do not ask the user for input, confirmation, or clarification. Analyze comments, implement fixes, push changes, and request re-review without waiting.**
12
-
13
- ## Workflow
14
-
15
- ### 1. Analyze Comments
16
- - Review all comments in the initial message
17
- - Categorize each as **actionable** (requires code changes) or **informational** (no action needed)
18
- - Informational comments include: automated coverage reports, CI status notifications, or comments that just acknowledge/thank without requesting changes
19
- - For actionable comments, determine what changes are needed
20
-
21
- ### 2. Implement Fixes
22
- - Address each actionable comment systematically
23
- - Make focused changes that directly address the feedback
24
- - If a request is unclear, make a reasonable interpretation and proceed
25
- - Do not ask for clarification - make your best judgment
26
-
27
- ### 3. Verify Changes
28
- \`\`\`bash
29
- pnpm test && pnpm typecheck && pnpm check:fix
30
- \`\`\`
31
-
32
- ### 4. Commit and Push
33
- \`\`\`bash
34
- git add -A && git commit -m "Address review comments" && git push
35
- \`\`\`
36
-
37
- ### 5. Request Re-review
38
- CRITICAL: You MUST post a comment mentioning ALL reviewers whose comments you addressed, asking them to re-review. This is MANDATORY whenever you make code changes in response to review comments, even if you've already responded to their comments in previous sessions. Use `gh pr list --head $(git branch --show-current)` to find the PR number if not already known:
39
- \`\`\`bash
40
- gh pr comment $(gh pr list --head $(git branch --show-current) --json number --jq '.[0].number') --body "@reviewer1 @reviewer2 I've addressed the review comments. Please re-review when you have a chance."
41
- \`\`\`
42
- Do NOT skip this step based on whether you've previously commented. New code changes always require a new re-review request.
43
-
44
- ## Guidelines
45
-
46
- - **Operate autonomously**: Never ask the user what to do. Analyze, decide, implement, push.
47
- - **Address all actionable comments**: Skip only truly informational comments
48
- - **Keep changes focused**: Only change what was requested
49
- - **Test before pushing**: Always run local checks first
50
- - **Handle bot comments**: Analyze bot comments (coverage, CI) for actionable items. If purely informational, move on without code changes.
@@ -1,14 +0,0 @@
1
- export interface Workflow {
2
- id: string;
3
- name: string;
4
- description: string;
5
- expectsPR: boolean;
6
- content: string;
7
- }
8
- export declare const DEFAULT_FIRST_SESSION = "feature";
9
- export declare const DEFAULT_FOLLOWUP = "followup";
10
- export declare function listWorkflows(): Workflow[];
11
- export declare function getWorkflow(id: string): Workflow | null;
12
- export declare function getWorkflowContent(id: string): string | null;
13
- export declare function clearWorkflowCache(): void;
14
- //# sourceMappingURL=workflows.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../src/backend/prompts/workflows.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,QAAQ;IAEvB,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,EAAE,MAAM,CAAC;IAEpB,SAAS,EAAE,OAAO,CAAC;IAEnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAOD,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAG/C,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAuD3C,wBAAgB,aAAa,IAAI,QAAQ,EAAE,CAE1C;AAKD,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAEvD;AAMD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE5D;AAKD,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -1,47 +0,0 @@
1
- import { resolve } from 'node:path';
2
- import { z } from 'zod';
3
- import { createLogger } from '../services/logger.service.js';
4
- import { createMarkdownLoader, parseFrontmatter } from './markdown-loader.js';
5
- const logger = createLogger('workflows');
6
- export const DEFAULT_FIRST_SESSION = 'feature';
7
- export const DEFAULT_FOLLOWUP = 'followup';
8
- const WORKFLOWS_DIR = resolve(import.meta.dirname, '../../..', 'prompts/workflows');
9
- const WorkflowFrontmatterSchema = z.object({
10
- name: z.string().optional(),
11
- description: z.string().optional(),
12
- expectsPR: z.boolean().optional(),
13
- });
14
- function parseWorkflowFile(_filePath, content, id) {
15
- const { frontmatter, body } = parseFrontmatter(content, {
16
- name: (v) => v,
17
- description: (v) => v,
18
- expectsPR: (v) => v === 'true',
19
- });
20
- const parsedFrontmatter = WorkflowFrontmatterSchema.safeParse(frontmatter);
21
- const normalizedFrontmatter = parsedFrontmatter.success ? parsedFrontmatter.data : {};
22
- return {
23
- id,
24
- name: normalizedFrontmatter.name ?? id,
25
- description: normalizedFrontmatter.description ?? '',
26
- expectsPR: normalizedFrontmatter.expectsPR ?? false,
27
- content: body.trim(),
28
- };
29
- }
30
- const workflowLoader = createMarkdownLoader({
31
- directory: WORKFLOWS_DIR,
32
- logger,
33
- parseFile: parseWorkflowFile,
34
- });
35
- export function listWorkflows() {
36
- return workflowLoader.load();
37
- }
38
- export function getWorkflow(id) {
39
- return workflowLoader.load().find((w) => w.id === id) ?? null;
40
- }
41
- export function getWorkflowContent(id) {
42
- return getWorkflow(id)?.content ?? null;
43
- }
44
- export function clearWorkflowCache() {
45
- workflowLoader.clearCache();
46
- }
47
- //# sourceMappingURL=workflows.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../src/backend/prompts/workflows.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;AAwBzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAG/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAI3C,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;AAMpF,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AASH,SAAS,iBAAiB,CAAC,SAAiB,EAAE,OAAe,EAAE,EAAU;IACvE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,EAAE;QACtD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM;KAC/B,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3E,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtF,OAAO;QACL,EAAE;QACF,IAAI,EAAE,qBAAqB,CAAC,IAAI,IAAI,EAAE;QACtC,WAAW,EAAE,qBAAqB,CAAC,WAAW,IAAI,EAAE;QACpD,SAAS,EAAE,qBAAqB,CAAC,SAAS,IAAI,KAAK;QACnD,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;KACrB,CAAC;AACJ,CAAC;AAGD,MAAM,cAAc,GAAG,oBAAoB,CAAW;IACpD,SAAS,EAAE,aAAa;IACxB,MAAM;IACN,SAAS,EAAE,iBAAiB;CAC7B,CAAC,CAAC;AASH,MAAM,UAAU,aAAa;IAC3B,OAAO,cAAc,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAKD,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,OAAO,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;AAChE,CAAC;AAMD,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,WAAW,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;AAC1C,CAAC;AAKD,MAAM,UAAU,kBAAkB;IAChC,cAAc,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=workflows.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflows.test.d.ts","sourceRoot":"","sources":["../../../../src/backend/prompts/workflows.test.ts"],"names":[],"mappings":""}
@@ -1,128 +0,0 @@
1
- import { afterEach, describe, expect, it } from 'vitest';
2
- import { clearWorkflowCache, DEFAULT_FIRST_SESSION, DEFAULT_FOLLOWUP, getWorkflow, getWorkflowContent, listWorkflows, } from './workflows.js';
3
- describe('workflows', () => {
4
- afterEach(() => {
5
- clearWorkflowCache();
6
- });
7
- describe('listWorkflows', () => {
8
- it('should return an array of workflows', () => {
9
- const workflows = listWorkflows();
10
- expect(Array.isArray(workflows)).toBe(true);
11
- });
12
- it('should load all workflow files from prompts/workflows/', () => {
13
- const workflows = listWorkflows();
14
- expect(workflows.length).toBeGreaterThanOrEqual(4);
15
- });
16
- it('should include expected workflow IDs', () => {
17
- const workflows = listWorkflows();
18
- const ids = workflows.map((w) => w.id);
19
- expect(ids).toContain('feature');
20
- expect(ids).toContain('bugfix');
21
- expect(ids).toContain('explore');
22
- expect(ids).toContain('followup');
23
- });
24
- it('should parse workflow metadata correctly', () => {
25
- const workflows = listWorkflows();
26
- const feature = workflows.find((w) => w.id === 'feature');
27
- expect(feature).toBeDefined();
28
- expect(feature?.name).toBe('Feature');
29
- expect(feature?.description).toBe('End-to-end feature implementation with PR creation');
30
- expect(feature?.expectsPR).toBe(true);
31
- });
32
- it('should parse expectsPR as false when specified', () => {
33
- const workflows = listWorkflows();
34
- const explore = workflows.find((w) => w.id === 'explore');
35
- expect(explore).toBeDefined();
36
- expect(explore?.expectsPR).toBe(false);
37
- });
38
- it('should cache results after first call', () => {
39
- const workflows1 = listWorkflows();
40
- const workflows2 = listWorkflows();
41
- expect(workflows1).toBe(workflows2);
42
- });
43
- });
44
- describe('getWorkflow', () => {
45
- it('should return a workflow by ID', () => {
46
- const workflow = getWorkflow('feature');
47
- expect(workflow).toBeDefined();
48
- expect(workflow?.id).toBe('feature');
49
- expect(workflow?.name).toBe('Feature');
50
- });
51
- it('should return null for non-existent workflow', () => {
52
- const workflow = getWorkflow('nonexistent-workflow-id');
53
- expect(workflow).toBeNull();
54
- });
55
- it('should return workflow with content', () => {
56
- const workflow = getWorkflow('feature');
57
- expect(workflow?.content).toBeDefined();
58
- expect(workflow?.content.length).toBeGreaterThan(0);
59
- expect(workflow?.content).toContain('Feature Implementation Workflow');
60
- });
61
- it('should strip frontmatter from content', () => {
62
- const workflow = getWorkflow('feature');
63
- expect(workflow?.content).not.toMatch(/^---/);
64
- expect(workflow?.content).not.toContain('expectsPR:');
65
- });
66
- });
67
- describe('getWorkflowContent', () => {
68
- it('should return content string for existing workflow', () => {
69
- const content = getWorkflowContent('feature');
70
- expect(content).toBeDefined();
71
- expect(typeof content).toBe('string');
72
- expect(content?.length).toBeGreaterThan(0);
73
- });
74
- it('should return null for non-existent workflow', () => {
75
- const content = getWorkflowContent('nonexistent-workflow-id');
76
- expect(content).toBeNull();
77
- });
78
- it('should return markdown content without frontmatter', () => {
79
- const content = getWorkflowContent('bugfix');
80
- expect(content).toContain('Bug Fix Workflow');
81
- expect(content).not.toMatch(/^---/);
82
- expect(content).not.toContain('expectsPR:');
83
- });
84
- });
85
- describe('constants', () => {
86
- it('should have valid DEFAULT_FIRST_SESSION workflow', () => {
87
- const workflow = getWorkflow(DEFAULT_FIRST_SESSION);
88
- expect(workflow).toBeDefined();
89
- expect(workflow?.id).toBe('feature');
90
- });
91
- it('should have valid DEFAULT_FOLLOWUP workflow', () => {
92
- const workflow = getWorkflow(DEFAULT_FOLLOWUP);
93
- expect(workflow).toBeDefined();
94
- expect(workflow?.id).toBe('followup');
95
- });
96
- });
97
- describe('clearWorkflowCache', () => {
98
- it('should clear the cache and allow fresh reload', () => {
99
- const workflows1 = listWorkflows();
100
- clearWorkflowCache();
101
- const workflows2 = listWorkflows();
102
- expect(workflows1).not.toBe(workflows2);
103
- expect(workflows1.length).toBe(workflows2.length);
104
- });
105
- });
106
- describe('workflow content', () => {
107
- it('should have meaningful content for all workflows', () => {
108
- const workflows = listWorkflows();
109
- for (const workflow of workflows) {
110
- expect(workflow.content.length).toBeGreaterThan(100);
111
- expect(workflow.content).toContain('#');
112
- }
113
- });
114
- it('should have descriptions for all workflows', () => {
115
- const workflows = listWorkflows();
116
- for (const workflow of workflows) {
117
- expect(workflow.description.length).toBeGreaterThan(10);
118
- }
119
- });
120
- it('should have proper names for all workflows', () => {
121
- const workflows = listWorkflows();
122
- for (const workflow of workflows) {
123
- expect(workflow.name[0]).toBe(workflow.name[0].toUpperCase());
124
- }
125
- });
126
- });
127
- });
128
- //# sourceMappingURL=workflows.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflows.test.js","sourceRoot":"","sources":["../../../../src/backend/prompts/workflows.test.ts"],"names":[],"mappings":"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"}
@@ -1,86 +0,0 @@
1
- ---
2
- name: Bug Fix
3
- description: Investigate and fix bugs with regression tests
4
- expectsPR: true
5
- ---
6
-
7
- # Bug Fix Workflow
8
-
9
- You are fixing a bug. Follow this workflow to ensure the fix is correct and doesn't introduce regressions.
10
-
11
- ## Workflow Steps
12
-
13
- ### 1. Reproduce the Bug
14
- - Understand the reported symptoms
15
- - Reproduce the issue locally if possible
16
- - Document the reproduction steps
17
-
18
- ### 2. Investigate Root Cause
19
- - Use search tools to find relevant code
20
- - Trace the code path that leads to the bug
21
- - Identify the root cause, not just symptoms
22
-
23
- ### 3. Write a Failing Test
24
- - Create a test that reproduces the bug
25
- - Verify the test fails before the fix
26
- - This ensures the bug is actually fixed
27
-
28
- ### 4. Implement the Fix
29
- - Make the minimal change needed to fix the bug
30
- - Avoid refactoring or feature additions
31
- - Keep the fix focused and reviewable
32
-
33
- ### 5. Verify the Fix
34
- - Confirm your test now passes
35
- - Run the full test suite to check for regressions
36
- - Test related functionality manually if needed
37
-
38
- ### 6. Verify Build and Lint
39
- - Run `pnpm typecheck` to catch type errors
40
- - Run `pnpm check:fix` to fix linting issues
41
- - Ensure the build passes
42
-
43
- ### 7. Capture UI Screenshots (if applicable)
44
-
45
- If your changes affect the UI:
46
-
47
- 1. Read `factory-factory.json` for the `scripts.run` command, pick a free port, replace `{port}`, and start it in the background.
48
- 2. Use `browser_navigate` to visit the dev server URL
49
- 3. Determine the most relevant screen showing your changes and capture a screenshot
50
- 4. Save screenshots to `.factory-factory/screenshots/` with descriptive names
51
- 5. Commit the screenshots
52
- 6. Reference them in the PR body using raw GitHub URLs:
53
- `![Description](https://raw.githubusercontent.com/{owner}/{repo}/{branch}/.factory-factory/screenshots/filename.png)`
54
-
55
- ### 8. Create Pull Request
56
- - Commit with a descriptive message referencing the bug
57
- - Push your branch: `git push -u origin HEAD`
58
- - Create the PR using the GitHub CLI with a body file to preserve formatting:
59
- ```bash
60
- cat > /tmp/pr-body.md << 'EOF'
61
- ## Bug Fix
62
- [Description of the bug and how it was fixed]
63
-
64
- ## Reproduction Steps
65
- 1. [Steps to reproduce the original bug]
66
-
67
- ## Fix Explanation
68
- [Technical explanation of the fix]
69
-
70
- ## Testing
71
- - [How to verify the fix works]
72
- EOF
73
- gh pr create --title "Fix: Brief description" --body-file /tmp/pr-body.md
74
- ```
75
- - **IMPORTANT**: Always append the following signature as the very last lines of the PR body, after a horizontal rule:
76
- ```
77
- ---
78
- 🏭 Forged in [Factory Factory](https://factoryfactory.ai)
79
- ```
80
-
81
- ## Guidelines
82
-
83
- - **Understand before fixing**: Avoid shotgun debugging
84
- - **Minimal changes**: Fix only what's broken
85
- - **Regression tests**: Every bug fix should include a test
86
- - **Document the root cause**: Help future developers understand