factory-factory 0.3.11 → 0.3.13
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/dist/client/assets/_baseUniq-CH1hrf3N.js +1 -0
- package/dist/client/assets/arc-CSzHMAUW.js +1 -0
- package/dist/client/assets/architectureDiagram-Q4EWVU46-CcfC94Eq.js +36 -0
- package/dist/client/assets/blockDiagram-DXYQGD6D-CD8LZStn.js +132 -0
- package/dist/client/assets/c4Diagram-AHTNJAMY-C5zvnj3y.js +10 -0
- package/dist/client/assets/channel-BboscRYZ.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-FE11baak.js → chunk-4BX2VUAB-BA0OQlKJ.js} +1 -1
- package/dist/client/assets/chunk-4TB4RGXK-G__dzUkA.js +206 -0
- package/dist/client/assets/{chunk-55IACEB6-BLSP1TCI.js → chunk-55IACEB6-Bly91nPp.js} +1 -1
- package/dist/client/assets/chunk-EDXVE4YY-Bpb5REqm.js +1 -0
- package/dist/client/assets/{chunk-FMBD7UC4-C4nv8ZZ5.js → chunk-FMBD7UC4-D4cq-tq0.js} +1 -1
- package/dist/client/assets/chunk-OYMX7WX6-B31-_n7C.js +231 -0
- package/dist/client/assets/{chunk-QZHKN3VN-yT7EzleD.js → chunk-QZHKN3VN-BNqNXrOd.js} +1 -1
- package/dist/client/assets/chunk-YZCP3GAM-DnlOKe6s.js +1 -0
- package/dist/client/assets/classDiagram-6PBFFD2Q-Dgq6y6E0.js +1 -0
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-Dgq6y6E0.js +1 -0
- package/dist/client/assets/clone-Q5sJPExl.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-vkUUoKjG.js → cose-bilkent-S5V4N54A-DA81v1js.js} +1 -1
- package/dist/client/assets/{cytoscape.esm-5J0xJHOV.js → cytoscape.esm-DkOyvmE4.js} +3 -3
- package/dist/client/assets/dagre-KV5264BT-DNNm59Sd.js +4 -0
- package/dist/client/assets/diagram-5BDNPKRD-CsNDzo7S.js +10 -0
- package/dist/client/assets/diagram-G4DWMVQ6-D42kU-7c.js +24 -0
- package/dist/client/assets/diagram-MMDJMWI5-Cbgn3quc.js +43 -0
- package/dist/client/assets/diagram-TYMM5635-RPDFdWiJ.js +24 -0
- package/dist/client/assets/erDiagram-SMLLAGMA-Dqc1KaOk.js +85 -0
- package/dist/client/assets/flowDiagram-DWJPFMVM-Dbly7Plu.js +162 -0
- package/dist/client/assets/ganttDiagram-T4ZO3ILL-B7R27VEN.js +292 -0
- package/dist/client/assets/gitGraphDiagram-UUTBAWPF-6loVjPhb.js +106 -0
- package/dist/client/assets/graph-BR0XwPKq.js +1 -0
- package/dist/client/assets/index-BLpM5V_N.js +494 -0
- package/dist/client/assets/index-DpxxuE94.css +1 -0
- package/dist/client/assets/infoDiagram-42DDH7IO-DVJ4Mnsd.js +2 -0
- package/dist/client/assets/ishikawaDiagram-UXIWVN3A-BO2-eRwL.js +70 -0
- package/dist/client/assets/journeyDiagram-VCZTEJTY-BHt11l7D.js +139 -0
- package/dist/client/assets/{kanban-definition-3W4ZIXB7-B-krTleZ.js → kanban-definition-6JOO6SKY-REiSk28t.js} +9 -9
- package/dist/client/assets/katex-DHMw6HUq.js +257 -0
- package/dist/client/assets/layout-D6wkcSBG.js +1 -0
- package/dist/client/assets/{linear-D7QUSQ5W.js → linear-s4VwUcIi.js} +1 -1
- package/dist/client/assets/min-CA8Q7qcH.js +1 -0
- package/dist/client/assets/mindmap-definition-QFDTVHPH-CHcjh3dp.js +96 -0
- package/dist/client/assets/mobile-baseline-DAzbSHjJ.js +10 -0
- package/dist/client/assets/pieDiagram-DEJITSTG-_PyWboNA.js +30 -0
- package/dist/client/assets/{quadrantDiagram-AYHSOK5B-DIX_V9KH.js → quadrantDiagram-34T5L4WZ-IizjPUD4.js} +1 -1
- package/dist/client/assets/requirementDiagram-MS252O5E-DWDtEvq8.js +84 -0
- package/dist/client/assets/sankeyDiagram-XADWPNL6-DF2yARPy.js +10 -0
- package/dist/client/assets/sequenceDiagram-FGHM5R23-DcLk78UE.js +157 -0
- package/dist/client/assets/stateDiagram-FHFEXIEX-BE_hYKOD.js +1 -0
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-BKlzimdd.js +1 -0
- package/dist/client/assets/{terminal-instance-D_yDA82a.js → terminal-instance-M1RoRzwF.js} +1 -1
- package/dist/client/assets/timeline-definition-GMOUNBTQ-DBX-0O9J.js +120 -0
- package/dist/client/assets/vennDiagram-DHZGUBPP-DW67qjr4.js +34 -0
- package/dist/client/assets/wardley-RL74JXVD-90cwwnr6.js +162 -0
- package/dist/client/assets/wardleyDiagram-NUSXRM2D-BXWUlqMo.js +20 -0
- package/dist/client/assets/xychartDiagram-5P7HB3ND-BU540Do_.js +7 -0
- package/dist/client/index.html +2 -2
- package/dist/prisma/generated/client.d.ts.map +1 -1
- package/dist/prisma/generated/client.js.map +1 -1
- 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 +15 -0
- package/dist/prisma/generated/enums.d.ts.map +1 -1
- package/dist/prisma/generated/enums.js +13 -0
- package/dist/prisma/generated/enums.js.map +1 -1
- package/dist/prisma/generated/internal/class.d.ts.map +1 -1
- package/dist/prisma/generated/internal/class.js +6 -6
- package/dist/prisma/generated/internal/class.js.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespace.d.ts +7 -0
- package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespace.js +7 -2
- package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +5 -0
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.js +5 -0
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/prisma/generated/models/AgentSession.d.ts +1 -2
- package/dist/prisma/generated/models/AgentSession.d.ts.map +1 -1
- package/dist/prisma/generated/models/ClosedSession.d.ts +1 -2
- package/dist/prisma/generated/models/ClosedSession.d.ts.map +1 -1
- package/dist/prisma/generated/models/DecisionLog.d.ts +1 -2
- package/dist/prisma/generated/models/DecisionLog.d.ts.map +1 -1
- package/dist/prisma/generated/models/Project.d.ts +1 -2
- package/dist/prisma/generated/models/Project.d.ts.map +1 -1
- package/dist/prisma/generated/models/TerminalSession.d.ts +1 -2
- package/dist/prisma/generated/models/TerminalSession.d.ts.map +1 -1
- package/dist/prisma/generated/models/UserSettings.d.ts +1 -2
- package/dist/prisma/generated/models/UserSettings.d.ts.map +1 -1
- package/dist/prisma/generated/models/Workspace.d.ts +231 -3
- package/dist/prisma/generated/models/Workspace.d.ts.map +1 -1
- package/dist/scripts/check-no-direct-process-env.d.mts.map +1 -1
- package/dist/scripts/check-no-direct-process-env.mjs +1 -0
- package/dist/scripts/check-no-direct-process-env.mjs.map +1 -1
- package/dist/src/backend/interceptors/pr-detection.interceptor.d.ts.map +1 -1
- package/dist/src/backend/interceptors/pr-detection.interceptor.js +7 -3
- package/dist/src/backend/interceptors/pr-detection.interceptor.js.map +1 -1
- package/dist/src/backend/interceptors/pr-detection.interceptor.test.js +24 -0
- package/dist/src/backend/interceptors/pr-detection.interceptor.test.js.map +1 -1
- package/dist/src/backend/orchestration/data-backup.service.test.js +5 -0
- package/dist/src/backend/orchestration/data-backup.service.test.js.map +1 -1
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts +7 -2
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts.map +1 -1
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.js +116 -3
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.js.map +1 -1
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js +4 -1
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js.map +1 -1
- package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts +5 -0
- package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts.map +1 -1
- package/dist/src/backend/orchestration/workspace-init.orchestrator.d.ts.map +1 -1
- package/dist/src/backend/orchestration/workspace-init.orchestrator.js +46 -9
- package/dist/src/backend/orchestration/workspace-init.orchestrator.js.map +1 -1
- package/dist/src/backend/server.d.ts.map +1 -1
- package/dist/src/backend/server.js +13 -0
- package/dist/src/backend/server.js.map +1 -1
- package/dist/src/backend/server.upgrade.test.js +4 -0
- package/dist/src/backend/server.upgrade.test.js.map +1 -1
- package/dist/src/backend/services/auto-iteration/index.d.ts +2 -0
- package/dist/src/backend/services/auto-iteration/index.d.ts.map +1 -0
- package/dist/src/backend/services/auto-iteration/index.js +2 -0
- package/dist/src/backend/services/auto-iteration/index.js.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.d.ts +30 -0
- package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.d.ts.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.js +623 -0
- package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.js.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/auto-iteration.types.d.ts +72 -0
- package/dist/src/backend/services/auto-iteration/service/auto-iteration.types.d.ts.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/auto-iteration.types.js +2 -0
- package/dist/src/backend/services/auto-iteration/service/auto-iteration.types.js.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/bridges.d.ts +27 -0
- package/dist/src/backend/services/auto-iteration/service/bridges.d.ts.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/bridges.js +2 -0
- package/dist/src/backend/services/auto-iteration/service/bridges.js.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/git-ops.d.ts +7 -0
- package/dist/src/backend/services/auto-iteration/service/git-ops.d.ts.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/git-ops.js +56 -0
- package/dist/src/backend/services/auto-iteration/service/git-ops.js.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/index.d.ts +8 -0
- package/dist/src/backend/services/auto-iteration/service/index.d.ts.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/index.js +7 -0
- package/dist/src/backend/services/auto-iteration/service/index.js.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/insights.service.d.ts +9 -0
- package/dist/src/backend/services/auto-iteration/service/insights.service.d.ts.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/insights.service.js +67 -0
- package/dist/src/backend/services/auto-iteration/service/insights.service.js.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/logbook.service.d.ts +11 -0
- package/dist/src/backend/services/auto-iteration/service/logbook.service.d.ts.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/logbook.service.js +88 -0
- package/dist/src/backend/services/auto-iteration/service/logbook.service.js.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/prompts.d.ts +10 -0
- package/dist/src/backend/services/auto-iteration/service/prompts.d.ts.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/prompts.js +194 -0
- package/dist/src/backend/services/auto-iteration/service/prompts.js.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/test-runner.service.d.ts +4 -0
- package/dist/src/backend/services/auto-iteration/service/test-runner.service.d.ts.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/test-runner.service.js +73 -0
- package/dist/src/backend/services/auto-iteration/service/test-runner.service.js.map +1 -0
- package/dist/src/backend/services/registry.d.ts +7 -3
- package/dist/src/backend/services/registry.d.ts.map +1 -1
- package/dist/src/backend/services/registry.js +7 -2
- package/dist/src/backend/services/registry.js.map +1 -1
- package/dist/src/backend/services/session/service/acp/acp-runtime-manager.d.ts +5 -1
- package/dist/src/backend/services/session/service/acp/acp-runtime-manager.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js +47 -3
- package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js.map +1 -1
- package/dist/src/backend/services/session/service/acp/index.d.ts +1 -1
- package/dist/src/backend/services/session/service/acp/index.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/acp/index.js +1 -1
- package/dist/src/backend/services/session/service/acp/index.js.map +1 -1
- package/dist/src/backend/services/session/service/bridges.d.ts +3 -0
- package/dist/src/backend/services/session/service/bridges.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/data/session-data.service.d.ts +10 -0
- package/dist/src/backend/services/session/service/data/session-data.service.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.d.ts +3 -0
- package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.js +32 -2
- package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.js.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.tool-timeout.test.js +56 -2
- package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.tool-timeout.test.js.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts +4 -1
- package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js +43 -0
- package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/session.service.d.ts +3 -2
- package/dist/src/backend/services/session/service/lifecycle/session.service.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/session.service.js +12 -4
- package/dist/src/backend/services/session/service/lifecycle/session.service.js.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/session.service.test.js +38 -0
- package/dist/src/backend/services/session/service/lifecycle/session.service.test.js.map +1 -1
- package/dist/src/backend/services/workspace/resources/workspace.accessor.d.ts +9 -0
- package/dist/src/backend/services/workspace/resources/workspace.accessor.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/resources/workspace.accessor.js +22 -0
- package/dist/src/backend/services/workspace/resources/workspace.accessor.js.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/creation.service.d.ts +5 -0
- package/dist/src/backend/services/workspace/service/lifecycle/creation.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/creation.service.js +33 -9
- package/dist/src/backend/services/workspace/service/lifecycle/creation.service.js.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js +41 -0
- package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/data.service.d.ts +45 -0
- package/dist/src/backend/services/workspace/service/lifecycle/data.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/query/project-management.service.d.ts +10 -0
- package/dist/src/backend/services/workspace/service/query/project-management.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/query/workspace-query.service.d.ts +10 -0
- package/dist/src/backend/services/workspace/service/query/workspace-query.service.d.ts.map +1 -1
- package/dist/src/backend/trpc/auto-iteration.trpc.d.ts +79 -0
- package/dist/src/backend/trpc/auto-iteration.trpc.d.ts.map +1 -0
- package/dist/src/backend/trpc/auto-iteration.trpc.js +159 -0
- package/dist/src/backend/trpc/auto-iteration.trpc.js.map +1 -0
- package/dist/src/backend/trpc/index.d.ts +178 -0
- package/dist/src/backend/trpc/index.d.ts.map +1 -1
- package/dist/src/backend/trpc/index.js +2 -0
- package/dist/src/backend/trpc/index.js.map +1 -1
- package/dist/src/backend/trpc/project.trpc.d.ts +10 -0
- package/dist/src/backend/trpc/project.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/session.trpc.d.ts +25 -0
- package/dist/src/backend/trpc/session.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace/init.trpc.d.ts +5 -0
- package/dist/src/backend/trpc/workspace/init.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts +10 -0
- package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace.router.test.js +31 -0
- package/dist/src/backend/trpc/workspace.router.test.js.map +1 -1
- package/dist/src/backend/trpc/workspace.trpc.d.ts +65 -0
- package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace.trpc.js +30 -1
- package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
- package/dist/src/shared/core/enums.d.ts +15 -0
- package/dist/src/shared/core/enums.d.ts.map +1 -1
- package/dist/src/shared/core/enums.js +13 -0
- package/dist/src/shared/core/enums.js.map +1 -1
- package/dist/src/shared/core/index.d.ts +1 -1
- package/dist/src/shared/core/index.d.ts.map +1 -1
- package/dist/src/shared/core/index.js +1 -1
- package/dist/src/shared/core/index.js.map +1 -1
- package/dist/tsconfig.backend.tsbuildinfo +1 -1
- package/package.json +33 -21
- package/prisma/migrations/20260401171631_add_auto_iteration_fields/migration.sql +70 -0
- package/prisma/schema.prisma +22 -0
- package/dist/client/assets/_basePickBy-2e-pMoSf.js +0 -1
- package/dist/client/assets/_baseUniq-Dw9JV7Yn.js +0 -1
- package/dist/client/assets/arc-BFIB068y.js +0 -1
- package/dist/client/assets/architectureDiagram-VXUJARFQ-3yLryf1P.js +0 -36
- package/dist/client/assets/blockDiagram-VD42YOAC-JJloNCNd.js +0 -122
- package/dist/client/assets/c4Diagram-YG6GDRKO-Du4iha32.js +0 -10
- package/dist/client/assets/channel-CIm-1U39.js +0 -1
- package/dist/client/assets/chunk-B4BG7PRW-WuJZdT4V.js +0 -165
- package/dist/client/assets/chunk-DI55MBZ5-D9m7DN2X.js +0 -220
- package/dist/client/assets/chunk-QN33PNHL-LCGRlTol.js +0 -1
- package/dist/client/assets/chunk-TZMSLE5B-CRj7NtCJ.js +0 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-B0aZiGuV.js +0 -1
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-B0aZiGuV.js +0 -1
- package/dist/client/assets/clone-B5gXx5vB.js +0 -1
- package/dist/client/assets/dagre-6UL2VRFP-BdKW-bla.js +0 -4
- package/dist/client/assets/diagram-PSM6KHXK-BqzktuSU.js +0 -24
- package/dist/client/assets/diagram-QEK2KX5R-BWfqXwIz.js +0 -43
- package/dist/client/assets/diagram-S2PKOQOG-2KvZ2T20.js +0 -24
- package/dist/client/assets/erDiagram-Q2GNP2WA-Bb-ml-vo.js +0 -60
- package/dist/client/assets/flowDiagram-NV44I4VS-DfTePfi_.js +0 -162
- package/dist/client/assets/ganttDiagram-JELNMOA3-E9cpD5mM.js +0 -267
- package/dist/client/assets/gitGraphDiagram-V2S2FVAM-CG8IQYpk.js +0 -65
- package/dist/client/assets/graph-BvAulOKx.js +0 -1
- package/dist/client/assets/index-BTxPBkPC.css +0 -1
- package/dist/client/assets/index-CHEn0MlU.js +0 -436
- package/dist/client/assets/infoDiagram-HS3SLOUP-D2Mrepi5.js +0 -2
- package/dist/client/assets/journeyDiagram-XKPGCS4Q-ByoDAP6k.js +0 -139
- package/dist/client/assets/katex-DGN8GczM.js +0 -261
- package/dist/client/assets/layout-DoQvP08H.js +0 -1
- package/dist/client/assets/mindmap-definition-VGOIOE7T-ItndX5x1.js +0 -68
- package/dist/client/assets/mobile-baseline-COZl6kWC.js +0 -10
- package/dist/client/assets/pieDiagram-ADFJNKIX-COUPsPWX.js +0 -30
- package/dist/client/assets/requirementDiagram-UZGBJVZJ-BjQykeQP.js +0 -64
- package/dist/client/assets/sankeyDiagram-TZEHDZUN-D6wvKXkk.js +0 -10
- package/dist/client/assets/sequenceDiagram-WL72ISMW-C3rjLt-8.js +0 -145
- package/dist/client/assets/stateDiagram-FKZM4ZOC-Ci1F-Jdz.js +0 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-Du9KHzl8.js +0 -1
- package/dist/client/assets/timeline-definition-IT6M3QCI-DJ5XFU9R.js +0 -61
- package/dist/client/assets/treemap-GDKQZRPO-Dm2t2L1o.js +0 -160
- package/dist/client/assets/xychartDiagram-PRI3JC2R-DO5pUMKZ.js +0 -7
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
function escapeXmlContent(content) {
|
|
2
|
+
return content.replace(/<\//g, '<\\/');
|
|
3
|
+
}
|
|
4
|
+
export function buildSystemPrompt(config, insightsContent) {
|
|
5
|
+
const insightsBlock = insightsContent
|
|
6
|
+
? `\nINSIGHTS FROM PREVIOUS RUNS (.factory-factory/auto-iteration-insights.md):
|
|
7
|
+
<insights>
|
|
8
|
+
${escapeXmlContent(insightsContent)}
|
|
9
|
+
</insights>
|
|
10
|
+
Use these as starting points and context. Do not repeat approaches already recorded as obsolete.
|
|
11
|
+
`
|
|
12
|
+
: '';
|
|
13
|
+
return `You are an auto-iteration agent. Your job is to improve a codebase against a specific metric through targeted, incremental changes.
|
|
14
|
+
|
|
15
|
+
TARGET: ${config.targetDescription}
|
|
16
|
+
|
|
17
|
+
ROLE SEPARATION — READ THIS CAREFULLY:
|
|
18
|
+
You are the IMPLEMENTER. An external framework controls the iteration loop around you.
|
|
19
|
+
The framework's job: run the test command, measure metrics, evaluate improvement, critique changes, and decide whether to keep or revert.
|
|
20
|
+
Your job: make ONE focused code change per turn, then STOP. That's it.
|
|
21
|
+
|
|
22
|
+
- Do NOT run the test command (\`${config.testCommand}\`) or any variation of it.
|
|
23
|
+
- Do NOT run test suites, build commands, or linters to verify your changes.
|
|
24
|
+
- Do NOT try to confirm whether your change works. The framework will do that.
|
|
25
|
+
- You MAY use the terminal for read-only exploration: reading files (cat, grep, find, head, tail), checking types to understand code (tsc --noEmit), and listing directories. These are allowed because they help you navigate the codebase, not verify correctness.
|
|
26
|
+
- After making your code change, STOP IMMEDIATELY and wait for the next instruction.
|
|
27
|
+
|
|
28
|
+
If you run the test command yourself, you waste the iteration budget and duplicate work the framework already handles. The framework will tell you the test results after each change.
|
|
29
|
+
|
|
30
|
+
RULES:
|
|
31
|
+
- Make small, focused changes. One logical change at a time.
|
|
32
|
+
- Each change should directly target improving the metric.
|
|
33
|
+
- Do not game the metric (e.g., disabling tests, hardcoding values, disabling checks, or any form of shortcut that doesn't represent genuine improvement).
|
|
34
|
+
- Do not make changes unrelated to the metric target.
|
|
35
|
+
- SIMPLICITY CRITERION: All else being equal, simpler is better. A small improvement that adds ugly complexity is not worth it. Removing code and getting equal or better results is a great outcome. Weigh the complexity cost against the improvement magnitude.
|
|
36
|
+
- If your changes cause the test command to crash, you may be asked to fix the issue. If you can't fix it after a couple of attempts, say so and the change will be reverted.
|
|
37
|
+
|
|
38
|
+
CONTEXT MANAGEMENT:
|
|
39
|
+
- Do NOT dump entire file contents into the conversation. Read only the sections relevant to your current change.
|
|
40
|
+
- When reading files, use targeted reads (grep, head, tail) rather than reading whole files.
|
|
41
|
+
- Your iteration history is recorded in .factory-factory/auto-iteration-logbook.json — you can read this file to review what has been tried before.
|
|
42
|
+
|
|
43
|
+
INSIGHTS FILE:
|
|
44
|
+
- You have a persistent insights file at .factory-factory/auto-iteration-insights.md.
|
|
45
|
+
- Use it to record ideas, hypotheses, deferred approaches, or observations that might help attain the target in future runs.
|
|
46
|
+
- Write to it whenever you notice something worth preserving — you do not need to wait for a specific phase.
|
|
47
|
+
- You may also mark old entries as [resolved] or [obsolete], and trim the file to remove clutter when appropriate.
|
|
48
|
+
- Untagged entries and entries tagged [open] will be shown to you at the start of future runs.
|
|
49
|
+
|
|
50
|
+
STRATEGY FILE:
|
|
51
|
+
- The user may provide guidance in .factory-factory/auto-iteration-strategy.md
|
|
52
|
+
- This file is read at the start of each iteration — if it exists, follow the guidance within it
|
|
53
|
+
- The user can edit this file between iterations to steer your approach without restarting the loop
|
|
54
|
+
${insightsBlock}`;
|
|
55
|
+
}
|
|
56
|
+
export function buildImplementPrompt(currentMetricSummary, targetDescription, truncatedTestOutput, strategyContent) {
|
|
57
|
+
const strategySection = strategyContent
|
|
58
|
+
? `\n\nUSER STRATEGY (from .factory-factory/auto-iteration-strategy.md):\n\n<strategy>\n${escapeXmlContent(strategyContent)}\n</strategy>\n`
|
|
59
|
+
: '';
|
|
60
|
+
return `The current metric state is: ${currentMetricSummary}
|
|
61
|
+
Target: ${targetDescription}
|
|
62
|
+
${strategySection}
|
|
63
|
+
Here is the most recent test output (truncated):
|
|
64
|
+
|
|
65
|
+
<test_output>
|
|
66
|
+
${escapeXmlContent(truncatedTestOutput)}
|
|
67
|
+
</test_output>
|
|
68
|
+
|
|
69
|
+
Analyze the codebase and implement a single focused change to improve the metric toward the target.
|
|
70
|
+
|
|
71
|
+
IMPORTANT: Do NOT run the test command or any build/lint commands to verify your change. Make your code change and STOP. The framework will run the tests and tell you the results.`;
|
|
72
|
+
}
|
|
73
|
+
export function buildMeasurePrompt(truncatedTestOutput, previousMetricSummary) {
|
|
74
|
+
return `The test command has been run. Here is the output:
|
|
75
|
+
|
|
76
|
+
<test_output>
|
|
77
|
+
${escapeXmlContent(truncatedTestOutput)}
|
|
78
|
+
</test_output>
|
|
79
|
+
|
|
80
|
+
Previous metric state: ${previousMetricSummary}
|
|
81
|
+
|
|
82
|
+
Evaluate the current metric state from this output. Respond with ONLY a JSON object (no markdown, no explanation):
|
|
83
|
+
{
|
|
84
|
+
"metricSummary": "...",
|
|
85
|
+
"improved": true/false,
|
|
86
|
+
"targetReached": true/false
|
|
87
|
+
}`;
|
|
88
|
+
}
|
|
89
|
+
export function buildCrashFixPrompt(truncatedErrorOutput, attemptNumber) {
|
|
90
|
+
return `The test command crashed after your changes. Here is the error output (last 100 lines):
|
|
91
|
+
|
|
92
|
+
<error_output>
|
|
93
|
+
${escapeXmlContent(truncatedErrorOutput)}
|
|
94
|
+
</error_output>
|
|
95
|
+
|
|
96
|
+
This is fix attempt ${attemptNumber}/2. Diagnose the issue and fix it.
|
|
97
|
+
If the problem is fundamental to your approach (not just a typo or missing import), say "UNFIXABLE" and the change will be reverted.`;
|
|
98
|
+
}
|
|
99
|
+
export function buildCritiquePrompt(gitDiff) {
|
|
100
|
+
return `ROLE SWITCH: You are now a critical code reviewer, not the implementer.
|
|
101
|
+
|
|
102
|
+
Review the changes you just made with extreme scrutiny. The diff is:
|
|
103
|
+
|
|
104
|
+
<diff>
|
|
105
|
+
${escapeXmlContent(gitDiff)}
|
|
106
|
+
</diff>
|
|
107
|
+
|
|
108
|
+
Evaluate whether this change is:
|
|
109
|
+
1. A legitimate improvement (good engineering, maintainable, correct)
|
|
110
|
+
2. A workaround or hack (gaming the metric, fragile, unmaintainable)
|
|
111
|
+
3. Potentially harmful (introduces bugs, security issues, tech debt)
|
|
112
|
+
4. Worth the complexity cost (a 0.1% improvement that adds 50 lines of hacky code is NOT worth it; a 0.1% improvement from deleting code IS)
|
|
113
|
+
|
|
114
|
+
Respond with ONLY a JSON object (no markdown, no explanation):
|
|
115
|
+
{
|
|
116
|
+
"approved": true/false,
|
|
117
|
+
"notes": "..."
|
|
118
|
+
}`;
|
|
119
|
+
}
|
|
120
|
+
export function buildCreatePrPrompt(config, progress, status) {
|
|
121
|
+
const statusLabel = status === 'COMPLETED'
|
|
122
|
+
? 'the target was reached'
|
|
123
|
+
: status === 'MAX_ITERATIONS'
|
|
124
|
+
? `the maximum of ${config.maxIterations} iterations was reached`
|
|
125
|
+
: `the run ended (${status.toLowerCase()})`;
|
|
126
|
+
return `The auto-iteration session is finishing — ${statusLabel}.
|
|
127
|
+
|
|
128
|
+
RESULTS:
|
|
129
|
+
- Target: ${config.targetDescription}
|
|
130
|
+
- Iterations completed: ${progress.currentIteration}
|
|
131
|
+
- Accepted improvements: ${progress.acceptedCount}
|
|
132
|
+
- Metric: ${progress.baselineMetricSummary} → ${progress.currentMetricSummary}
|
|
133
|
+
|
|
134
|
+
Your final task is to create a pull request for the changes made during this session. Run \`gh pr create\` with:
|
|
135
|
+
- A concise title describing the improvement (e.g. "Improve <metric> via auto-iteration")
|
|
136
|
+
- A body summarising what changed and what the metric improvement was
|
|
137
|
+
|
|
138
|
+
Do NOT make any additional code changes. Only create the pull request.`;
|
|
139
|
+
}
|
|
140
|
+
export function buildStrategyFileTemplate(config) {
|
|
141
|
+
return `# Auto-Iteration Strategy
|
|
142
|
+
|
|
143
|
+
Target: ${config.targetDescription}
|
|
144
|
+
Test command: ${config.testCommand}
|
|
145
|
+
|
|
146
|
+
## Guidance for the agent
|
|
147
|
+
|
|
148
|
+
<!--
|
|
149
|
+
Edit this file between iterations to steer the agent.
|
|
150
|
+
The agent reads it fresh at the start of each iteration.
|
|
151
|
+
You can add hints, constraints, or focus areas below.
|
|
152
|
+
-->
|
|
153
|
+
`;
|
|
154
|
+
}
|
|
155
|
+
export function buildHandoffPrompt(config, entries, currentMetricSummary, insightsContent) {
|
|
156
|
+
const history = entries
|
|
157
|
+
.map((e) => {
|
|
158
|
+
const metricChange = e.metricAfter != null ? `${e.metricBefore} → ${e.metricAfter}` : e.metricBefore;
|
|
159
|
+
return `- #${e.iteration}: "${e.changeDescription}" ${metricChange}. ${e.status.toUpperCase()}.${e.critiqueNotes ? ` Critique: ${e.critiqueNotes}` : ''}`;
|
|
160
|
+
})
|
|
161
|
+
.join('\n');
|
|
162
|
+
const rejectedApproaches = entries
|
|
163
|
+
.filter((e) => e.status !== 'accepted')
|
|
164
|
+
.map((e) => `- ${e.changeDescription} (${e.status})`)
|
|
165
|
+
.join('\n');
|
|
166
|
+
const accepted = entries.filter((e) => e.status === 'accepted').length;
|
|
167
|
+
const rejected = entries.filter((e) => e.status !== 'accepted').length;
|
|
168
|
+
const insightsBlock = insightsContent
|
|
169
|
+
? `\nINSIGHTS (from auto-iteration-insights.md):
|
|
170
|
+
<insights>
|
|
171
|
+
${escapeXmlContent(insightsContent)}
|
|
172
|
+
</insights>
|
|
173
|
+
`
|
|
174
|
+
: '';
|
|
175
|
+
return `You are continuing an auto-iteration run. Here is your context:
|
|
176
|
+
|
|
177
|
+
ITERATION HISTORY (from logbook):
|
|
178
|
+
${history}
|
|
179
|
+
|
|
180
|
+
APPROACHES THAT DIDN'T WORK:
|
|
181
|
+
${rejectedApproaches || '(none yet)'}
|
|
182
|
+
|
|
183
|
+
CURRENT STATE:
|
|
184
|
+
- Current metric: ${currentMetricSummary}
|
|
185
|
+
- Target: ${config.targetDescription}
|
|
186
|
+
- Iterations completed: ${entries.length}, Accepted: ${accepted}, Rejected: ${rejected}
|
|
187
|
+
${insightsBlock}
|
|
188
|
+
The codebase already contains all accepted changes.
|
|
189
|
+
|
|
190
|
+
NOTE: The user may have placed guidance in .factory-factory/auto-iteration-strategy.md — if it exists, follow its guidance for future iterations.
|
|
191
|
+
|
|
192
|
+
Continue iterating.`;
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../../../src/backend/services/auto-iteration/service/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TestCommandResult } from './auto-iteration.types.js';
|
|
2
|
+
export declare function runTestCommand(worktreePath: string, command: string, timeoutSeconds: number): Promise<TestCommandResult>;
|
|
3
|
+
export declare function truncateTestOutput(raw: string, maxLines?: number): string;
|
|
4
|
+
//# sourceMappingURL=test-runner.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-runner.service.d.ts","sourceRoot":"","sources":["../../../../../../src/backend/services/auto-iteration/service/test-runner.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAOhE,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAyD5B;AAMD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,SAAmB,GAAG,MAAM,CAkBnF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
const MAX_OUTPUT_LINES = 200;
|
|
3
|
+
const MAX_BUFFER_BYTES = 5 * 1024 * 1024;
|
|
4
|
+
export function runTestCommand(worktreePath, command, timeoutSeconds) {
|
|
5
|
+
return new Promise((resolve) => {
|
|
6
|
+
const child = spawn('bash', ['-c', command], {
|
|
7
|
+
cwd: worktreePath,
|
|
8
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
9
|
+
env: { ...process.env, BROWSER: 'none' },
|
|
10
|
+
});
|
|
11
|
+
let stdout = '';
|
|
12
|
+
let stderr = '';
|
|
13
|
+
let timedOut = false;
|
|
14
|
+
let exited = false;
|
|
15
|
+
child.stdout.on('data', (data) => {
|
|
16
|
+
stdout += data.toString();
|
|
17
|
+
if (Buffer.byteLength(stdout) > MAX_BUFFER_BYTES) {
|
|
18
|
+
stdout = Buffer.from(stdout).subarray(-MAX_BUFFER_BYTES).toString('utf-8');
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
child.stderr.on('data', (data) => {
|
|
22
|
+
stderr += data.toString();
|
|
23
|
+
if (Buffer.byteLength(stderr) > MAX_BUFFER_BYTES) {
|
|
24
|
+
stderr = Buffer.from(stderr).subarray(-MAX_BUFFER_BYTES).toString('utf-8');
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
const timer = setTimeout(() => {
|
|
28
|
+
timedOut = true;
|
|
29
|
+
child.kill('SIGTERM');
|
|
30
|
+
setTimeout(() => {
|
|
31
|
+
if (!exited) {
|
|
32
|
+
child.kill('SIGKILL');
|
|
33
|
+
}
|
|
34
|
+
}, 5000);
|
|
35
|
+
}, timeoutSeconds * 1000);
|
|
36
|
+
child.on('close', (code) => {
|
|
37
|
+
exited = true;
|
|
38
|
+
clearTimeout(timer);
|
|
39
|
+
resolve({
|
|
40
|
+
stdout,
|
|
41
|
+
stderr,
|
|
42
|
+
exitCode: code ?? 1,
|
|
43
|
+
timedOut,
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
child.on('error', (err) => {
|
|
47
|
+
clearTimeout(timer);
|
|
48
|
+
resolve({
|
|
49
|
+
stdout,
|
|
50
|
+
stderr: `${stderr}\n${err.message}`,
|
|
51
|
+
exitCode: 1,
|
|
52
|
+
timedOut,
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
export function truncateTestOutput(raw, maxLines = MAX_OUTPUT_LINES) {
|
|
58
|
+
const lines = raw.split('\n');
|
|
59
|
+
if (lines.length <= maxLines) {
|
|
60
|
+
return raw;
|
|
61
|
+
}
|
|
62
|
+
const summaryPatterns = /pass|fail|error|total|coverage|%|result|summary|assert/i;
|
|
63
|
+
const summaryLines = lines.filter((l) => summaryPatterns.test(l));
|
|
64
|
+
const tail = lines.slice(-maxLines);
|
|
65
|
+
const earlySummary = summaryLines.filter((l) => !tail.includes(l));
|
|
66
|
+
return [
|
|
67
|
+
`[... ${lines.length - maxLines} lines truncated ...]`,
|
|
68
|
+
...earlySummary.slice(0, 20),
|
|
69
|
+
'---',
|
|
70
|
+
...tail,
|
|
71
|
+
].join('\n');
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=test-runner.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-runner.service.js","sourceRoot":"","sources":["../../../../../../src/backend/services/auto-iteration/service/test-runner.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
export declare const prismaModelNames: readonly ["Project", "DecisionLog", "Workspace", "AgentSession", "TerminalSession", "ClosedSession", "UserSettings"];
|
|
2
2
|
export type PrismaModelName = (typeof prismaModelNames)[number];
|
|
3
|
-
export declare const serviceNames: readonly ["session", "workspace", "terminal", "github", "linear", "ratchet", "run-script", "settings", "decision-log"];
|
|
3
|
+
export declare const serviceNames: readonly ["session", "workspace", "terminal", "github", "linear", "ratchet", "run-script", "settings", "decision-log", "auto-iteration"];
|
|
4
4
|
export type ServiceName = (typeof serviceNames)[number];
|
|
5
5
|
export declare const serviceRegistry: {
|
|
6
6
|
readonly session: {
|
|
7
|
-
readonly dependsOn: readonly ["workspace", "settings", "terminal"];
|
|
7
|
+
readonly dependsOn: readonly ["workspace", "settings", "terminal", "github"];
|
|
8
8
|
readonly ownsModels: readonly ["AgentSession", "ClosedSession"];
|
|
9
9
|
};
|
|
10
10
|
readonly workspace: {
|
|
11
|
-
readonly dependsOn: readonly ["settings"];
|
|
11
|
+
readonly dependsOn: readonly ["settings", "auto-iteration"];
|
|
12
12
|
readonly ownsModels: readonly ["Project", "Workspace"];
|
|
13
13
|
};
|
|
14
14
|
readonly terminal: {
|
|
@@ -39,5 +39,9 @@ export declare const serviceRegistry: {
|
|
|
39
39
|
readonly dependsOn: readonly [];
|
|
40
40
|
readonly ownsModels: readonly ["DecisionLog"];
|
|
41
41
|
};
|
|
42
|
+
readonly 'auto-iteration': {
|
|
43
|
+
readonly dependsOn: readonly [];
|
|
44
|
+
readonly ownsModels: readonly [];
|
|
45
|
+
};
|
|
42
46
|
};
|
|
43
47
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/registry.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,sHAQnB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/registry.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,sHAQnB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,eAAO,MAAM,YAAY,0IAWf,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAOxD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC+B,CAAC"}
|
|
@@ -17,14 +17,15 @@ export const serviceNames = [
|
|
|
17
17
|
'run-script',
|
|
18
18
|
'settings',
|
|
19
19
|
'decision-log',
|
|
20
|
+
'auto-iteration',
|
|
20
21
|
];
|
|
21
22
|
export const serviceRegistry = {
|
|
22
23
|
session: {
|
|
23
|
-
dependsOn: ['workspace', 'settings', 'terminal'],
|
|
24
|
+
dependsOn: ['workspace', 'settings', 'terminal', 'github'],
|
|
24
25
|
ownsModels: ['AgentSession', 'ClosedSession'],
|
|
25
26
|
},
|
|
26
27
|
workspace: {
|
|
27
|
-
dependsOn: ['settings'],
|
|
28
|
+
dependsOn: ['settings', 'auto-iteration'],
|
|
28
29
|
ownsModels: ['Project', 'Workspace'],
|
|
29
30
|
},
|
|
30
31
|
terminal: {
|
|
@@ -55,5 +56,9 @@ export const serviceRegistry = {
|
|
|
55
56
|
dependsOn: [],
|
|
56
57
|
ownsModels: ['DecisionLog'],
|
|
57
58
|
},
|
|
59
|
+
'auto-iteration': {
|
|
60
|
+
dependsOn: [],
|
|
61
|
+
ownsModels: [],
|
|
62
|
+
},
|
|
58
63
|
};
|
|
59
64
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/backend/services/registry.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,SAAS;IACT,aAAa;IACb,WAAW;IACX,cAAc;IACd,iBAAiB;IACjB,eAAe;IACf,cAAc;CACN,CAAC;AAIX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS;IACT,WAAW;IACX,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,UAAU;IACV,cAAc;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/backend/services/registry.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,SAAS;IACT,aAAa;IACb,WAAW;IACX,cAAc;IACd,iBAAiB;IACjB,eAAe;IACf,cAAc;CACN,CAAC;AAIX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS;IACT,WAAW;IACX,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,UAAU;IACV,cAAc;IACd,gBAAgB;CACR,CAAC;AASX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE;QACP,SAAS,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC;QAC1D,UAAU,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;KAC9C;IACD,SAAS,EAAE;QACT,SAAS,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC;QACzC,UAAU,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;KACrC;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,CAAC,iBAAiB,CAAC;KAChC;IACD,MAAM,EAAE;QACN,SAAS,EAAE,CAAC,WAAW,CAAC;QACxB,UAAU,EAAE,EAAE;KACf;IACD,MAAM,EAAE;QACN,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;KACf;IACD,OAAO,EAAE;QACP,SAAS,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC;QAC3D,UAAU,EAAE,EAAE;KACf;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,CAAC,WAAW,CAAC;QACxB,UAAU,EAAE,EAAE;KACf;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,CAAC,cAAc,CAAC;KAC7B;IACD,cAAc,EAAE;QACd,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,CAAC,aAAa,CAAC;KAC5B;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;KACf;CACwD,CAAC"}
|
|
@@ -3,6 +3,9 @@ import type { AcpPermissionBridge } from './acp-permission-bridge.js';
|
|
|
3
3
|
import { AcpProcessHandle } from './acp-process-handle.js';
|
|
4
4
|
import type { AcpRuntimeEvent } from './acp-runtime-events.js';
|
|
5
5
|
import type { AcpClientOptions } from './types.js';
|
|
6
|
+
export declare class PromptTimeoutError extends Error {
|
|
7
|
+
constructor(sessionId: string, timeoutMs: number);
|
|
8
|
+
}
|
|
6
9
|
export type AcpRuntimeCreatedCallback = (sessionId: string, client: AcpProcessHandle, context: {
|
|
7
10
|
workspaceId: string;
|
|
8
11
|
workingDir: string;
|
|
@@ -48,9 +51,10 @@ export declare class AcpRuntimeManager {
|
|
|
48
51
|
private wireChildErrorHandler;
|
|
49
52
|
private createOrResumeSession;
|
|
50
53
|
stopClient(sessionId: string): Promise<void>;
|
|
51
|
-
sendPrompt(sessionId: string, prompt: ContentBlock[]): Promise<{
|
|
54
|
+
sendPrompt(sessionId: string, prompt: ContentBlock[], timeoutMs?: number): Promise<{
|
|
52
55
|
stopReason: string;
|
|
53
56
|
}>;
|
|
57
|
+
private escalatePromptTimeout;
|
|
54
58
|
cancelPrompt(sessionId: string): Promise<void>;
|
|
55
59
|
setConfigOption(sessionId: string, configId: string, value: string): Promise<SessionConfigOption[]>;
|
|
56
60
|
setSessionMode(sessionId: string, modeId: string): Promise<SessionConfigOption[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp-runtime-manager.d.ts","sourceRoot":"","sources":["../../../../../../../src/backend/services/session/service/acp/acp-runtime-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,YAAY,EAIjB,KAAK,mBAAmB,EAKzB,MAAM,0BAA0B,CAAC;AAIlC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"acp-runtime-manager.d.ts","sourceRoot":"","sources":["../../../../../../../src/backend/services/session/service/acp/acp-runtime-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,YAAY,EAIjB,KAAK,mBAAmB,EAKzB,MAAM,0BAA0B,CAAC;AAIlC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,SAAS,CAAC;AAKlE,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAIjD;AAED,MAAM,MAAM,yBAAyB,GAAG,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,KACjD,IAAI,CAAC;AAEV,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpE,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACjE,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAEzE,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACxC,CAAC;AA+fF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuC;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgD;IAChF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;IAC9E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,uBAAuB,CAA0C;IACzE,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,sBAAsB,CAAQ;IACtC,OAAO,CAAC,uBAAuB,CAAiD;gBAEpE,OAAO,CAAC,EAAE;QAAE,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAE;IAItD,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQ/C,oBAAoB,CAAC,OAAO,EAAE;QAC5B,sBAAsB,EAAE,OAAO,CAAC;QAChC,uBAAuB,EAAE,MAAM,MAAM,CAAC,UAAU,CAAC;KAClD,GAAG,IAAI;IAKR,kBAAkB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAI7D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAK1D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,SAAS;IAI1E,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,uBAAuB,EACjC,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACnD,OAAO,CAAC,gBAAgB,CAAC;YA+Cd,YAAY;IA4L1B,OAAO,CAAC,2BAA2B;IAoBnC,OAAO,CAAC,oBAAoB;YA+Bd,mBAAmB;IAuBjC,OAAO,CAAC,qBAAqB;YA4Bf,qBAAqB;IA0D7B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2D5C,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EAAE,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;YA+CpB,qBAAqB;IAyB7B,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9C,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA6B3B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA4BjF,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA4CnF,cAAc,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBrD,aAAa,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAI7D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAK5C,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAK5C,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO;IAIlD,qBAAqB,IAAI,KAAK,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;QACnB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CAqBH;AAMD,eAAO,MAAM,iBAAiB,mBAA4B,CAAC"}
|
|
@@ -9,6 +9,12 @@ import { createLogger, getCurrentProcessEnv } from '../../../../../backend/servi
|
|
|
9
9
|
import { AcpClientHandler } from './acp-client-handler.js';
|
|
10
10
|
import { AcpProcessHandle } from './acp-process-handle.js';
|
|
11
11
|
const logger = createLogger('acp-runtime-manager');
|
|
12
|
+
export class PromptTimeoutError extends Error {
|
|
13
|
+
constructor(sessionId, timeoutMs) {
|
|
14
|
+
super(`ACP prompt timed out after ${timeoutMs}ms for session ${sessionId}`);
|
|
15
|
+
this.name = 'PromptTimeoutError';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
12
18
|
function resolveAutoApprovePolicy(preset) {
|
|
13
19
|
if (preset === 'YOLO' || preset === 'RELAXED') {
|
|
14
20
|
return 'all';
|
|
@@ -482,7 +488,7 @@ export class AcpRuntimeManager {
|
|
|
482
488
|
? resolveInternalCodexAcpSpawnCommand(this.preferSourceEntrypoint)
|
|
483
489
|
: (() => {
|
|
484
490
|
const binaryName = 'claude-agent-acp';
|
|
485
|
-
const packageName = '@
|
|
491
|
+
const packageName = '@agentclientprotocol/claude-agent-acp';
|
|
486
492
|
const binaryPath = resolveAcpBinary(packageName, binaryName);
|
|
487
493
|
return {
|
|
488
494
|
command: binaryPath,
|
|
@@ -779,25 +785,63 @@ export class AcpRuntimeManager {
|
|
|
779
785
|
}
|
|
780
786
|
}
|
|
781
787
|
}
|
|
782
|
-
async sendPrompt(sessionId, prompt) {
|
|
788
|
+
async sendPrompt(sessionId, prompt, timeoutMs) {
|
|
783
789
|
const handle = this.sessions.get(sessionId);
|
|
784
790
|
if (!handle) {
|
|
785
791
|
throw new Error(`No ACP session found for sessionId: ${sessionId}`);
|
|
786
792
|
}
|
|
787
793
|
handle.isPromptInFlight = true;
|
|
788
794
|
try {
|
|
789
|
-
const
|
|
795
|
+
const promptPromise = handle.connection.prompt({
|
|
790
796
|
sessionId: handle.providerSessionId,
|
|
791
797
|
prompt,
|
|
792
798
|
});
|
|
799
|
+
let result;
|
|
800
|
+
if (timeoutMs != null && timeoutMs > 0) {
|
|
801
|
+
result = await new Promise((resolve, reject) => {
|
|
802
|
+
const timer = setTimeout(() => reject(new PromptTimeoutError(sessionId, timeoutMs)), timeoutMs);
|
|
803
|
+
promptPromise.then((r) => {
|
|
804
|
+
clearTimeout(timer);
|
|
805
|
+
resolve(r);
|
|
806
|
+
}, (e) => {
|
|
807
|
+
clearTimeout(timer);
|
|
808
|
+
reject(e);
|
|
809
|
+
});
|
|
810
|
+
});
|
|
811
|
+
}
|
|
812
|
+
else {
|
|
813
|
+
result = await promptPromise;
|
|
814
|
+
}
|
|
793
815
|
handle.isPromptInFlight = false;
|
|
794
816
|
return { stopReason: result.stopReason };
|
|
795
817
|
}
|
|
796
818
|
catch (error) {
|
|
797
819
|
handle.isPromptInFlight = false;
|
|
820
|
+
if (error instanceof PromptTimeoutError) {
|
|
821
|
+
await this.escalatePromptTimeout(sessionId, timeoutMs);
|
|
822
|
+
}
|
|
798
823
|
throw error;
|
|
799
824
|
}
|
|
800
825
|
}
|
|
826
|
+
async escalatePromptTimeout(sessionId, timeoutMs) {
|
|
827
|
+
logger.warn('Prompt timed out, attempting cancel', { sessionId, timeoutMs });
|
|
828
|
+
try {
|
|
829
|
+
const cancelled = await Promise.race([
|
|
830
|
+
this.cancelPrompt(sessionId).then(() => true),
|
|
831
|
+
new Promise((resolve) => setTimeout(() => resolve(false), 5000)),
|
|
832
|
+
]);
|
|
833
|
+
if (!cancelled) {
|
|
834
|
+
logger.warn('Cancel timed out after prompt timeout, stopping client', { sessionId });
|
|
835
|
+
await this.stopClient(sessionId).catch(() => {
|
|
836
|
+
});
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
catch {
|
|
840
|
+
logger.warn('Cancel failed after timeout, stopping client', { sessionId });
|
|
841
|
+
await this.stopClient(sessionId).catch(() => {
|
|
842
|
+
});
|
|
843
|
+
}
|
|
844
|
+
}
|
|
801
845
|
async cancelPrompt(sessionId) {
|
|
802
846
|
const handle = this.sessions.get(sessionId);
|
|
803
847
|
if (!handle) {
|