factory-factory 0.1.6 → 0.2.1
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.
- package/README.md +43 -0
- package/dist/client/assets/{_basePickBy-DajQ9Hwg.js → _basePickBy-DikkcLWt.js} +1 -1
- package/dist/client/assets/{_baseUniq-zWs3FMxS.js → _baseUniq-DXQLkszL.js} +1 -1
- package/dist/client/assets/{arc-dt9Nl-Dq.js → arc-PlxYF4gs.js} +1 -1
- package/dist/client/assets/{architectureDiagram-VXUJARFQ-C5wiwQ6w.js → architectureDiagram-VXUJARFQ-C15kzB-a.js} +1 -1
- package/dist/client/assets/{blockDiagram-VD42YOAC-BL1q8xS6.js → blockDiagram-VD42YOAC-CpsrSECi.js} +1 -1
- package/dist/client/assets/{c4Diagram-YG6GDRKO-Dv1O4aKb.js → c4Diagram-YG6GDRKO-lUG_fBjc.js} +1 -1
- package/dist/client/assets/channel-DibAzDxU.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-BW5CgIaZ.js → chunk-4BX2VUAB-DL5SmHl8.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-dsZw0-8o.js → chunk-55IACEB6-6RonniJP.js} +1 -1
- package/dist/client/assets/{chunk-B4BG7PRW-DSq_vqsd.js → chunk-B4BG7PRW-BurHg0kj.js} +1 -1
- package/dist/client/assets/{chunk-DI55MBZ5-B6W9Xx-E.js → chunk-DI55MBZ5-BJ01eABM.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-EkShH345.js → chunk-FMBD7UC4-BnvMi7Ay.js} +1 -1
- package/dist/client/assets/{chunk-QN33PNHL-crZsF4CZ.js → chunk-QN33PNHL-CHzCvA9V.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-I2VE0Wb_.js → chunk-QZHKN3VN-BYtef6TB.js} +1 -1
- package/dist/client/assets/{chunk-TZMSLE5B-C7jlaQSZ.js → chunk-TZMSLE5B-5jRzcEei.js} +1 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-moaJKwcI.js +1 -0
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-moaJKwcI.js +1 -0
- package/dist/client/assets/clone-Cl_PwNgC.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-BO-xivMh.js → cose-bilkent-S5V4N54A-BRiIkmzf.js} +1 -1
- package/dist/client/assets/{dagre-6UL2VRFP-DHQ23PkB.js → dagre-6UL2VRFP-DB-glvK1.js} +1 -1
- package/dist/client/assets/{diagram-PSM6KHXK-BxRMvPjH.js → diagram-PSM6KHXK-CivlU3GF.js} +1 -1
- package/dist/client/assets/{diagram-QEK2KX5R-D3MlWiHH.js → diagram-QEK2KX5R-ux8xYm0V.js} +1 -1
- package/dist/client/assets/{diagram-S2PKOQOG-GqHWSGmU.js → diagram-S2PKOQOG-BQ2G1KUX.js} +1 -1
- package/dist/client/assets/{erDiagram-Q2GNP2WA-BeBCYx09.js → erDiagram-Q2GNP2WA-pDV9J51h.js} +1 -1
- package/dist/client/assets/{flowDiagram-NV44I4VS-BhiNuw5m.js → flowDiagram-NV44I4VS-BzDPdmg2.js} +1 -1
- package/dist/client/assets/{ganttDiagram-JELNMOA3-esGofibX.js → ganttDiagram-JELNMOA3-asSHWQ1i.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-NY62KEGX-9-jKu3lH.js → gitGraphDiagram-NY62KEGX-Duv9FC3a.js} +1 -1
- package/dist/client/assets/{graph-BUbcMD9p.js → graph-6ULGC9RP.js} +1 -1
- package/dist/client/assets/index-CwyuSNf-.css +1 -0
- package/dist/client/assets/{index-H9sJ0N5K.js → index-DTaPBU72.js} +148 -143
- package/dist/client/assets/{infoDiagram-WHAUD3N6-ClZrKdUe.js → infoDiagram-WHAUD3N6-BXQPO9ey.js} +1 -1
- package/dist/client/assets/{journeyDiagram-XKPGCS4Q-DmsRN3so.js → journeyDiagram-XKPGCS4Q-BTZFCnxJ.js} +1 -1
- package/dist/client/assets/{kanban-definition-3W4ZIXB7-CmdMZ_Zd.js → kanban-definition-3W4ZIXB7-BgM5-joq.js} +1 -1
- package/dist/client/assets/{layout-CXYMNiPn.js → layout-upXVONoQ.js} +1 -1
- package/dist/client/assets/{linear-BzUBdND-.js → linear-DSEaz9ry.js} +1 -1
- package/dist/client/assets/{mindmap-definition-VGOIOE7T-DCvV_zTA.js → mindmap-definition-VGOIOE7T-BWg5D2xt.js} +1 -1
- package/dist/client/assets/{pieDiagram-ADFJNKIX-Bx7BQhbi.js → pieDiagram-ADFJNKIX-DiebpcAz.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-AYHSOK5B-CGxQ_b3J.js → quadrantDiagram-AYHSOK5B-CRdJB1rK.js} +1 -1
- package/dist/client/assets/{requirementDiagram-UZGBJVZJ-NoDu5jpJ.js → requirementDiagram-UZGBJVZJ-BWWp8mm2.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-TZEHDZUN-CpAjh0g1.js → sankeyDiagram-TZEHDZUN-Be_z4SEy.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-WL72ISMW-mmMtG6mU.js → sequenceDiagram-WL72ISMW-Cmh_NUjH.js} +1 -1
- package/dist/client/assets/{stateDiagram-FKZM4ZOC-Q-e95wwc.js → stateDiagram-FKZM4ZOC-CMVA9mym.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-CELclHRO.js +1 -0
- package/dist/client/assets/{terminal-instance-CD7U8DwN.js → terminal-instance-CihJB_Qi.js} +1 -1
- package/dist/client/assets/{timeline-definition-IT6M3QCI-DaFIg2SE.js → timeline-definition-IT6M3QCI-CkTun4nl.js} +1 -1
- package/dist/client/assets/{treemap-KMMF4GRG-DI1xs5dK.js → treemap-KMMF4GRG-EA1NDtbB.js} +1 -1
- package/dist/client/assets/{xychartDiagram-PRI3JC2R-BwFwAmKL.js → xychartDiagram-PRI3JC2R-DZ9QOnNM.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/prisma/generated/commonInputTypes.d.ts +60 -0
- package/dist/prisma/generated/commonInputTypes.d.ts.map +1 -1
- package/dist/prisma/generated/enums.d.ts +11 -5
- package/dist/prisma/generated/enums.d.ts.map +1 -1
- package/dist/prisma/generated/enums.js +10 -5
- package/dist/prisma/generated/enums.js.map +1 -1
- package/dist/prisma/generated/internal/class.js +2 -2
- package/dist/prisma/generated/internal/class.js.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespace.d.ts +20 -0
- package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespace.js +19 -0
- package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +19 -0
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.js +19 -0
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/prisma/generated/models/UserSettings.d.ts +241 -1
- package/dist/prisma/generated/models/UserSettings.d.ts.map +1 -1
- package/dist/prisma/generated/models/Workspace.d.ts +437 -1
- package/dist/prisma/generated/models/Workspace.d.ts.map +1 -1
- package/dist/prompts/workflows/pr-review-fix.md +49 -0
- package/dist/prompts/workflows/ratchet.md +87 -0
- package/dist/src/backend/agents/process-adapter.d.ts +2 -2
- package/dist/src/backend/agents/process-adapter.d.ts.map +1 -1
- package/dist/src/backend/agents/process-adapter.js +2 -2
- package/dist/src/backend/agents/process-adapter.js.map +1 -1
- package/dist/src/backend/app-context.d.ts +2 -2
- package/dist/src/backend/app-context.d.ts.map +1 -1
- package/dist/src/backend/app-context.js +2 -2
- package/dist/src/backend/app-context.js.map +1 -1
- package/dist/src/backend/claude/index.d.ts +1 -1
- package/dist/src/backend/claude/index.d.ts.map +1 -1
- package/dist/src/backend/claude/index.js +2 -2
- package/dist/src/backend/claude/index.js.map +1 -1
- package/dist/src/backend/claude/monitoring.js +1 -1
- package/dist/src/backend/claude/monitoring.js.map +1 -1
- package/dist/src/backend/clients/git.client.d.ts +1 -0
- package/dist/src/backend/clients/git.client.d.ts.map +1 -1
- package/dist/src/backend/clients/git.client.js +28 -3
- package/dist/src/backend/clients/git.client.js.map +1 -1
- package/dist/src/backend/clients/git.client.test.js +52 -8
- package/dist/src/backend/clients/git.client.test.js.map +1 -1
- package/dist/src/backend/interceptors/conversation-rename.interceptor.d.ts.map +1 -1
- package/dist/src/backend/interceptors/conversation-rename.interceptor.js +7 -3
- package/dist/src/backend/interceptors/conversation-rename.interceptor.js.map +1 -1
- package/dist/src/backend/interceptors/git-push.interceptor.d.ts +3 -0
- package/dist/src/backend/interceptors/git-push.interceptor.d.ts.map +1 -0
- package/dist/src/backend/interceptors/git-push.interceptor.js +31 -0
- package/dist/src/backend/interceptors/git-push.interceptor.js.map +1 -0
- package/dist/src/backend/interceptors/index.d.ts.map +1 -1
- package/dist/src/backend/interceptors/index.js +2 -0
- package/dist/src/backend/interceptors/index.js.map +1 -1
- package/dist/src/backend/lib/file-helpers.d.ts +1 -0
- package/dist/src/backend/lib/file-helpers.d.ts.map +1 -1
- package/dist/src/backend/lib/file-helpers.js +10 -1
- package/dist/src/backend/lib/file-helpers.js.map +1 -1
- package/dist/src/backend/lib/file-helpers.test.js +17 -2
- package/dist/src/backend/lib/file-helpers.test.js.map +1 -1
- package/dist/src/backend/resource_accessors/user-settings.accessor.d.ts +9 -0
- package/dist/src/backend/resource_accessors/user-settings.accessor.d.ts.map +1 -1
- package/dist/src/backend/resource_accessors/user-settings.accessor.js.map +1 -1
- package/dist/src/backend/resource_accessors/workspace.accessor.d.ts +32 -1
- package/dist/src/backend/resource_accessors/workspace.accessor.d.ts.map +1 -1
- package/dist/src/backend/resource_accessors/workspace.accessor.js +41 -0
- package/dist/src/backend/resource_accessors/workspace.accessor.js.map +1 -1
- package/dist/src/backend/resource_accessors/workspace.accessor.test.d.ts +2 -0
- package/dist/src/backend/resource_accessors/workspace.accessor.test.d.ts.map +1 -0
- package/dist/src/backend/resource_accessors/workspace.accessor.test.js +44 -0
- package/dist/src/backend/resource_accessors/workspace.accessor.test.js.map +1 -0
- package/dist/src/backend/server.js +3 -3
- package/dist/src/backend/server.js.map +1 -1
- package/dist/src/backend/services/chat-message-handlers/handlers/handlers.test.js +1 -1
- package/dist/src/backend/services/chat-message-handlers/handlers/handlers.test.js.map +1 -1
- package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.d.ts.map +1 -1
- package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.js +5 -1
- package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.js.map +1 -1
- package/dist/src/backend/services/chat-message-handlers.service.js +1 -1
- package/dist/src/backend/services/chat-message-handlers.service.js.map +1 -1
- package/dist/src/backend/services/ci-fixer.service.d.ts.map +1 -1
- package/dist/src/backend/services/ci-fixer.service.js +12 -2
- package/dist/src/backend/services/ci-fixer.service.js.map +1 -1
- package/dist/src/backend/services/ci-fixer.service.test.js +3 -3
- package/dist/src/backend/services/ci-fixer.service.test.js.map +1 -1
- package/dist/src/backend/services/ci-monitor.service.d.ts.map +1 -1
- package/dist/src/backend/services/ci-monitor.service.js +3 -1
- package/dist/src/backend/services/ci-monitor.service.js.map +1 -1
- package/dist/src/backend/services/data-backup.service.d.ts +152 -0
- package/dist/src/backend/services/data-backup.service.d.ts.map +1 -0
- package/dist/src/backend/services/data-backup.service.js +421 -0
- package/dist/src/backend/services/data-backup.service.js.map +1 -0
- package/dist/src/backend/services/git-ops.service.d.ts.map +1 -1
- package/dist/src/backend/services/git-ops.service.js +1 -6
- package/dist/src/backend/services/git-ops.service.js.map +1 -1
- package/dist/src/backend/services/github-cli.service.d.ts +25 -1
- package/dist/src/backend/services/github-cli.service.d.ts.map +1 -1
- package/dist/src/backend/services/github-cli.service.js +166 -31
- package/dist/src/backend/services/github-cli.service.js.map +1 -1
- package/dist/src/backend/services/github-cli.service.test.d.ts +2 -0
- package/dist/src/backend/services/github-cli.service.test.d.ts.map +1 -0
- package/dist/src/backend/services/github-cli.service.test.js +302 -0
- package/dist/src/backend/services/github-cli.service.test.js.map +1 -0
- package/dist/src/backend/services/index.d.ts +3 -0
- package/dist/src/backend/services/index.d.ts.map +1 -1
- package/dist/src/backend/services/index.js +3 -0
- package/dist/src/backend/services/index.js.map +1 -1
- package/dist/src/backend/services/kanban-state.service.d.ts +2 -2
- package/dist/src/backend/services/kanban-state.service.d.ts.map +1 -1
- package/dist/src/backend/services/kanban-state.service.js +14 -19
- package/dist/src/backend/services/kanban-state.service.js.map +1 -1
- package/dist/src/backend/services/kanban-state.service.test.js +68 -55
- package/dist/src/backend/services/kanban-state.service.test.js.map +1 -1
- package/dist/src/backend/services/message-state.service.d.ts +3 -0
- package/dist/src/backend/services/message-state.service.d.ts.map +1 -1
- package/dist/src/backend/services/message-state.service.js +26 -0
- package/dist/src/backend/services/message-state.service.js.map +1 -1
- package/dist/src/backend/services/pr-review-fixer.service.d.ts +56 -0
- package/dist/src/backend/services/pr-review-fixer.service.d.ts.map +1 -0
- package/dist/src/backend/services/pr-review-fixer.service.js +257 -0
- package/dist/src/backend/services/pr-review-fixer.service.js.map +1 -0
- package/dist/src/backend/services/pr-review-monitor.service.d.ts +18 -0
- package/dist/src/backend/services/pr-review-monitor.service.d.ts.map +1 -0
- package/dist/src/backend/services/pr-review-monitor.service.js +209 -0
- package/dist/src/backend/services/pr-review-monitor.service.js.map +1 -0
- package/dist/src/backend/services/ratchet.service.d.ts +115 -0
- package/dist/src/backend/services/ratchet.service.d.ts.map +1 -0
- package/dist/src/backend/services/ratchet.service.js +616 -0
- package/dist/src/backend/services/ratchet.service.js.map +1 -0
- package/dist/src/backend/services/ratchet.service.test.d.ts +2 -0
- package/dist/src/backend/services/ratchet.service.test.d.ts.map +1 -0
- package/dist/src/backend/services/ratchet.service.test.js +254 -0
- package/dist/src/backend/services/ratchet.service.test.js.map +1 -0
- package/dist/src/backend/services/session-file-logger.service.d.ts +1 -0
- package/dist/src/backend/services/session-file-logger.service.d.ts.map +1 -1
- package/dist/src/backend/services/session-file-logger.service.js +63 -37
- package/dist/src/backend/services/session-file-logger.service.js.map +1 -1
- package/dist/src/backend/services/session-file-logger.service.test.js +107 -1
- package/dist/src/backend/services/session-file-logger.service.test.js.map +1 -1
- package/dist/src/backend/services/session.prompt-builder.d.ts +2 -0
- package/dist/src/backend/services/session.prompt-builder.d.ts.map +1 -1
- package/dist/src/backend/services/session.prompt-builder.js +1 -2
- package/dist/src/backend/services/session.prompt-builder.js.map +1 -1
- package/dist/src/backend/services/session.prompt-builder.test.js +19 -7
- package/dist/src/backend/services/session.prompt-builder.test.js.map +1 -1
- package/dist/src/backend/services/session.service.d.ts +3 -0
- package/dist/src/backend/services/session.service.d.ts.map +1 -1
- package/dist/src/backend/services/session.service.js +40 -13
- package/dist/src/backend/services/session.service.js.map +1 -1
- package/dist/src/backend/services/session.service.test.js +22 -0
- package/dist/src/backend/services/session.service.test.js.map +1 -1
- package/dist/src/backend/services/workspace-query.service.d.ts +18 -1
- package/dist/src/backend/services/workspace-query.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace-query.service.js +14 -2
- package/dist/src/backend/services/workspace-query.service.js.map +1 -1
- package/dist/src/backend/services/worktree-lifecycle-init.test.d.ts +2 -0
- package/dist/src/backend/services/worktree-lifecycle-init.test.d.ts.map +1 -0
- package/dist/src/backend/services/worktree-lifecycle-init.test.js +198 -0
- package/dist/src/backend/services/worktree-lifecycle-init.test.js.map +1 -0
- package/dist/src/backend/services/worktree-lifecycle.service.d.ts +17 -5
- package/dist/src/backend/services/worktree-lifecycle.service.d.ts.map +1 -1
- package/dist/src/backend/services/worktree-lifecycle.service.js +186 -11
- package/dist/src/backend/services/worktree-lifecycle.service.js.map +1 -1
- package/dist/src/backend/trpc/admin.trpc.d.ts +190 -3
- package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/admin.trpc.js +19 -5
- package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
- package/dist/src/backend/trpc/github.trpc.d.ts +15 -0
- package/dist/src/backend/trpc/github.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/github.trpc.js +35 -1
- package/dist/src/backend/trpc/github.trpc.js.map +1 -1
- package/dist/src/backend/trpc/index.d.ts +438 -7
- package/dist/src/backend/trpc/index.d.ts.map +1 -1
- package/dist/src/backend/trpc/project.trpc.d.ts +20 -0
- package/dist/src/backend/trpc/project.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/session.trpc.d.ts +40 -0
- package/dist/src/backend/trpc/session.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/user-settings.trpc.d.ts +27 -0
- package/dist/src/backend/trpc/user-settings.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/user-settings.trpc.js +23 -1
- package/dist/src/backend/trpc/user-settings.trpc.js.map +1 -1
- package/dist/src/backend/trpc/workspace/init.trpc.d.ts +10 -0
- package/dist/src/backend/trpc/workspace/init.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts +20 -0
- package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace.trpc.d.ts +146 -4
- package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace.trpc.js +19 -1
- package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
- package/dist/src/shared/github-types.d.ts +1 -0
- package/dist/src/shared/github-types.d.ts.map +1 -1
- package/dist/src/shared/workspace-words.d.ts +4 -0
- package/dist/src/shared/workspace-words.d.ts.map +1 -0
- package/dist/src/shared/workspace-words.js +68 -0
- package/dist/src/shared/workspace-words.js.map +1 -0
- package/dist/tsconfig.backend.tsbuildinfo +1 -1
- package/package.json +7 -1
- package/prisma/migrations/20260204180116_watch_prs/migration.sql +90 -0
- package/prisma/migrations/20260204200000_simplify_kanban_columns/migration.sql +72 -0
- package/prisma/migrations/20260204210000_add_workspace_ratchet_enabled/migration.sql +2 -0
- package/prisma/migrations/20260205000000_add_is_auto_generated_branch/migration.sql +2 -0
- package/prisma/migrations/20260205012721_add_ratchet_last_push_at/migration.sql +2 -0
- package/prisma/schema.prisma +40 -7
- package/prompts/workflows/pr-review-fix.md +49 -0
- package/prompts/workflows/ratchet.md +87 -0
- package/dist/client/assets/channel-BfSRU0Jp.js +0 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-Cmvb3apC.js +0 -1
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-Cmvb3apC.js +0 -1
- package/dist/client/assets/clone-1F-laTan.js +0 -1
- package/dist/client/assets/index-BBvNRzPg.css +0 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-CYMClSNi.js +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "factory-factory",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Workspace-based coding environment for running multiple Claude Code sessions in parallel",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"scripts": {
|
|
42
42
|
"dev": "node scripts/ensure-native-modules.mjs node && tsx src/cli/index.ts serve --dev",
|
|
43
43
|
"build": "tsc -p tsconfig.backend.json && tsc-alias -p tsconfig.backend.json --resolve-full-paths && cp -r prompts dist/ && vite build",
|
|
44
|
+
"build:storybook": "storybook build",
|
|
44
45
|
"start": "node scripts/ensure-native-modules.mjs node && tsx src/cli/index.ts serve",
|
|
45
46
|
"test": "vitest run",
|
|
46
47
|
"test:watch": "vitest",
|
|
@@ -151,9 +152,13 @@
|
|
|
151
152
|
]
|
|
152
153
|
},
|
|
153
154
|
"pnpm": {
|
|
155
|
+
"publicHoistPattern": [
|
|
156
|
+
"@types/*"
|
|
157
|
+
],
|
|
154
158
|
"onlyBuiltDependencies": [
|
|
155
159
|
"@prisma/engines",
|
|
156
160
|
"better-sqlite3",
|
|
161
|
+
"electron",
|
|
157
162
|
"esbuild",
|
|
158
163
|
"node-pty",
|
|
159
164
|
"prisma",
|
|
@@ -161,6 +166,7 @@
|
|
|
161
166
|
"sharp"
|
|
162
167
|
],
|
|
163
168
|
"overrides": {
|
|
169
|
+
"@isaacs/brace-expansion": ">=5.0.1",
|
|
164
170
|
"braces": ">=3.0.3",
|
|
165
171
|
"micromatch": ">=4.0.8",
|
|
166
172
|
"tar": ">=7.5.0",
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Warnings:
|
|
3
|
+
|
|
4
|
+
- You are about to alter the column `cachedSlashCommands` on the `UserSettings` table. The data in that column could be lost. The data in that column will be cast from `String` to `Json`.
|
|
5
|
+
- You are about to alter the column `workspaceOrder` on the `UserSettings` table. The data in that column could be lost. The data in that column will be cast from `String` to `Json`.
|
|
6
|
+
|
|
7
|
+
*/
|
|
8
|
+
-- RedefineTables
|
|
9
|
+
PRAGMA defer_foreign_keys=ON;
|
|
10
|
+
PRAGMA foreign_keys=OFF;
|
|
11
|
+
CREATE TABLE "new_UserSettings" (
|
|
12
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
13
|
+
"userId" TEXT NOT NULL DEFAULT 'default',
|
|
14
|
+
"preferredIde" TEXT NOT NULL DEFAULT 'cursor',
|
|
15
|
+
"customIdeCommand" TEXT,
|
|
16
|
+
"playSoundOnComplete" BOOLEAN NOT NULL DEFAULT true,
|
|
17
|
+
"notificationSoundPath" TEXT,
|
|
18
|
+
"workspaceOrder" JSONB,
|
|
19
|
+
"cachedSlashCommands" JSONB,
|
|
20
|
+
"autoFixCiIssues" BOOLEAN NOT NULL DEFAULT false,
|
|
21
|
+
"autoFixPrReviewComments" BOOLEAN NOT NULL DEFAULT false,
|
|
22
|
+
"prReviewFixAllowedUsers" JSONB,
|
|
23
|
+
"prReviewFixPrompt" TEXT,
|
|
24
|
+
"ratchetEnabled" BOOLEAN NOT NULL DEFAULT false,
|
|
25
|
+
"ratchetAutoFixCi" BOOLEAN NOT NULL DEFAULT true,
|
|
26
|
+
"ratchetAutoFixConflicts" BOOLEAN NOT NULL DEFAULT true,
|
|
27
|
+
"ratchetAutoFixReviews" BOOLEAN NOT NULL DEFAULT true,
|
|
28
|
+
"ratchetAutoMerge" BOOLEAN NOT NULL DEFAULT false,
|
|
29
|
+
"ratchetAllowedReviewers" JSONB,
|
|
30
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
31
|
+
"updatedAt" DATETIME NOT NULL
|
|
32
|
+
);
|
|
33
|
+
INSERT INTO "new_UserSettings" ("cachedSlashCommands", "createdAt", "customIdeCommand", "id", "playSoundOnComplete", "preferredIde", "updatedAt", "userId", "workspaceOrder") SELECT "cachedSlashCommands", "createdAt", "customIdeCommand", "id", "playSoundOnComplete", "preferredIde", "updatedAt", "userId", "workspaceOrder" FROM "UserSettings";
|
|
34
|
+
DROP TABLE "UserSettings";
|
|
35
|
+
ALTER TABLE "new_UserSettings" RENAME TO "UserSettings";
|
|
36
|
+
CREATE UNIQUE INDEX "UserSettings_userId_key" ON "UserSettings"("userId");
|
|
37
|
+
CREATE INDEX "UserSettings_userId_idx" ON "UserSettings"("userId");
|
|
38
|
+
CREATE TABLE "new_Workspace" (
|
|
39
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
40
|
+
"projectId" TEXT NOT NULL,
|
|
41
|
+
"name" TEXT NOT NULL,
|
|
42
|
+
"description" TEXT,
|
|
43
|
+
"status" TEXT NOT NULL DEFAULT 'NEW',
|
|
44
|
+
"worktreePath" TEXT,
|
|
45
|
+
"branchName" TEXT,
|
|
46
|
+
"initErrorMessage" TEXT,
|
|
47
|
+
"initOutput" TEXT,
|
|
48
|
+
"initStartedAt" DATETIME,
|
|
49
|
+
"initCompletedAt" DATETIME,
|
|
50
|
+
"initRetryCount" INTEGER NOT NULL DEFAULT 0,
|
|
51
|
+
"runScriptCommand" TEXT,
|
|
52
|
+
"runScriptCleanupCommand" TEXT,
|
|
53
|
+
"runScriptPid" INTEGER,
|
|
54
|
+
"runScriptPort" INTEGER,
|
|
55
|
+
"runScriptStartedAt" DATETIME,
|
|
56
|
+
"runScriptStatus" TEXT NOT NULL DEFAULT 'IDLE',
|
|
57
|
+
"prUrl" TEXT,
|
|
58
|
+
"githubIssueNumber" INTEGER,
|
|
59
|
+
"githubIssueUrl" TEXT,
|
|
60
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
61
|
+
"updatedAt" DATETIME NOT NULL,
|
|
62
|
+
"prNumber" INTEGER,
|
|
63
|
+
"prState" TEXT NOT NULL DEFAULT 'NONE',
|
|
64
|
+
"prReviewState" TEXT,
|
|
65
|
+
"prCiStatus" TEXT NOT NULL DEFAULT 'UNKNOWN',
|
|
66
|
+
"prUpdatedAt" DATETIME,
|
|
67
|
+
"prCiFailedAt" DATETIME,
|
|
68
|
+
"prCiLastNotifiedAt" DATETIME,
|
|
69
|
+
"prReviewLastCheckedAt" DATETIME,
|
|
70
|
+
"prReviewLastCommentId" TEXT,
|
|
71
|
+
"ratchetState" TEXT NOT NULL DEFAULT 'IDLE',
|
|
72
|
+
"ratchetLastCheckedAt" DATETIME,
|
|
73
|
+
"ratchetActiveSessionId" TEXT,
|
|
74
|
+
"ratchetLastCiRunId" TEXT,
|
|
75
|
+
"ratchetLastNotifiedState" TEXT,
|
|
76
|
+
"hasHadSessions" BOOLEAN NOT NULL DEFAULT false,
|
|
77
|
+
"cachedKanbanColumn" TEXT NOT NULL DEFAULT 'BACKLOG',
|
|
78
|
+
"stateComputedAt" DATETIME,
|
|
79
|
+
CONSTRAINT "Workspace_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
80
|
+
);
|
|
81
|
+
INSERT INTO "new_Workspace" ("branchName", "cachedKanbanColumn", "createdAt", "description", "githubIssueNumber", "githubIssueUrl", "hasHadSessions", "id", "initCompletedAt", "initErrorMessage", "initOutput", "initRetryCount", "initStartedAt", "name", "prCiFailedAt", "prCiLastNotifiedAt", "prCiStatus", "prNumber", "prReviewState", "prState", "prUpdatedAt", "prUrl", "projectId", "runScriptCleanupCommand", "runScriptCommand", "runScriptPid", "runScriptPort", "runScriptStartedAt", "runScriptStatus", "stateComputedAt", "status", "updatedAt", "worktreePath") SELECT "branchName", "cachedKanbanColumn", "createdAt", "description", "githubIssueNumber", "githubIssueUrl", "hasHadSessions", "id", "initCompletedAt", "initErrorMessage", "initOutput", "initRetryCount", "initStartedAt", "name", "prCiFailedAt", "prCiLastNotifiedAt", "prCiStatus", "prNumber", "prReviewState", "prState", "prUpdatedAt", "prUrl", "projectId", "runScriptCleanupCommand", "runScriptCommand", "runScriptPid", "runScriptPort", "runScriptStartedAt", "runScriptStatus", "stateComputedAt", "status", "updatedAt", "worktreePath" FROM "Workspace";
|
|
82
|
+
DROP TABLE "Workspace";
|
|
83
|
+
ALTER TABLE "new_Workspace" RENAME TO "Workspace";
|
|
84
|
+
CREATE INDEX "Workspace_projectId_idx" ON "Workspace"("projectId");
|
|
85
|
+
CREATE INDEX "Workspace_status_idx" ON "Workspace"("status");
|
|
86
|
+
CREATE INDEX "Workspace_cachedKanbanColumn_idx" ON "Workspace"("cachedKanbanColumn");
|
|
87
|
+
CREATE INDEX "Workspace_projectId_status_idx" ON "Workspace"("projectId", "status");
|
|
88
|
+
CREATE INDEX "Workspace_projectId_cachedKanbanColumn_idx" ON "Workspace"("projectId", "cachedKanbanColumn");
|
|
89
|
+
PRAGMA foreign_keys=ON;
|
|
90
|
+
PRAGMA defer_foreign_keys=OFF;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
-- Simplify KanbanColumn enum from 7 values to 3: WORKING, WAITING, DONE
|
|
2
|
+
-- Migration strategy:
|
|
3
|
+
-- - BACKLOG, IN_PROGRESS -> WORKING (initializing or actively working)
|
|
4
|
+
-- - PR_OPEN, WAITING, APPROVED -> WAITING (idle, waiting for input)
|
|
5
|
+
-- - MERGED, DONE -> DONE (completed)
|
|
6
|
+
|
|
7
|
+
-- Step 1: Update existing cachedKanbanColumn values to new enum values
|
|
8
|
+
UPDATE "Workspace"
|
|
9
|
+
SET "cachedKanbanColumn" = CASE
|
|
10
|
+
WHEN "cachedKanbanColumn" IN ('BACKLOG', 'IN_PROGRESS') THEN 'WORKING'
|
|
11
|
+
WHEN "cachedKanbanColumn" IN ('PR_OPEN', 'WAITING', 'APPROVED') THEN 'WAITING'
|
|
12
|
+
WHEN "cachedKanbanColumn" IN ('MERGED', 'DONE') THEN 'DONE'
|
|
13
|
+
ELSE 'WAITING'
|
|
14
|
+
END;
|
|
15
|
+
|
|
16
|
+
-- Step 2: Recreate table with new default value (WAITING instead of BACKLOG)
|
|
17
|
+
-- RedefineTables
|
|
18
|
+
PRAGMA defer_foreign_keys=ON;
|
|
19
|
+
PRAGMA foreign_keys=OFF;
|
|
20
|
+
CREATE TABLE "new_Workspace" (
|
|
21
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
22
|
+
"projectId" TEXT NOT NULL,
|
|
23
|
+
"name" TEXT NOT NULL,
|
|
24
|
+
"description" TEXT,
|
|
25
|
+
"status" TEXT NOT NULL DEFAULT 'NEW',
|
|
26
|
+
"worktreePath" TEXT,
|
|
27
|
+
"branchName" TEXT,
|
|
28
|
+
"initErrorMessage" TEXT,
|
|
29
|
+
"initOutput" TEXT,
|
|
30
|
+
"initStartedAt" DATETIME,
|
|
31
|
+
"initCompletedAt" DATETIME,
|
|
32
|
+
"initRetryCount" INTEGER NOT NULL DEFAULT 0,
|
|
33
|
+
"runScriptCommand" TEXT,
|
|
34
|
+
"runScriptCleanupCommand" TEXT,
|
|
35
|
+
"runScriptPid" INTEGER,
|
|
36
|
+
"runScriptPort" INTEGER,
|
|
37
|
+
"runScriptStartedAt" DATETIME,
|
|
38
|
+
"runScriptStatus" TEXT NOT NULL DEFAULT 'IDLE',
|
|
39
|
+
"prUrl" TEXT,
|
|
40
|
+
"githubIssueNumber" INTEGER,
|
|
41
|
+
"githubIssueUrl" TEXT,
|
|
42
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
43
|
+
"updatedAt" DATETIME NOT NULL,
|
|
44
|
+
"prNumber" INTEGER,
|
|
45
|
+
"prState" TEXT NOT NULL DEFAULT 'NONE',
|
|
46
|
+
"prReviewState" TEXT,
|
|
47
|
+
"prCiStatus" TEXT NOT NULL DEFAULT 'UNKNOWN',
|
|
48
|
+
"prUpdatedAt" DATETIME,
|
|
49
|
+
"prCiFailedAt" DATETIME,
|
|
50
|
+
"prCiLastNotifiedAt" DATETIME,
|
|
51
|
+
"prReviewLastCheckedAt" DATETIME,
|
|
52
|
+
"prReviewLastCommentId" TEXT,
|
|
53
|
+
"ratchetState" TEXT NOT NULL DEFAULT 'IDLE',
|
|
54
|
+
"ratchetLastCheckedAt" DATETIME,
|
|
55
|
+
"ratchetActiveSessionId" TEXT,
|
|
56
|
+
"ratchetLastCiRunId" TEXT,
|
|
57
|
+
"ratchetLastNotifiedState" TEXT,
|
|
58
|
+
"hasHadSessions" BOOLEAN NOT NULL DEFAULT false,
|
|
59
|
+
"cachedKanbanColumn" TEXT NOT NULL DEFAULT 'WAITING',
|
|
60
|
+
"stateComputedAt" DATETIME,
|
|
61
|
+
CONSTRAINT "Workspace_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
62
|
+
);
|
|
63
|
+
INSERT INTO "new_Workspace" ("branchName", "cachedKanbanColumn", "createdAt", "description", "githubIssueNumber", "githubIssueUrl", "hasHadSessions", "id", "initCompletedAt", "initErrorMessage", "initOutput", "initRetryCount", "initStartedAt", "name", "prCiFailedAt", "prCiLastNotifiedAt", "prCiStatus", "prNumber", "prReviewLastCheckedAt", "prReviewLastCommentId", "prReviewState", "prState", "prUpdatedAt", "prUrl", "projectId", "ratchetActiveSessionId", "ratchetLastCheckedAt", "ratchetLastCiRunId", "ratchetLastNotifiedState", "ratchetState", "runScriptCleanupCommand", "runScriptCommand", "runScriptPid", "runScriptPort", "runScriptStartedAt", "runScriptStatus", "stateComputedAt", "status", "updatedAt", "worktreePath") SELECT "branchName", "cachedKanbanColumn", "createdAt", "description", "githubIssueNumber", "githubIssueUrl", "hasHadSessions", "id", "initCompletedAt", "initErrorMessage", "initOutput", "initRetryCount", "initStartedAt", "name", "prCiFailedAt", "prCiLastNotifiedAt", "prCiStatus", "prNumber", "prReviewLastCheckedAt", "prReviewLastCommentId", "prReviewState", "prState", "prUpdatedAt", "prUrl", "projectId", "ratchetActiveSessionId", "ratchetLastCheckedAt", "ratchetLastCiRunId", "ratchetLastNotifiedState", "ratchetState", "runScriptCleanupCommand", "runScriptCommand", "runScriptPid", "runScriptPort", "runScriptStartedAt", "runScriptStatus", "stateComputedAt", "status", "updatedAt", "worktreePath" FROM "Workspace";
|
|
64
|
+
DROP TABLE "Workspace";
|
|
65
|
+
ALTER TABLE "new_Workspace" RENAME TO "Workspace";
|
|
66
|
+
CREATE INDEX "Workspace_projectId_idx" ON "Workspace"("projectId");
|
|
67
|
+
CREATE INDEX "Workspace_status_idx" ON "Workspace"("status");
|
|
68
|
+
CREATE INDEX "Workspace_cachedKanbanColumn_idx" ON "Workspace"("cachedKanbanColumn");
|
|
69
|
+
CREATE INDEX "Workspace_projectId_status_idx" ON "Workspace"("projectId", "status");
|
|
70
|
+
CREATE INDEX "Workspace_projectId_cachedKanbanColumn_idx" ON "Workspace"("projectId", "cachedKanbanColumn");
|
|
71
|
+
PRAGMA foreign_keys=ON;
|
|
72
|
+
PRAGMA defer_foreign_keys=OFF;
|
package/prisma/schema.prisma
CHANGED
|
@@ -46,15 +46,21 @@ enum CIStatus {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
enum KanbanColumn {
|
|
49
|
-
|
|
50
|
-
IN_PROGRESS
|
|
49
|
+
WORKING
|
|
51
50
|
WAITING
|
|
52
|
-
PR_OPEN
|
|
53
|
-
APPROVED
|
|
54
|
-
MERGED
|
|
55
51
|
DONE
|
|
56
52
|
}
|
|
57
53
|
|
|
54
|
+
enum RatchetState {
|
|
55
|
+
IDLE // No PR or ratchet not active for this workspace
|
|
56
|
+
CI_RUNNING // CI checks in progress
|
|
57
|
+
CI_FAILED // CI checks failed
|
|
58
|
+
MERGE_CONFLICT // Has merge conflicts with base branch
|
|
59
|
+
REVIEW_PENDING // Has unaddressed review comments
|
|
60
|
+
READY // Ready to merge (CI green, no conflicts, no pending reviews)
|
|
61
|
+
MERGED // PR has been merged
|
|
62
|
+
}
|
|
63
|
+
|
|
58
64
|
|
|
59
65
|
// Models
|
|
60
66
|
model Project {
|
|
@@ -104,6 +110,7 @@ model Workspace {
|
|
|
104
110
|
status WorkspaceStatus @default(NEW)
|
|
105
111
|
worktreePath String?
|
|
106
112
|
branchName String?
|
|
113
|
+
isAutoGeneratedBranch Boolean @default(false) // True if branch was auto-generated at creation time
|
|
107
114
|
|
|
108
115
|
// Initialization tracking (used by NEW, PROVISIONING, FAILED states)
|
|
109
116
|
initErrorMessage String?
|
|
@@ -139,11 +146,24 @@ model Workspace {
|
|
|
139
146
|
prCiFailedAt DateTime? // When CI first failed (cleared on success)
|
|
140
147
|
prCiLastNotifiedAt DateTime? // Last time we notified about CI failure
|
|
141
148
|
|
|
149
|
+
// PR Review tracking
|
|
150
|
+
prReviewLastCheckedAt DateTime? // When PR review comments were last checked
|
|
151
|
+
prReviewLastCommentId String? // ID of the last processed review comment
|
|
152
|
+
|
|
153
|
+
// Ratchet tracking (centralized PR progression)
|
|
154
|
+
ratchetEnabled Boolean @default(true) // Workspace-level ratchet toggle
|
|
155
|
+
ratchetState RatchetState @default(IDLE) // Current state in the ratchet progression
|
|
156
|
+
ratchetLastCheckedAt DateTime? // When ratchet last checked this workspace
|
|
157
|
+
ratchetLastPushAt DateTime? // When a push was last detected (for temporary ratchet animation)
|
|
158
|
+
ratchetActiveSessionId String? // ID of active fixer session (if any)
|
|
159
|
+
ratchetLastCiRunId String? // Track which CI run we processed
|
|
160
|
+
ratchetLastNotifiedState RatchetState? // Last state we notified the fixer about
|
|
161
|
+
|
|
142
162
|
// Activity tracking
|
|
143
163
|
hasHadSessions Boolean @default(false)
|
|
144
164
|
|
|
145
165
|
// Cached kanban column (for list performance)
|
|
146
|
-
cachedKanbanColumn KanbanColumn @default(
|
|
166
|
+
cachedKanbanColumn KanbanColumn @default(WAITING)
|
|
147
167
|
stateComputedAt DateTime? // Last kanban column computation
|
|
148
168
|
|
|
149
169
|
@@index([projectId])
|
|
@@ -203,9 +223,22 @@ model UserSettings {
|
|
|
203
223
|
// Cached slash commands (from Claude CLI initialize response)
|
|
204
224
|
cachedSlashCommands Json?
|
|
205
225
|
|
|
206
|
-
// CI Settings
|
|
226
|
+
// CI Settings (deprecated - use ratchet settings)
|
|
207
227
|
autoFixCiIssues Boolean @default(false) // Global toggle for CI auto-fixing
|
|
208
228
|
|
|
229
|
+
// PR Review Auto-Fix Settings (deprecated - use ratchet settings)
|
|
230
|
+
autoFixPrReviewComments Boolean @default(false) // Global toggle for PR review auto-fixing
|
|
231
|
+
prReviewFixAllowedUsers Json? // Array of GitHub usernames whose comments trigger auto-fix
|
|
232
|
+
prReviewFixPrompt String? // Custom instructions for the PR review fixing session
|
|
233
|
+
|
|
234
|
+
// Ratchet Settings (unified PR progression)
|
|
235
|
+
ratchetEnabled Boolean @default(false) // Default for new GitHub-issue-created workspaces
|
|
236
|
+
ratchetAutoFixCi Boolean @default(true) // Auto-fix CI failures
|
|
237
|
+
ratchetAutoFixConflicts Boolean @default(true) // Auto-resolve merge conflicts
|
|
238
|
+
ratchetAutoFixReviews Boolean @default(true) // Auto-address review comments
|
|
239
|
+
ratchetAutoMerge Boolean @default(false) // Auto-merge when ready
|
|
240
|
+
ratchetAllowedReviewers Json? // GitHub usernames whose reviews trigger auto-fix
|
|
241
|
+
|
|
209
242
|
createdAt DateTime @default(now())
|
|
210
243
|
updatedAt DateTime @updatedAt
|
|
211
244
|
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
Post a comment mentioning the reviewers. 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
|
+
|
|
43
|
+
## Guidelines
|
|
44
|
+
|
|
45
|
+
- **Operate autonomously**: Never ask the user what to do. Analyze, decide, implement, push.
|
|
46
|
+
- **Address all actionable comments**: Skip only truly informational comments
|
|
47
|
+
- **Keep changes focused**: Only change what was requested
|
|
48
|
+
- **Test before pushing**: Always run local checks first
|
|
49
|
+
- **Handle bot comments**: Analyze bot comments (coverage, CI) for actionable items. If purely informational, move on without code changes.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Ratchet
|
|
3
|
+
description: Automatically progress PR toward merge by fixing issues
|
|
4
|
+
expectsPR: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Ratchet - Automatic PR Progression
|
|
8
|
+
|
|
9
|
+
You are the Ratchet agent, responsible for automatically progressing this PR toward merge. You will receive notifications about different issues (CI failures, merge conflicts, review comments) and should address them systematically.
|
|
10
|
+
|
|
11
|
+
**CRITICAL: You must operate autonomously. Do not ask the user for input, confirmation, or clarification. Analyze the situation, make decisions, implement fixes, and push changes without waiting for approval.**
|
|
12
|
+
|
|
13
|
+
## Your Role
|
|
14
|
+
|
|
15
|
+
The Ratchet system monitors PRs and notifies you when action is needed. You must:
|
|
16
|
+
|
|
17
|
+
1. **Fix CI failures** - Investigate and fix broken tests, type errors, or lint issues
|
|
18
|
+
2. **Resolve merge conflicts** - Merge the base branch and resolve any conflicts
|
|
19
|
+
3. **Address review comments** - Implement changes requested by reviewers
|
|
20
|
+
|
|
21
|
+
## Handling Multiple Issues
|
|
22
|
+
|
|
23
|
+
You may receive notifications about new issues while working on something else. Follow this priority:
|
|
24
|
+
|
|
25
|
+
1. **CI failures** (highest priority) - Always address immediately
|
|
26
|
+
2. **Merge conflicts** - Address before continuing other work
|
|
27
|
+
3. **Review comments** - Address after CI is green and no conflicts
|
|
28
|
+
|
|
29
|
+
If you receive a notification about a higher-priority issue while working:
|
|
30
|
+
1. Stop your current work (don't push incomplete changes)
|
|
31
|
+
2. Address the new issue first
|
|
32
|
+
3. Resume your original task once the blocker is resolved
|
|
33
|
+
|
|
34
|
+
## Verification
|
|
35
|
+
|
|
36
|
+
Before considering any fix complete:
|
|
37
|
+
|
|
38
|
+
1. Run the test suite: `pnpm test`
|
|
39
|
+
2. Run type checking: `pnpm typecheck`
|
|
40
|
+
3. Run linting: `pnpm check:fix`
|
|
41
|
+
4. Check PR status: `gh pr checks <pr-number>`
|
|
42
|
+
|
|
43
|
+
Only push when all local checks pass.
|
|
44
|
+
|
|
45
|
+
## CI Failure Resolution
|
|
46
|
+
|
|
47
|
+
When notified of CI failures:
|
|
48
|
+
|
|
49
|
+
1. Use `gh pr checks <pr-number>` to see current status
|
|
50
|
+
2. Use `gh run view <run-id> --log-failed` to see detailed logs
|
|
51
|
+
3. Identify the root cause
|
|
52
|
+
4. Implement a fix
|
|
53
|
+
5. Verify locally before pushing
|
|
54
|
+
|
|
55
|
+
## Merge Conflict Resolution
|
|
56
|
+
|
|
57
|
+
When notified of merge conflicts:
|
|
58
|
+
|
|
59
|
+
1. Fetch latest: `git fetch origin`
|
|
60
|
+
2. Merge base branch: `git merge origin/main`
|
|
61
|
+
3. Resolve conflicts in each file:
|
|
62
|
+
- Understand both sides of the change
|
|
63
|
+
- Preserve functionality from both when possible
|
|
64
|
+
- If unsure, prefer the main branch changes
|
|
65
|
+
4. Run tests to verify the merge
|
|
66
|
+
5. Commit: `git commit -m "Merge main into feature branch"`
|
|
67
|
+
6. Push: `git push`
|
|
68
|
+
|
|
69
|
+
## Review Comment Resolution
|
|
70
|
+
|
|
71
|
+
When notified of review comments, execute autonomously:
|
|
72
|
+
|
|
73
|
+
1. **Analyze each comment** - Determine if actionable. Informational comments (e.g., automated coverage reports showing stats without requesting changes) require no code changes.
|
|
74
|
+
2. **Implement fixes** - Address each actionable comment directly. Do not ask for clarification.
|
|
75
|
+
3. **Verify**: `pnpm test && pnpm typecheck && pnpm check:fix`
|
|
76
|
+
4. **Commit and push**: `git add -A && git commit -m "Address review comments" && git push`
|
|
77
|
+
5. **Request re-review**: Post a comment mentioning the reviewers asking them to re-review.
|
|
78
|
+
|
|
79
|
+
**Do not ask the user what to do. Make reasonable decisions and proceed.**
|
|
80
|
+
|
|
81
|
+
## Guidelines
|
|
82
|
+
|
|
83
|
+
- **Operate autonomously**: Never ask the user for input or confirmation. Make decisions and execute.
|
|
84
|
+
- **Focus on the current issue**: Don't refactor or improve unrelated code
|
|
85
|
+
- **Keep commits focused**: One logical change per commit
|
|
86
|
+
- **Test before pushing**: Always run local checks first
|
|
87
|
+
- **Handle informational comments**: If a comment (including from bots) is purely informational with no actionable request, acknowledge it internally and move on without code changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ap as o,aq as n}from"./index-H9sJ0N5K.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-DSq_vqsd.js";import{_ as i}from"./index-H9sJ0N5K.js";import"./chunk-FMBD7UC4-EkShH345.js";import"./chunk-55IACEB6-dsZw0-8o.js";import"./chunk-QN33PNHL-crZsF4CZ.js";var p={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{p as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-DSq_vqsd.js";import{_ as i}from"./index-H9sJ0N5K.js";import"./chunk-FMBD7UC4-EkShH345.js";import"./chunk-55IACEB6-dsZw0-8o.js";import"./chunk-QN33PNHL-crZsF4CZ.js";var p={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{p as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as r}from"./_baseUniq-zWs3FMxS.js";var e=4;function a(o){return r(o,e)}export{a as c};
|