factory-factory 0.4.1 → 0.4.2
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 +1 -1
- package/dist/client/assets/abnfDiagram-VRR7QNED-Bz06FkfB.js +1 -0
- package/dist/client/assets/arc--1iscGgN.js +1 -0
- package/dist/client/assets/architectureDiagram-ZJ3FMSHR-Ds-52hDI.js +36 -0
- package/dist/client/assets/blockDiagram-677ZJIJ3-DZwPPZmp.js +132 -0
- package/dist/client/assets/{c4Diagram-AAUBKEIU-CT8hJB-h.js → c4Diagram-LMCZKHZV-RQch21fC.js} +1 -1
- package/dist/client/assets/channel-DFzHt_cl.js +1 -0
- package/dist/client/assets/{chunk-QZHKN3VN-Ce3Q_vrs.js → chunk-2Q5K7J3B-Df6Q19iI.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-Qhi4WqzZ.js → chunk-32BRIVSS-DlbaZtVC.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-B4C3KvLe.js → chunk-5VM5RSS4-KgkMhS6k.js} +1 -1
- package/dist/client/assets/chunk-EX3LRPZG-DAfTWCem.js +231 -0
- package/dist/client/assets/{chunk-4BX2VUAB-km6NpEMz.js → chunk-JWPE2WC7-D6Y5C5Yz.js} +1 -1
- package/dist/client/assets/chunk-MOJQB5TN-B_P4pqPC.js +88 -0
- package/dist/client/assets/chunk-RYQCIY6F-CzFboHFv.js +1 -0
- package/dist/client/assets/{chunk-727SXJPM-Bp-ts2at.js → chunk-V7JOEXUC-8yT3lW_D.js} +5 -5
- package/dist/client/assets/{chunk-2J33WTMH-B0h8q8fD.js → chunk-VR4S4FIN-B_QG1di-.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-COUWt3oA.js → chunk-XXDRQBXY-CzL4_omu.js} +1 -1
- package/dist/client/assets/classDiagram-OUVF2IWQ-IkvZ4qsF.js +1 -0
- package/dist/client/assets/classDiagram-v2-EOCWNBFH-IkvZ4qsF.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-D6QofwFq.js → cose-bilkent-JH36ORCC-DmZLPx5-.js} +1 -1
- package/dist/client/assets/cynefin-VYW2F7L2-DUejQU5F.js +166 -0
- package/dist/client/assets/cynefinDiagram-TSTJHNR4-BjallChk.js +62 -0
- package/dist/client/assets/cytoscape.esm-D3_iZ_3b.js +321 -0
- package/dist/client/assets/dagre-VKFMJZFB-COdOy8Kp.js +4 -0
- package/dist/client/assets/{diagram-KO2AKTUF-B9ABz-Wk.js → diagram-FQU43EPY-C8Xk7Fyh.js} +3 -3
- package/dist/client/assets/diagram-G47NLZAW-B_qqKBqq.js +24 -0
- package/dist/client/assets/diagram-NH7WQ7WH-DS1-6fzl.js +24 -0
- package/dist/client/assets/diagram-OA4YK3LP-enaDU5V4.js +30 -0
- package/dist/client/assets/diagram-WEI45ONY-Cx6LFRuh.js +41 -0
- package/dist/client/assets/ebnfDiagram-CCIWWBDH-DVGMcsj6.js +1 -0
- package/dist/client/assets/erDiagram-Q63AITRT-DCsDfIB_.js +85 -0
- package/dist/client/assets/flowDiagram-23GEKE2U-C5QCjsF8.js +156 -0
- package/dist/client/assets/ganttDiagram-NO4QXBWP-CLvtSsZ-.js +292 -0
- package/dist/client/assets/gitGraphDiagram-IHSO6WYX-BS6vNDTo.js +106 -0
- package/dist/client/assets/{graph--OzhPTMs.js → graph-DOmOIIwC.js} +1 -1
- package/dist/client/assets/index-0-xpZu6O.js +689 -0
- package/dist/client/assets/index-CxLzpVmH.css +1 -0
- package/dist/client/assets/infoDiagram-FWYZ7A6U-CIuYQAoE.js +2 -0
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-BLrvV5ke.js → ishikawaDiagram-FXEZZL3T-DeVUVV8X.js} +5 -5
- package/dist/client/assets/{journeyDiagram-JHISSGLW-B2-TMwJI.js → journeyDiagram-5HDEW3XC-BsmmwqMS.js} +3 -3
- package/dist/client/assets/{kanban-definition-UN3LZRKU-B5mGKgYF.js → kanban-definition-HUTT4EX6-D-mDPzR0.js} +20 -20
- package/dist/client/assets/katex-HP8lGamR.js +257 -0
- package/dist/client/assets/layout-D-LzfAck.js +1 -0
- package/dist/client/assets/{linear-ConE9euY.js → linear-BSdMIO3_.js} +1 -1
- package/dist/client/assets/map-DxJ2ADlA.js +1 -0
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-B0BaMk8D.js → mindmap-definition-LN4V7U3C-DOuSISM2.js} +3 -3
- package/dist/client/assets/{mobile-baseline-DWCt7ZGJ.js → mobile-baseline-C-1Tc5b_.js} +1 -1
- package/dist/client/assets/pegDiagram-2B236MQR-C8CMsmVK.js +1 -0
- package/dist/client/assets/pieDiagram-ENE6RG2P-B1UfUhQO.js +39 -0
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-DDbeggF4.js → quadrantDiagram-ABIIQ3AL-DujmyYtF.js} +3 -3
- package/dist/client/assets/railroadDiagram-RFXS5EU6-DaF-IoiS.js +1 -0
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-Cc3ozz7U.js → requirementDiagram-TGXJPOKE-dfpBVIPb.js} +1 -1
- package/dist/client/assets/sankeyDiagram-HTMAVEWB-BYCvwHlS.js +40 -0
- package/dist/client/assets/sequenceDiagram-DBY2YBRQ-DOdQoxUf.js +162 -0
- package/dist/client/assets/sizeCapture-X5ZJPWSS-9sUXw3Q8.js +1 -0
- package/dist/client/assets/stateDiagram-2N3HPSRC-QZszWUA_.js +1 -0
- package/dist/client/assets/stateDiagram-v2-6OUMAXLB-CueME36n.js +1 -0
- package/dist/client/assets/swimlanes-5IMT3BWC-CtEVTRNN.js +2 -0
- package/dist/client/assets/swimlanesDiagram-G3AALYLV-DITFxuwY.js +8 -0
- package/dist/client/assets/{terminal-instance-CDKJdDaO.js → terminal-instance-nU4PXHMm.js} +1 -1
- package/dist/client/assets/{timeline-definition-PNZ67QCA-CyxBqgqv.js → timeline-definition-FHXFAJF6-0fOfnsxU.js} +3 -3
- package/dist/client/assets/vennDiagram-L72KCM5P-5eWMXdkg.js +34 -0
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-CjJBpd3P.js → wardleyDiagram-EHGQE667-BwNCxx2w.js} +4 -4
- package/dist/client/assets/xychartDiagram-FW5EYKEG-VIc8vlw6.js +7 -0
- package/dist/client/index.html +2 -2
- package/dist/prisma/generated/browser.d.ts +4 -0
- package/dist/prisma/generated/browser.d.ts.map +1 -1
- package/dist/prisma/generated/client.d.ts +4 -0
- package/dist/prisma/generated/client.d.ts.map +1 -1
- package/dist/prisma/generated/commonInputTypes.d.ts +88 -148
- package/dist/prisma/generated/commonInputTypes.d.ts.map +1 -1
- package/dist/prisma/generated/enums.d.ts +0 -6
- package/dist/prisma/generated/enums.d.ts.map +1 -1
- package/dist/prisma/generated/enums.js +0 -5
- package/dist/prisma/generated/enums.js.map +1 -1
- package/dist/prisma/generated/internal/class.d.ts +16 -2
- 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 +370 -47
- package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespace.js +51 -37
- package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +52 -34
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.js +49 -35
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/prisma/generated/models/Workspace.d.ts +1017 -2537
- package/dist/prisma/generated/models/Workspace.d.ts.map +1 -1
- package/dist/prisma/generated/models/WorkspaceAutoIteration.d.ts +524 -0
- package/dist/prisma/generated/models/WorkspaceAutoIteration.d.ts.map +1 -0
- package/dist/prisma/generated/models/WorkspaceAutoIteration.js +2 -0
- package/dist/prisma/generated/models/WorkspaceAutoIteration.js.map +1 -0
- package/dist/prisma/generated/models/WorkspacePR.d.ts +858 -0
- package/dist/prisma/generated/models/WorkspacePR.d.ts.map +1 -0
- package/dist/prisma/generated/models/WorkspacePR.js +2 -0
- package/dist/prisma/generated/models/WorkspacePR.js.map +1 -0
- package/dist/prisma/generated/models/WorkspaceRatchet.d.ts +593 -0
- package/dist/prisma/generated/models/WorkspaceRatchet.d.ts.map +1 -0
- package/dist/prisma/generated/models/WorkspaceRatchet.js +2 -0
- package/dist/prisma/generated/models/WorkspaceRatchet.js.map +1 -0
- package/dist/prisma/generated/models/WorkspaceRunScript.d.ts +631 -0
- package/dist/prisma/generated/models/WorkspaceRunScript.d.ts.map +1 -0
- package/dist/prisma/generated/models/WorkspaceRunScript.js +2 -0
- package/dist/prisma/generated/models/WorkspaceRunScript.js.map +1 -0
- package/dist/prisma/generated/models.d.ts +4 -0
- package/dist/prisma/generated/models.d.ts.map +1 -1
- package/dist/src/backend/app-context.d.ts +4 -1
- package/dist/src/backend/app-context.d.ts.map +1 -1
- package/dist/src/backend/app-context.js +8 -6
- package/dist/src/backend/app-context.js.map +1 -1
- package/dist/src/backend/interceptors/auto-branch-rename.d.ts +19 -0
- package/dist/src/backend/interceptors/auto-branch-rename.d.ts.map +1 -0
- package/dist/src/backend/interceptors/auto-branch-rename.js +76 -0
- package/dist/src/backend/interceptors/auto-branch-rename.js.map +1 -0
- package/dist/src/backend/interceptors/branch-naming.interceptor.d.ts +4 -0
- package/dist/src/backend/interceptors/branch-naming.interceptor.d.ts.map +1 -0
- package/dist/src/backend/interceptors/branch-naming.interceptor.js +391 -0
- package/dist/src/backend/interceptors/branch-naming.interceptor.js.map +1 -0
- package/dist/src/backend/interceptors/branch-naming.interceptor.test.d.ts +2 -0
- package/dist/src/backend/interceptors/branch-naming.interceptor.test.d.ts.map +1 -0
- package/dist/src/backend/interceptors/branch-naming.interceptor.test.js +780 -0
- package/dist/src/backend/interceptors/branch-naming.interceptor.test.js.map +1 -0
- package/dist/src/backend/interceptors/branch-rename.utils.d.ts +1 -1
- package/dist/src/backend/interceptors/branch-rename.utils.d.ts.map +1 -1
- package/dist/src/backend/interceptors/branch-rename.utils.js +10 -14
- package/dist/src/backend/interceptors/branch-rename.utils.js.map +1 -1
- package/dist/src/backend/interceptors/index.d.ts.map +1 -1
- package/dist/src/backend/interceptors/index.js +2 -6
- package/dist/src/backend/interceptors/index.js.map +1 -1
- package/dist/src/backend/orchestration/data-backup.service.d.ts.map +1 -1
- package/dist/src/backend/orchestration/data-backup.service.js +103 -53
- package/dist/src/backend/orchestration/data-backup.service.js.map +1 -1
- package/dist/src/backend/orchestration/data-backup.service.test.js +186 -47
- package/dist/src/backend/orchestration/data-backup.service.test.js.map +1 -1
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts +7 -5
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts.map +1 -1
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.js +116 -60
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.js.map +1 -1
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js +262 -104
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js.map +1 -1
- package/dist/src/backend/orchestration/event-collector-lifecycle.integration.test.js +2 -2
- package/dist/src/backend/orchestration/event-collector-lifecycle.integration.test.js.map +1 -1
- package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts +5 -6
- package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts.map +1 -1
- package/dist/src/backend/orchestration/event-collector.orchestrator.js +12 -35
- package/dist/src/backend/orchestration/event-collector.orchestrator.js.map +1 -1
- package/dist/src/backend/orchestration/event-collector.orchestrator.test.js +42 -26
- package/dist/src/backend/orchestration/event-collector.orchestrator.test.js.map +1 -1
- package/dist/src/backend/orchestration/reconciliation.service.d.ts +4 -3
- package/dist/src/backend/orchestration/reconciliation.service.d.ts.map +1 -1
- package/dist/src/backend/orchestration/reconciliation.service.js +26 -38
- package/dist/src/backend/orchestration/reconciliation.service.js.map +1 -1
- package/dist/src/backend/orchestration/reconciliation.service.test.js +3 -3
- package/dist/src/backend/orchestration/reconciliation.service.test.js.map +1 -1
- package/dist/src/backend/orchestration/scheduler.service.d.ts +4 -3
- package/dist/src/backend/orchestration/scheduler.service.d.ts.map +1 -1
- package/dist/src/backend/orchestration/scheduler.service.js +40 -43
- package/dist/src/backend/orchestration/scheduler.service.js.map +1 -1
- package/dist/src/backend/orchestration/scheduler.service.test.js +52 -10
- package/dist/src/backend/orchestration/scheduler.service.test.js.map +1 -1
- package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts +5 -5
- package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts.map +1 -1
- package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js +20 -61
- package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js.map +1 -1
- package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js +29 -3
- package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js.map +1 -1
- package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts +3 -37
- package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts.map +1 -1
- package/dist/src/backend/orchestration/workspace-archive.orchestrator.js +2 -2
- package/dist/src/backend/orchestration/workspace-archive.orchestrator.js.map +1 -1
- package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js +9 -9
- package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js.map +1 -1
- package/dist/src/backend/orchestration/workspace-init.orchestrator.js +3 -3
- package/dist/src/backend/orchestration/workspace-init.orchestrator.js.map +1 -1
- package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js +18 -18
- package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js.map +1 -1
- package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.d.ts.map +1 -1
- package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.js +8 -1
- package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.js.map +1 -1
- package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.test.js +23 -0
- package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.test.js.map +1 -1
- package/dist/src/backend/routers/websocket/chat.handler.d.ts.map +1 -1
- package/dist/src/backend/routers/websocket/chat.handler.js +10 -6
- package/dist/src/backend/routers/websocket/chat.handler.js.map +1 -1
- package/dist/src/backend/routers/websocket/chat.handler.test.js +37 -11
- package/dist/src/backend/routers/websocket/chat.handler.test.js.map +1 -1
- package/dist/src/backend/routers/websocket/index.d.ts +1 -2
- package/dist/src/backend/routers/websocket/index.d.ts.map +1 -1
- package/dist/src/backend/routers/websocket/index.js +1 -2
- package/dist/src/backend/routers/websocket/index.js.map +1 -1
- package/dist/src/backend/routers/websocket/log-stream-dev.handler.test.d.ts +2 -0
- package/dist/src/backend/routers/websocket/log-stream-dev.handler.test.d.ts.map +1 -0
- package/dist/src/backend/routers/websocket/{dev-logs.handler.test.js → log-stream-dev.handler.test.js} +2 -2
- package/dist/src/backend/routers/websocket/log-stream-dev.handler.test.js.map +1 -0
- package/dist/src/backend/routers/websocket/log-stream-post-run.handler.test.d.ts +2 -0
- package/dist/src/backend/routers/websocket/log-stream-post-run.handler.test.d.ts.map +1 -0
- package/dist/src/backend/routers/websocket/{post-run-logs.handler.test.js → log-stream-post-run.handler.test.js} +2 -2
- package/dist/src/backend/routers/websocket/log-stream-post-run.handler.test.js.map +1 -0
- package/dist/src/backend/routers/websocket/log-stream.handler.d.ts +8 -0
- package/dist/src/backend/routers/websocket/log-stream.handler.d.ts.map +1 -0
- package/dist/src/backend/routers/websocket/log-stream.handler.js +35 -0
- package/dist/src/backend/routers/websocket/log-stream.handler.js.map +1 -0
- package/dist/src/backend/routers/websocket/terminal.handler.d.ts.map +1 -1
- package/dist/src/backend/routers/websocket/terminal.handler.js +4 -2
- package/dist/src/backend/routers/websocket/terminal.handler.js.map +1 -1
- package/dist/src/backend/routers/websocket/terminal.handler.test.js +37 -0
- package/dist/src/backend/routers/websocket/terminal.handler.test.js.map +1 -1
- package/dist/src/backend/routers/websocket/websocket.integration.test.js +6 -9
- package/dist/src/backend/routers/websocket/websocket.integration.test.js.map +1 -1
- package/dist/src/backend/server.d.ts.map +1 -1
- package/dist/src/backend/server.js +12 -3
- package/dist/src/backend/server.js.map +1 -1
- package/dist/src/backend/server.upgrade.test.js +35 -6
- package/dist/src/backend/server.upgrade.test.js.map +1 -1
- package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.test.js +15 -0
- package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.test.js.map +1 -1
- package/dist/src/backend/services/auto-iteration/service/git-ops.d.ts.map +1 -1
- package/dist/src/backend/services/auto-iteration/service/git-ops.integration.test.d.ts +2 -0
- package/dist/src/backend/services/auto-iteration/service/git-ops.integration.test.d.ts.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/git-ops.integration.test.js +86 -0
- package/dist/src/backend/services/auto-iteration/service/git-ops.integration.test.js.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/git-ops.js +37 -2
- package/dist/src/backend/services/auto-iteration/service/git-ops.js.map +1 -1
- package/dist/src/backend/services/auto-iteration/service/test-runner.service.d.ts.map +1 -1
- package/dist/src/backend/services/auto-iteration/service/test-runner.service.js +9 -8
- package/dist/src/backend/services/auto-iteration/service/test-runner.service.js.map +1 -1
- package/dist/src/backend/services/auto-iteration/service/test-runner.service.test.d.ts +2 -0
- package/dist/src/backend/services/auto-iteration/service/test-runner.service.test.d.ts.map +1 -0
- package/dist/src/backend/services/auto-iteration/service/test-runner.service.test.js +80 -0
- package/dist/src/backend/services/auto-iteration/service/test-runner.service.test.js.map +1 -0
- package/dist/src/backend/services/check-single-writer.test.js +303 -32
- package/dist/src/backend/services/check-single-writer.test.js.map +1 -1
- package/dist/src/backend/services/constants.d.ts +1 -0
- package/dist/src/backend/services/constants.d.ts.map +1 -1
- package/dist/src/backend/services/constants.js +1 -0
- package/dist/src/backend/services/constants.js.map +1 -1
- package/dist/src/backend/services/env-schemas.d.ts +46 -46
- package/dist/src/backend/services/github/service/bridges.d.ts +6 -5
- package/dist/src/backend/services/github/service/bridges.d.ts.map +1 -1
- package/dist/src/backend/services/github/service/github-cli/mappers.d.ts +5 -2
- package/dist/src/backend/services/github/service/github-cli/mappers.d.ts.map +1 -1
- package/dist/src/backend/services/github/service/github-cli/mappers.js.map +1 -1
- package/dist/src/backend/services/github/service/github-cli/schemas.d.ts +4 -4
- package/dist/src/backend/services/github/service/github-cli.service.d.ts +5 -1
- package/dist/src/backend/services/github/service/github-cli.service.d.ts.map +1 -1
- package/dist/src/backend/services/github/service/github-cli.service.js.map +1 -1
- package/dist/src/backend/services/github/service/index.d.ts +2 -3
- package/dist/src/backend/services/github/service/index.d.ts.map +1 -1
- package/dist/src/backend/services/github/service/index.js +2 -2
- package/dist/src/backend/services/github/service/index.js.map +1 -1
- package/dist/src/backend/services/github/service/pr-fetch-coordinator.d.ts +33 -0
- package/dist/src/backend/services/github/service/pr-fetch-coordinator.d.ts.map +1 -0
- package/dist/src/backend/services/github/service/{pr-fetch-registry.js → pr-fetch-coordinator.js} +80 -69
- package/dist/src/backend/services/github/service/pr-fetch-coordinator.js.map +1 -0
- package/dist/src/backend/services/github/service/pr-fetch-coordinator.test.d.ts +2 -0
- package/dist/src/backend/services/github/service/pr-fetch-coordinator.test.d.ts.map +1 -0
- package/dist/src/backend/services/github/service/pr-fetch-coordinator.test.js +222 -0
- package/dist/src/backend/services/github/service/pr-fetch-coordinator.test.js.map +1 -0
- package/dist/src/backend/services/github/service/pr-snapshot.service.d.ts +12 -11
- package/dist/src/backend/services/github/service/pr-snapshot.service.d.ts.map +1 -1
- package/dist/src/backend/services/github/service/pr-snapshot.service.js +23 -22
- package/dist/src/backend/services/github/service/pr-snapshot.service.js.map +1 -1
- package/dist/src/backend/services/github/service/pr-snapshot.service.test.js +134 -75
- package/dist/src/backend/services/github/service/pr-snapshot.service.test.js.map +1 -1
- package/dist/src/backend/services/job-runner.service.d.ts +24 -0
- package/dist/src/backend/services/job-runner.service.d.ts.map +1 -0
- package/dist/src/backend/services/job-runner.service.js +168 -0
- package/dist/src/backend/services/job-runner.service.js.map +1 -0
- package/dist/src/backend/services/job-runner.service.test.d.ts +2 -0
- package/dist/src/backend/services/job-runner.service.test.d.ts.map +1 -0
- package/dist/src/backend/services/job-runner.service.test.js +498 -0
- package/dist/src/backend/services/job-runner.service.test.js.map +1 -0
- package/dist/src/backend/services/periodic-task/service/periodic-task.service.d.ts +8 -11
- package/dist/src/backend/services/periodic-task/service/periodic-task.service.d.ts.map +1 -1
- package/dist/src/backend/services/periodic-task/service/periodic-task.service.js +28 -50
- package/dist/src/backend/services/periodic-task/service/periodic-task.service.js.map +1 -1
- package/dist/src/backend/services/port.service.d.ts.map +1 -1
- package/dist/src/backend/services/port.service.js +4 -0
- package/dist/src/backend/services/port.service.js.map +1 -1
- package/dist/src/backend/services/port.service.test.js +9 -0
- package/dist/src/backend/services/port.service.test.js.map +1 -1
- package/dist/src/backend/services/ratchet/service/bridges.d.ts +24 -7
- package/dist/src/backend/services/ratchet/service/bridges.d.ts.map +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet-active-session.helpers.d.ts.map +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet-active-session.helpers.js +11 -10
- package/dist/src/backend/services/ratchet/service/ratchet-active-session.helpers.js.map +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.d.ts +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.js +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.js.map +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet-fixer-dispatch.helpers.d.ts.map +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet-fixer-dispatch.helpers.js +8 -3
- package/dist/src/backend/services/ratchet/service/ratchet-fixer-dispatch.helpers.js.map +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.d.ts +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.d.ts.map +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.js +103 -95
- package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.js.map +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.test.js +36 -22
- package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.test.js.map +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet.service.d.ts +6 -8
- package/dist/src/backend/services/ratchet/service/ratchet.service.d.ts.map +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet.service.js +58 -136
- package/dist/src/backend/services/ratchet/service/ratchet.service.js.map +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet.service.test.js +323 -273
- package/dist/src/backend/services/ratchet/service/ratchet.service.test.js.map +1 -1
- package/dist/src/backend/services/ratchet/service/ratchet.types.d.ts +3 -1
- package/dist/src/backend/services/ratchet/service/ratchet.types.d.ts.map +1 -1
- package/dist/src/backend/services/registry.d.ts +6 -2
- package/dist/src/backend/services/registry.d.ts.map +1 -1
- package/dist/src/backend/services/registry.js +17 -1
- package/dist/src/backend/services/registry.js.map +1 -1
- package/dist/src/backend/services/resources.integration.test.js +73 -45
- package/dist/src/backend/services/resources.integration.test.js.map +1 -1
- package/dist/src/backend/services/run-script/service/run-script-proxy.service.d.ts +1 -0
- package/dist/src/backend/services/run-script/service/run-script-proxy.service.d.ts.map +1 -1
- package/dist/src/backend/services/run-script/service/run-script-proxy.service.js +25 -2
- package/dist/src/backend/services/run-script/service/run-script-proxy.service.js.map +1 -1
- package/dist/src/backend/services/run-script/service/run-script-proxy.service.test.js +124 -6
- package/dist/src/backend/services/run-script/service/run-script-proxy.service.test.js.map +1 -1
- package/dist/src/backend/services/run-script/service/run-script-state-machine.service.d.ts.map +1 -1
- package/dist/src/backend/services/run-script/service/run-script-state-machine.service.js.map +1 -1
- package/dist/src/backend/services/run-script/service/run-script-state-machine.service.test.js +125 -125
- package/dist/src/backend/services/run-script/service/run-script-state-machine.service.test.js.map +1 -1
- package/dist/src/backend/services/run-script/service/startup-script.service.d.ts.map +1 -1
- package/dist/src/backend/services/run-script/service/startup-script.service.js +20 -5
- package/dist/src/backend/services/run-script/service/startup-script.service.js.map +1 -1
- package/dist/src/backend/services/run-script/service/startup-script.service.test.js +95 -1
- package/dist/src/backend/services/run-script/service/startup-script.service.test.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.js +4 -4
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.test.js +4 -2
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.test.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.d.ts +2 -2
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.js +2 -2
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.test.js +10 -25
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.test.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-config-option.handler.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-config-option.handler.js +10 -2
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-config-option.handler.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-config-option.handler.test.js +41 -2
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-config-option.handler.test.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-model.handler.d.ts +2 -2
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-model.handler.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-model.handler.js +4 -4
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-model.handler.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-model.handler.test.js +1 -4
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-model.handler.test.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-thinking-budget.handler.js +2 -2
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-thinking-budget.handler.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-thinking-budget.handler.test.js +2 -2
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-thinking-budget.handler.test.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.js +2 -2
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.test.js +2 -2
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.test.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/stop.handler.js +2 -2
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/stop.handler.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/stop.handler.test.js +2 -2
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/stop.handler.test.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.d.ts +3 -2
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.js +2 -2
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.test.js +17 -20
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.test.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/registry.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/registry.js +15 -6
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/registry.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/types.d.ts +12 -3
- package/dist/src/backend/services/session/service/chat/chat-message-handlers/types.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.js +18 -14
- package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.js.map +1 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.test.js +7 -1
- package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.test.js.map +1 -1
- package/dist/src/backend/services/session/service/data/session-provider-resolver.service.test.js +1 -3
- package/dist/src/backend/services/session/service/data/session-provider-resolver.service.test.js.map +1 -1
- package/dist/src/backend/services/session/service/index.d.ts +6 -1
- package/dist/src/backend/services/session/service/index.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/index.js +5 -1
- package/dist/src/backend/services/session/service/index.js.map +1 -1
- package/dist/src/backend/services/session/service/interceptor.bridge.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/interceptor.bridge.js +47 -3
- package/dist/src/backend/services/session/service/interceptor.bridge.js.map +1 -1
- package/dist/src/backend/services/session/service/interceptor.bridge.test.d.ts +2 -0
- package/dist/src/backend/services/session/service/interceptor.bridge.test.d.ts.map +1 -0
- package/dist/src/backend/services/session/service/interceptor.bridge.test.js +83 -0
- package/dist/src/backend/services/session/service/interceptor.bridge.test.js.map +1 -0
- package/dist/src/backend/services/session/service/lifecycle/session-services.d.ts +16 -0
- package/dist/src/backend/services/session/service/lifecycle/session-services.d.ts.map +1 -0
- package/dist/src/backend/services/session/service/lifecycle/session-services.js +79 -0
- package/dist/src/backend/services/session/service/lifecycle/session-services.js.map +1 -0
- package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts +4 -2
- 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 +6 -4
- package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.test.js +10 -11
- package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.test.js.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/session.prompt.service.test.d.ts +2 -0
- package/dist/src/backend/services/session/service/lifecycle/session.prompt.service.test.d.ts.map +1 -0
- package/dist/src/backend/services/session/service/lifecycle/session.prompt.service.test.js +142 -0
- package/dist/src/backend/services/session/service/lifecycle/session.prompt.service.test.js.map +1 -0
- package/dist/src/backend/services/session/service/lifecycle/session.repository.d.ts +5 -2
- package/dist/src/backend/services/session/service/lifecycle/session.repository.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/session.repository.js.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/session.repository.test.js.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/session.service.d.ts +16 -76
- 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 +21 -215
- 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 +159 -66
- package/dist/src/backend/services/session/service/lifecycle/session.service.test.js.map +1 -1
- package/dist/src/backend/services/settings/resources/data-backup.accessor.d.ts +10 -2
- package/dist/src/backend/services/settings/resources/data-backup.accessor.d.ts.map +1 -1
- package/dist/src/backend/services/settings/resources/data-backup.accessor.js +4 -1
- package/dist/src/backend/services/settings/resources/data-backup.accessor.js.map +1 -1
- package/dist/src/backend/services/settings/resources/user-settings.accessor.d.ts.map +1 -1
- package/dist/src/backend/services/settings/resources/user-settings.accessor.js +1 -0
- package/dist/src/backend/services/settings/resources/user-settings.accessor.js.map +1 -1
- package/dist/src/backend/services/settings/resources/user-settings.accessor.test.d.ts +2 -0
- package/dist/src/backend/services/settings/resources/user-settings.accessor.test.d.ts.map +1 -0
- package/dist/src/backend/services/settings/resources/user-settings.accessor.test.js +24 -0
- package/dist/src/backend/services/settings/resources/user-settings.accessor.test.js.map +1 -0
- package/dist/src/backend/services/terminal/service/terminal-session.service.d.ts +3 -37
- package/dist/src/backend/services/terminal/service/terminal-session.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.d.ts +25 -0
- package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.d.ts.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.js +73 -0
- package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.js.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.test.d.ts +2 -0
- package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.test.d.ts.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.test.js +155 -0
- package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.test.js.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.d.ts +61 -0
- package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.d.ts.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.js +265 -0
- package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.js.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.test.d.ts +2 -0
- package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.test.d.ts.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.test.js +398 -0
- package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.test.js.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.d.ts +50 -0
- package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.d.ts.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.js +179 -0
- package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.js.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.test.d.ts +2 -0
- package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.test.d.ts.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.test.js +311 -0
- package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.test.js.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.d.ts +33 -0
- package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.d.ts.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.js +110 -0
- package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.js.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.test.d.ts +2 -0
- package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.test.d.ts.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.test.js +192 -0
- package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.test.js.map +1 -0
- package/dist/src/backend/services/workspace/resources/workspace.accessor.d.ts +61 -118
- package/dist/src/backend/services/workspace/resources/workspace.accessor.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/resources/workspace.accessor.js +186 -426
- package/dist/src/backend/services/workspace/resources/workspace.accessor.js.map +1 -1
- package/dist/src/backend/services/workspace/resources/workspace.accessor.test.js +286 -623
- package/dist/src/backend/services/workspace/resources/workspace.accessor.test.js.map +1 -1
- package/dist/src/backend/services/workspace/service/bridges.d.ts +0 -1
- package/dist/src/backend/services/workspace/service/bridges.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/index.d.ts +3 -3
- package/dist/src/backend/services/workspace/service/index.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/index.js +2 -2
- package/dist/src/backend/services/workspace/service/index.js.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/creation.service.d.ts +3 -2
- 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 +1 -1
- 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 +2 -3
- 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 +117 -387
- package/dist/src/backend/services/workspace/service/lifecycle/data.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/data.service.js +7 -11
- package/dist/src/backend/services/workspace/service/lifecycle/data.service.js.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/data.service.test.js +13 -13
- package/dist/src/backend/services/workspace/service/lifecycle/data.service.test.js.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.js +13 -30
- package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.js.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.test.js +99 -29
- package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.test.js.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-auto-iteration.service.d.ts +3 -192
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-auto-iteration.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-auto-iteration.service.js +3 -3
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-auto-iteration.service.js.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.d.ts +6 -66
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.js +10 -17
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.js.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.test.js +16 -4
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.test.js.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.d.ts +6 -230
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.js +12 -22
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.js.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-relationships.service.d.ts +78 -75
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-relationships.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.d.ts +5 -132
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.js +3 -6
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.js.map +1 -1
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-state-capabilities.test.js +27 -4
- package/dist/src/backend/services/workspace/service/lifecycle/workspace-state-capabilities.test.js.map +1 -1
- package/dist/src/backend/services/workspace/service/query/project-management.service.d.ts +2 -70
- 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-maintenance.service.d.ts +110 -280
- package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.js +4 -3
- package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.js.map +1 -1
- package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.test.js +7 -4
- package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.test.js.map +1 -1
- package/dist/src/backend/services/workspace/service/query/workspace-notification.service.d.ts +4 -4
- package/dist/src/backend/services/workspace/service/query/workspace-query.service.d.ts +29 -216
- package/dist/src/backend/services/workspace/service/query/workspace-query.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/query/workspace-query.service.js +91 -139
- package/dist/src/backend/services/workspace/service/query/workspace-query.service.js.map +1 -1
- package/dist/src/backend/services/workspace/service/query/workspace-query.service.test.js +113 -102
- package/dist/src/backend/services/workspace/service/query/workspace-query.service.test.js.map +1 -1
- package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.d.ts +1 -0
- package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.js +1 -1
- package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.js.map +1 -1
- package/dist/src/backend/services/workspace/service/state/kanban-state.d.ts +1 -29
- package/dist/src/backend/services/workspace/service/state/kanban-state.d.ts.map +1 -1
- package/dist/src/backend/services/workspace/service/state/kanban-state.js +0 -191
- package/dist/src/backend/services/workspace/service/state/kanban-state.js.map +1 -1
- package/dist/src/backend/services/workspace/service/state/kanban-state.test.js +2 -410
- package/dist/src/backend/services/workspace/service/state/kanban-state.test.js.map +1 -1
- package/dist/src/backend/services/workspace/service/workspace-domain-exports.test.js +1 -4
- package/dist/src/backend/services/workspace/service/workspace-domain-exports.test.js.map +1 -1
- package/dist/src/backend/services/workspace/service/worktree/worktree-init.test.js +1 -1
- package/dist/src/backend/services/workspace/service/worktree/worktree-init.test.js.map +1 -1
- package/dist/src/backend/services/workspace-depth-triggers.integration.test.d.ts +2 -0
- package/dist/src/backend/services/workspace-depth-triggers.integration.test.d.ts.map +1 -0
- package/dist/src/backend/services/workspace-depth-triggers.integration.test.js +68 -0
- package/dist/src/backend/services/workspace-depth-triggers.integration.test.js.map +1 -0
- package/dist/src/backend/testing/check-prisma-versions-script.test.d.ts +2 -0
- package/dist/src/backend/testing/check-prisma-versions-script.test.d.ts.map +1 -0
- package/dist/src/backend/testing/check-prisma-versions-script.test.js +52 -0
- package/dist/src/backend/testing/check-prisma-versions-script.test.js.map +1 -0
- package/dist/src/backend/trpc/admin.router.test.js +7 -7
- package/dist/src/backend/trpc/admin.router.test.js.map +1 -1
- package/dist/src/backend/trpc/admin.trpc.d.ts +2 -4
- package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/admin.trpc.js +3 -3
- package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
- package/dist/src/backend/trpc/closed-sessions.trpc.d.ts +1 -1
- package/dist/src/backend/trpc/index.d.ts +227 -804
- package/dist/src/backend/trpc/index.d.ts.map +1 -1
- package/dist/src/backend/trpc/periodic-task.trpc.d.ts +4 -4
- package/dist/src/backend/trpc/project.trpc.d.ts +2 -70
- package/dist/src/backend/trpc/project.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/session.router.test.js +22 -16
- package/dist/src/backend/trpc/session.router.test.js.map +1 -1
- package/dist/src/backend/trpc/session.trpc.d.ts +11 -45
- package/dist/src/backend/trpc/session.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/session.trpc.js +13 -13
- package/dist/src/backend/trpc/session.trpc.js.map +1 -1
- package/dist/src/backend/trpc/workspace/children.router.test.js +42 -2
- package/dist/src/backend/trpc/workspace/children.router.test.js.map +1 -1
- package/dist/src/backend/trpc/workspace/children.trpc.d.ts +3 -37
- package/dist/src/backend/trpc/workspace/children.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace/children.trpc.js +38 -14
- package/dist/src/backend/trpc/workspace/children.trpc.js.map +1 -1
- package/dist/src/backend/trpc/workspace/composition.test.js +8 -5
- package/dist/src/backend/trpc/workspace/composition.test.js.map +1 -1
- package/dist/src/backend/trpc/workspace/init.trpc.d.ts +52 -40
- package/dist/src/backend/trpc/workspace/init.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts +80 -77
- package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace.router.test.js +22 -25
- package/dist/src/backend/trpc/workspace.router.test.js.map +1 -1
- package/dist/src/backend/trpc/workspace.trpc.d.ts +553 -1477
- package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace.trpc.js +13 -43
- package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
- package/dist/src/cli/runtime-utils.d.ts.map +1 -1
- package/dist/src/cli/runtime-utils.js +4 -0
- package/dist/src/cli/runtime-utils.js.map +1 -1
- package/dist/src/cli/runtime-utils.test.d.ts +2 -0
- package/dist/src/cli/runtime-utils.test.d.ts.map +1 -0
- package/dist/src/cli/runtime-utils.test.js +28 -0
- package/dist/src/cli/runtime-utils.test.js.map +1 -0
- package/dist/src/shared/acp-protocol/protocol/renderer-window.d.ts +1 -0
- package/dist/src/shared/acp-protocol/protocol/renderer-window.d.ts.map +1 -1
- package/dist/src/shared/acp-protocol/protocol/renderer-window.js +13 -2
- package/dist/src/shared/acp-protocol/protocol/renderer-window.js.map +1 -1
- package/dist/src/shared/core/index.d.ts +1 -0
- package/dist/src/shared/core/index.d.ts.map +1 -1
- package/dist/src/shared/core/index.js +1 -0
- package/dist/src/shared/core/index.js.map +1 -1
- package/dist/src/shared/core/ratchet-state.d.ts +10 -0
- package/dist/src/shared/core/ratchet-state.d.ts.map +1 -0
- package/dist/src/shared/core/ratchet-state.js +32 -0
- package/dist/src/shared/core/ratchet-state.js.map +1 -0
- package/dist/src/shared/schemas/export-data.schema.d.ts +2 -12
- package/dist/src/shared/schemas/export-data.schema.d.ts.map +1 -1
- package/dist/src/shared/schemas/export-data.schema.js +2 -4
- package/dist/src/shared/schemas/export-data.schema.js.map +1 -1
- package/dist/src/shared/workspace-snapshot.d.ts +1 -1
- package/dist/src/test-utils/application-graph.d.ts.map +1 -1
- package/dist/src/test-utils/application-graph.js +16 -9
- package/dist/src/test-utils/application-graph.js.map +1 -1
- package/dist/tsconfig.backend.tsbuildinfo +1 -1
- package/package.json +90 -150
- package/prisma/migrations/20260726112950_drop_cached_kanban_column/migration.sql +132 -0
- package/prisma/migrations/20260726135402_split_workspace_ratchet/migration.sql +149 -0
- package/prisma/migrations/20260726181500_split_workspace_pr/migration.sql +142 -0
- package/prisma/migrations/20260726200000_derive_ratchet_state/migration.sql +101 -0
- package/prisma/migrations/20260726220000_split_workspace_run_script/migration.sql +131 -0
- package/prisma/migrations/20260726230000_split_workspace_auto_iteration/migration.sql +123 -0
- package/prisma/schema.prisma +219 -62
- package/dist/client/assets/arc-lK3Ig9GV.js +0 -1
- package/dist/client/assets/architectureDiagram-3BPJPVTR-CeUbfBqe.js +0 -36
- package/dist/client/assets/blockDiagram-GPEHLZMM-DiVGPkq2.js +0 -132
- package/dist/client/assets/channel-CvY1mvIl.js +0 -1
- package/dist/client/assets/chunk-AQP2D5EJ-dyo9i4xa.js +0 -231
- package/dist/client/assets/classDiagram-4FO5ZUOK-Db7ZXJ6w.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Db7ZXJ6w.js +0 -1
- package/dist/client/assets/cytoscape.esm-DkOyvmE4.js +0 -321
- package/dist/client/assets/dagre-BM42HDAG-CDzpFdgD.js +0 -4
- package/dist/client/assets/diagram-2AECGRRQ-dl1_7lyq.js +0 -43
- package/dist/client/assets/diagram-5GNKFQAL-B0ynMwBY.js +0 -10
- package/dist/client/assets/diagram-LMA3HP47-DZxXcfiX.js +0 -24
- package/dist/client/assets/diagram-OG6HWLK6-BncGM9Gv.js +0 -24
- package/dist/client/assets/erDiagram-TEJ5UH35-B9hxScvO.js +0 -85
- package/dist/client/assets/flowDiagram-I6XJVG4X-DgZ2jwJQ.js +0 -162
- package/dist/client/assets/ganttDiagram-6RSMTGT7-BrnNMNRY.js +0 -292
- package/dist/client/assets/gitGraphDiagram-PVQCEYII-BJmed6oD.js +0 -106
- package/dist/client/assets/index-Btlruz7h.css +0 -1
- package/dist/client/assets/index-DEKuJM5_.js +0 -674
- package/dist/client/assets/infoDiagram-5YYISTIA-CtLzR4ip.js +0 -2
- package/dist/client/assets/katex-DHMw6HUq.js +0 -257
- package/dist/client/assets/layout-SsrduOYp.js +0 -1
- package/dist/client/assets/pieDiagram-4H26LBE5-DgPu3GTs.js +0 -30
- package/dist/client/assets/sankeyDiagram-5OEKKPKP-DmYoq588.js +0 -40
- package/dist/client/assets/sequenceDiagram-3UESZ5HK-EVqdDzgf.js +0 -162
- package/dist/client/assets/stateDiagram-AJRCARHV-BRd6IxSa.js +0 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DR2vMoX5.js +0 -1
- package/dist/client/assets/vennDiagram-CIIHVFJN-CLslQYVi.js +0 -34
- package/dist/client/assets/wardley-L42UT6IY-DyEDLg3x.js +0 -161
- package/dist/client/assets/xychartDiagram-2RQKCTM6-DwzoT5Dl.js +0 -7
- package/dist/src/backend/interceptors/branch-rename.interceptor.d.ts +0 -3
- package/dist/src/backend/interceptors/branch-rename.interceptor.d.ts.map +0 -1
- package/dist/src/backend/interceptors/branch-rename.interceptor.js +0 -117
- package/dist/src/backend/interceptors/branch-rename.interceptor.js.map +0 -1
- package/dist/src/backend/interceptors/branch-rename.interceptor.test.d.ts +0 -2
- package/dist/src/backend/interceptors/branch-rename.interceptor.test.d.ts.map +0 -1
- package/dist/src/backend/interceptors/branch-rename.interceptor.test.js +0 -184
- package/dist/src/backend/interceptors/branch-rename.interceptor.test.js.map +0 -1
- package/dist/src/backend/interceptors/pre-pr-rename.interceptor.d.ts +0 -6
- package/dist/src/backend/interceptors/pre-pr-rename.interceptor.d.ts.map +0 -1
- package/dist/src/backend/interceptors/pre-pr-rename.interceptor.js +0 -225
- package/dist/src/backend/interceptors/pre-pr-rename.interceptor.js.map +0 -1
- package/dist/src/backend/interceptors/pre-pr-rename.interceptor.test.d.ts +0 -2
- package/dist/src/backend/interceptors/pre-pr-rename.interceptor.test.d.ts.map +0 -1
- package/dist/src/backend/interceptors/pre-pr-rename.interceptor.test.js +0 -348
- package/dist/src/backend/interceptors/pre-pr-rename.interceptor.test.js.map +0 -1
- package/dist/src/backend/interceptors/pre-push-rename.interceptor.d.ts +0 -4
- package/dist/src/backend/interceptors/pre-push-rename.interceptor.d.ts.map +0 -1
- package/dist/src/backend/interceptors/pre-push-rename.interceptor.js +0 -136
- package/dist/src/backend/interceptors/pre-push-rename.interceptor.js.map +0 -1
- package/dist/src/backend/interceptors/pre-push-rename.interceptor.test.d.ts +0 -2
- package/dist/src/backend/interceptors/pre-push-rename.interceptor.test.d.ts.map +0 -1
- package/dist/src/backend/interceptors/pre-push-rename.interceptor.test.js +0 -260
- package/dist/src/backend/interceptors/pre-push-rename.interceptor.test.js.map +0 -1
- package/dist/src/backend/routers/websocket/dev-logs.handler.d.ts +0 -5
- package/dist/src/backend/routers/websocket/dev-logs.handler.d.ts.map +0 -1
- package/dist/src/backend/routers/websocket/dev-logs.handler.js +0 -28
- package/dist/src/backend/routers/websocket/dev-logs.handler.js.map +0 -1
- package/dist/src/backend/routers/websocket/dev-logs.handler.test.d.ts +0 -2
- package/dist/src/backend/routers/websocket/dev-logs.handler.test.d.ts.map +0 -1
- package/dist/src/backend/routers/websocket/dev-logs.handler.test.js.map +0 -1
- package/dist/src/backend/routers/websocket/post-run-logs.handler.d.ts +0 -5
- package/dist/src/backend/routers/websocket/post-run-logs.handler.d.ts.map +0 -1
- package/dist/src/backend/routers/websocket/post-run-logs.handler.js +0 -18
- package/dist/src/backend/routers/websocket/post-run-logs.handler.js.map +0 -1
- package/dist/src/backend/routers/websocket/post-run-logs.handler.test.d.ts +0 -2
- package/dist/src/backend/routers/websocket/post-run-logs.handler.test.d.ts.map +0 -1
- package/dist/src/backend/routers/websocket/post-run-logs.handler.test.js.map +0 -1
- package/dist/src/backend/services/github/service/pr-fetch-registry.d.ts +0 -20
- package/dist/src/backend/services/github/service/pr-fetch-registry.d.ts.map +0 -1
- package/dist/src/backend/services/github/service/pr-fetch-registry.js.map +0 -1
- package/dist/src/backend/services/github/service/pr-fetch-registry.test.d.ts +0 -2
- package/dist/src/backend/services/github/service/pr-fetch-registry.test.d.ts.map +0 -1
- package/dist/src/backend/services/github/service/pr-fetch-registry.test.js +0 -112
- package/dist/src/backend/services/github/service/pr-fetch-registry.test.js.map +0 -1
- package/dist/src/backend/services/ratchet/service/ratchet-state-machine.d.ts +0 -11
- package/dist/src/backend/services/ratchet/service/ratchet-state-machine.d.ts.map +0 -1
- package/dist/src/backend/services/ratchet/service/ratchet-state-machine.js +0 -77
- package/dist/src/backend/services/ratchet/service/ratchet-state-machine.js.map +0 -1
- package/dist/src/backend/services/ratchet/service/ratchet-state-machine.test.d.ts +0 -2
- package/dist/src/backend/services/ratchet/service/ratchet-state-machine.test.d.ts.map +0 -1
- package/dist/src/backend/services/ratchet/service/ratchet-state-machine.test.js +0 -66
- package/dist/src/backend/services/ratchet/service/ratchet-state-machine.test.js.map +0 -1
- package/dist/src/backend/services/session/service/lifecycle/session.service.coverage.test.d.ts +0 -2
- package/dist/src/backend/services/session/service/lifecycle/session.service.coverage.test.d.ts.map +0 -1
- package/dist/src/backend/services/session/service/lifecycle/session.service.coverage.test.js +0 -279
- package/dist/src/backend/services/session/service/lifecycle/session.service.coverage.test.js.map +0 -1
|
@@ -86,9 +86,9 @@ import { workspaceDataService } from '../../../../../backend/services/workspace/
|
|
|
86
86
|
import { closedSessionPersistenceService } from './closed-session-persistence.service.js';
|
|
87
87
|
import { sessionPromptBuilder } from './session.prompt-builder.js';
|
|
88
88
|
import { sessionRepository } from './session.repository.js';
|
|
89
|
-
import { sessionService } from './session.
|
|
89
|
+
import { acpEventProcessor, sessionLifecycleService, sessionPromptTurnCompletionService, sessionService, } from './session-services.js';
|
|
90
90
|
function getAcpProcessorState() {
|
|
91
|
-
return
|
|
91
|
+
return acpEventProcessor;
|
|
92
92
|
}
|
|
93
93
|
function mockCreatedAcpClient(acpHandle) {
|
|
94
94
|
vi.mocked(acpRuntimeManager.getOrCreateClient).mockImplementation(() => {
|
|
@@ -116,14 +116,18 @@ describe('SessionService', () => {
|
|
|
116
116
|
acpProcessor.pendingAcpToolCalls.clear();
|
|
117
117
|
acpProcessor.sessionToWorkspace.clear();
|
|
118
118
|
acpProcessor.sessionToWorkingDir.clear();
|
|
119
|
-
|
|
119
|
+
sessionPromptTurnCompletionService.setHandler(null);
|
|
120
|
+
const workspaceBridge = {
|
|
121
|
+
markSessionRunning: vi.fn(),
|
|
122
|
+
markSessionIdle: vi.fn(),
|
|
123
|
+
recordRatchetSessionEnd: mockRecordRatchetSessionEnd,
|
|
124
|
+
resetPRDiscoveryBackoff: vi.fn(async () => true),
|
|
125
|
+
};
|
|
120
126
|
sessionService.configure({
|
|
121
|
-
workspace:
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
resetPRDiscoveryBackoff: vi.fn(async () => true),
|
|
126
|
-
},
|
|
127
|
+
workspace: workspaceBridge,
|
|
128
|
+
});
|
|
129
|
+
sessionLifecycleService.configure({
|
|
130
|
+
workspace: workspaceBridge,
|
|
127
131
|
});
|
|
128
132
|
vi.mocked(acpRuntimeManager.getClient).mockReturnValue(undefined);
|
|
129
133
|
vi.mocked(acpRuntimeManager.isSessionRunning).mockReturnValue(false);
|
|
@@ -179,7 +183,7 @@ describe('SessionService', () => {
|
|
|
179
183
|
});
|
|
180
184
|
mockCreatedAcpClient(acpHandle);
|
|
181
185
|
vi.mocked(acpRuntimeManager.sendPrompt).mockResolvedValue({ stopReason: 'end_turn' });
|
|
182
|
-
await
|
|
186
|
+
await sessionLifecycleService.startSession('session-1', { initialPrompt: 'Hello' });
|
|
183
187
|
expect(sessionPromptBuilder.shouldInjectBranchRename).toHaveBeenCalledWith({
|
|
184
188
|
branchName: 'auto-branch',
|
|
185
189
|
isAutoGeneratedBranch: true,
|
|
@@ -238,7 +242,7 @@ describe('SessionService', () => {
|
|
|
238
242
|
});
|
|
239
243
|
mockCreatedAcpClient(acpHandle);
|
|
240
244
|
vi.mocked(acpRuntimeManager.sendPrompt).mockResolvedValue({ stopReason: 'end_turn' });
|
|
241
|
-
await
|
|
245
|
+
await sessionLifecycleService.startSession('session-1', { initialPrompt: '' });
|
|
242
246
|
expect(sessionRepository.updateSession).toHaveBeenCalledWith('session-1', {
|
|
243
247
|
status: SessionStatus.RUNNING,
|
|
244
248
|
});
|
|
@@ -279,7 +283,7 @@ describe('SessionService', () => {
|
|
|
279
283
|
injectedBranchRename: false,
|
|
280
284
|
});
|
|
281
285
|
mockCreatedAcpClient(acpHandle);
|
|
282
|
-
const result = await
|
|
286
|
+
const result = await sessionLifecycleService.getOrCreateSessionClient('session-1');
|
|
283
287
|
expect(result).toBe(acpHandle);
|
|
284
288
|
expect(acpRuntimeManager.getOrCreateClient).toHaveBeenCalledWith('session-1', expect.objectContaining({
|
|
285
289
|
workingDir: '/tmp/work',
|
|
@@ -328,7 +332,7 @@ describe('SessionService', () => {
|
|
|
328
332
|
});
|
|
329
333
|
mockCreatedAcpClient(acpHandle);
|
|
330
334
|
const injectUserMessageSpy = vi.spyOn(sessionDomainService, 'injectCommittedUserMessage');
|
|
331
|
-
await
|
|
335
|
+
await sessionLifecycleService.getOrCreateSessionClient('session-1');
|
|
332
336
|
const acpHandlers = vi.mocked(acpRuntimeManager.getOrCreateClient).mock.calls[0][2];
|
|
333
337
|
acpHandlers.onAcpEvent('session-1', {
|
|
334
338
|
type: 'acp_session_update',
|
|
@@ -375,7 +379,7 @@ describe('SessionService', () => {
|
|
|
375
379
|
});
|
|
376
380
|
mockCreatedAcpClient(acpHandle);
|
|
377
381
|
const injectUserMessageSpy = vi.spyOn(sessionDomainService, 'injectCommittedUserMessage');
|
|
378
|
-
await
|
|
382
|
+
await sessionLifecycleService.getOrCreateSessionClient('session-1');
|
|
379
383
|
const acpHandlers = vi.mocked(acpRuntimeManager.getOrCreateClient).mock.calls[0][2];
|
|
380
384
|
expect(() => acpHandlers.onAcpEvent('session-1', unsafeCoerce({
|
|
381
385
|
type: 'acp_session_update',
|
|
@@ -434,7 +438,7 @@ describe('SessionService', () => {
|
|
|
434
438
|
]);
|
|
435
439
|
try {
|
|
436
440
|
const injectUserMessageSpy = vi.spyOn(sessionDomainService, 'injectCommittedUserMessage');
|
|
437
|
-
await
|
|
441
|
+
await sessionLifecycleService.getOrCreateSessionClient('session-1');
|
|
438
442
|
const acpHandlers = vi.mocked(acpRuntimeManager.getOrCreateClient).mock.calls[0][2];
|
|
439
443
|
acpHandlers.onAcpEvent('session-1', {
|
|
440
444
|
type: 'acp_session_update',
|
|
@@ -486,7 +490,7 @@ describe('SessionService', () => {
|
|
|
486
490
|
});
|
|
487
491
|
mockCreatedAcpClient(acpHandle);
|
|
488
492
|
const injectUserMessageSpy = vi.spyOn(sessionDomainService, 'injectCommittedUserMessage');
|
|
489
|
-
await
|
|
493
|
+
await sessionLifecycleService.getOrCreateSessionClient('session-1');
|
|
490
494
|
vi.mocked(acpRuntimeManager.isSessionWorking).mockReturnValue(true);
|
|
491
495
|
const acpHandlers = vi.mocked(acpRuntimeManager.getOrCreateClient).mock.calls[0][2];
|
|
492
496
|
acpHandlers.onAcpEvent('session-1', {
|
|
@@ -602,7 +606,7 @@ describe('SessionService', () => {
|
|
|
602
606
|
injectedBranchRename: false,
|
|
603
607
|
});
|
|
604
608
|
mockCreatedAcpClient(acpHandle);
|
|
605
|
-
const result = await
|
|
609
|
+
const result = await sessionLifecycleService.getOrCreateSessionClientFromRecord(session);
|
|
606
610
|
expect(result).toBe(acpHandle);
|
|
607
611
|
expect(sessionRepository.getSessionById).not.toHaveBeenCalled();
|
|
608
612
|
expect(acpRuntimeManager.getOrCreateClient).toHaveBeenCalledWith('session-1', expect.objectContaining({
|
|
@@ -647,14 +651,14 @@ describe('SessionService', () => {
|
|
|
647
651
|
injectedBranchRename: false,
|
|
648
652
|
});
|
|
649
653
|
mockCreatedAcpClient(acpHandle);
|
|
650
|
-
await
|
|
654
|
+
await sessionLifecycleService.getOrCreateSessionClientFromRecord(session);
|
|
651
655
|
const stopLoad = createDeferred();
|
|
652
656
|
vi.mocked(sessionRepository.getSessionById).mockReturnValueOnce(stopLoad.promise);
|
|
653
657
|
vi.mocked(sessionRepository.updateSession).mockClear();
|
|
654
658
|
vi.mocked(sessionRepository.updateSession).mockResolvedValue(session);
|
|
655
659
|
vi.mocked(acpRuntimeManager.isStopInProgress).mockReturnValue(false);
|
|
656
660
|
vi.mocked(acpRuntimeManager.stopClient).mockResolvedValue();
|
|
657
|
-
const stopPromise =
|
|
661
|
+
const stopPromise = sessionLifecycleService.stopSession('session-race-test');
|
|
658
662
|
await Promise.resolve();
|
|
659
663
|
const acpHandlers = vi.mocked(acpRuntimeManager.getOrCreateClient).mock.calls[0][2];
|
|
660
664
|
await acpHandlers.onExit('session-race-test', 0);
|
|
@@ -673,7 +677,7 @@ describe('SessionService', () => {
|
|
|
673
677
|
it('still clears lifecycle state when only the runtime is already stopping', async () => {
|
|
674
678
|
vi.mocked(acpRuntimeManager.isStopInProgress).mockReturnValue(true);
|
|
675
679
|
const clearQueuedWorkSpy = vi.spyOn(sessionDomainService, 'clearQueuedWork');
|
|
676
|
-
await
|
|
680
|
+
await sessionLifecycleService.stopSession('session-1');
|
|
677
681
|
expect(acpRuntimeManager.stopClient).not.toHaveBeenCalled();
|
|
678
682
|
expect(sessionRepository.updateSessionIfStatus).not.toHaveBeenCalled();
|
|
679
683
|
expect(clearQueuedWorkSpy).toHaveBeenCalledWith('session-1', { emitSnapshot: true });
|
|
@@ -718,15 +722,15 @@ describe('SessionService', () => {
|
|
|
718
722
|
});
|
|
719
723
|
vi.mocked(acpRuntimeManager.stopClient).mockResolvedValue();
|
|
720
724
|
mockCreatedAcpClient(acpHandle);
|
|
721
|
-
const stopPromise =
|
|
725
|
+
const stopPromise = sessionLifecycleService.stopSession('session-1');
|
|
722
726
|
await vi.waitFor(() => {
|
|
723
727
|
expect(sessionRepository.getSessionById).toHaveBeenCalledTimes(1);
|
|
724
728
|
});
|
|
725
|
-
const startError = await
|
|
729
|
+
const startError = await sessionLifecycleService
|
|
726
730
|
.startSession('session-1', { initialPrompt: '' })
|
|
727
731
|
.then(() => null)
|
|
728
732
|
.catch((error) => error);
|
|
729
|
-
const acquisitionError = await
|
|
733
|
+
const acquisitionError = await sessionLifecycleService
|
|
730
734
|
.getOrCreateSessionClientFromRecord(session)
|
|
731
735
|
.then(() => null)
|
|
732
736
|
.catch((error) => error);
|
|
@@ -741,7 +745,7 @@ describe('SessionService', () => {
|
|
|
741
745
|
vi.mocked(acpRuntimeManager.stopClient).mockResolvedValue();
|
|
742
746
|
vi.mocked(sessionRepository.updateSession).mockResolvedValue({});
|
|
743
747
|
const clearQueuedWorkSpy = vi.spyOn(sessionDomainService, 'clearQueuedWork');
|
|
744
|
-
await
|
|
748
|
+
await sessionLifecycleService.stopSession('session-1');
|
|
745
749
|
expect(clearQueuedWorkSpy).toHaveBeenCalledWith('session-1', { emitSnapshot: true });
|
|
746
750
|
});
|
|
747
751
|
it('clears queued work before waiting for the runtime to stop', async () => {
|
|
@@ -750,7 +754,7 @@ describe('SessionService', () => {
|
|
|
750
754
|
vi.mocked(acpRuntimeManager.stopClient).mockReturnValue(runtimeStop.promise);
|
|
751
755
|
vi.mocked(sessionRepository.updateSession).mockResolvedValue({});
|
|
752
756
|
const clearQueuedWorkSpy = vi.spyOn(sessionDomainService, 'clearQueuedWork');
|
|
753
|
-
const stopPromise =
|
|
757
|
+
const stopPromise = sessionLifecycleService.stopSession('session-1');
|
|
754
758
|
await vi.waitFor(() => {
|
|
755
759
|
expect(acpRuntimeManager.stopClient).toHaveBeenCalledWith('session-1');
|
|
756
760
|
});
|
|
@@ -776,7 +780,7 @@ describe('SessionService', () => {
|
|
|
776
780
|
const secondRejection = expect(secondSend).rejects.toMatchObject({ name: 'AbortError' });
|
|
777
781
|
await Promise.resolve();
|
|
778
782
|
expect(acpRuntimeManager.sendPrompt).toHaveBeenCalledTimes(1);
|
|
779
|
-
await
|
|
783
|
+
await sessionLifecycleService.stopSession('session-queued-stop');
|
|
780
784
|
await secondRejection;
|
|
781
785
|
expect(acpRuntimeManager.sendPrompt).toHaveBeenCalledTimes(1);
|
|
782
786
|
firstPrompt.resolve({ stopReason: 'end_turn' });
|
|
@@ -796,7 +800,7 @@ describe('SessionService', () => {
|
|
|
796
800
|
]);
|
|
797
801
|
await Promise.resolve();
|
|
798
802
|
expect(acpRuntimeManager.sendPrompt).toHaveBeenCalledTimes(1);
|
|
799
|
-
await
|
|
803
|
+
await sessionLifecycleService.stopSession('session-restarted-after-stop');
|
|
800
804
|
const restartedSend = sessionService.sendAcpMessage('session-restarted-after-stop', [
|
|
801
805
|
{ type: 'text', text: 'after restart' },
|
|
802
806
|
]);
|
|
@@ -868,7 +872,7 @@ describe('SessionService', () => {
|
|
|
868
872
|
injectedBranchRename: false,
|
|
869
873
|
});
|
|
870
874
|
mockCreatedAcpClient(acpHandle);
|
|
871
|
-
await
|
|
875
|
+
await sessionLifecycleService.getOrCreateSessionClient('session-runtime-exit');
|
|
872
876
|
const acpHandlers = vi.mocked(acpRuntimeManager.getOrCreateClient).mock.calls[0][2];
|
|
873
877
|
const firstPrompt = createDeferred();
|
|
874
878
|
vi.mocked(acpRuntimeManager.sendPrompt).mockReturnValueOnce(firstPrompt.promise);
|
|
@@ -924,7 +928,7 @@ describe('SessionService', () => {
|
|
|
924
928
|
injectedBranchRename: false,
|
|
925
929
|
});
|
|
926
930
|
mockCreatedAcpClient(acpHandle);
|
|
927
|
-
await
|
|
931
|
+
await sessionLifecycleService.getOrCreateSessionClient('session-runtime-exit');
|
|
928
932
|
const pendingToolCalls = getAcpProcessorState().pendingAcpToolCalls;
|
|
929
933
|
pendingToolCalls.set('session-runtime-exit', new Map([
|
|
930
934
|
[
|
|
@@ -983,7 +987,7 @@ describe('SessionService', () => {
|
|
|
983
987
|
const secondRejection = expect(secondSend).rejects.toMatchObject({ name: 'AbortError' });
|
|
984
988
|
await Promise.resolve();
|
|
985
989
|
expect(acpRuntimeManager.sendPrompt).toHaveBeenCalledTimes(1);
|
|
986
|
-
await
|
|
990
|
+
await sessionLifecycleService.stopSession('session-active-stop');
|
|
987
991
|
await secondRejection;
|
|
988
992
|
const thirdSend = sessionService.sendAcpMessage('session-active-stop', [
|
|
989
993
|
{ type: 'text', text: 'third' },
|
|
@@ -1000,7 +1004,7 @@ describe('SessionService', () => {
|
|
|
1000
1004
|
vi.mocked(acpRuntimeManager.stopClient).mockResolvedValue();
|
|
1001
1005
|
vi.mocked(sessionRepository.updateSession).mockResolvedValue({});
|
|
1002
1006
|
const clearSessionSpy = vi.spyOn(sessionDomainService, 'clearSession');
|
|
1003
|
-
await
|
|
1007
|
+
await sessionLifecycleService.stopSession('session-clear');
|
|
1004
1008
|
expect(clearSessionSpy).toHaveBeenCalledWith('session-clear');
|
|
1005
1009
|
});
|
|
1006
1010
|
it('keeps in-memory session state after manual stop when clients are connected', async () => {
|
|
@@ -1010,7 +1014,7 @@ describe('SessionService', () => {
|
|
|
1010
1014
|
const clearSessionSpy = vi.spyOn(sessionDomainService, 'clearSession');
|
|
1011
1015
|
sessionEventBus.registerViewerCountProvider((sessionId) => sessionId === 'session-active' ? 1 : 0);
|
|
1012
1016
|
try {
|
|
1013
|
-
await
|
|
1017
|
+
await sessionLifecycleService.stopSession('session-active');
|
|
1014
1018
|
}
|
|
1015
1019
|
finally {
|
|
1016
1020
|
sessionEventBus.registerViewerCountProvider(null);
|
|
@@ -1019,7 +1023,7 @@ describe('SessionService', () => {
|
|
|
1019
1023
|
});
|
|
1020
1024
|
it('marks workspace session idle during manual stop', async () => {
|
|
1021
1025
|
const markSessionIdle = vi.fn();
|
|
1022
|
-
|
|
1026
|
+
sessionLifecycleService.configure({
|
|
1023
1027
|
workspace: {
|
|
1024
1028
|
markSessionRunning: vi.fn(),
|
|
1025
1029
|
markSessionIdle,
|
|
@@ -1034,7 +1038,7 @@ describe('SessionService', () => {
|
|
|
1034
1038
|
workspaceId: 'workspace-1',
|
|
1035
1039
|
}));
|
|
1036
1040
|
vi.mocked(sessionRepository.updateSession).mockResolvedValue({});
|
|
1037
|
-
await
|
|
1041
|
+
await sessionLifecycleService.stopSession('session-1');
|
|
1038
1042
|
expect(markSessionIdle).toHaveBeenCalledWith('workspace-1', 'session-1');
|
|
1039
1043
|
});
|
|
1040
1044
|
it('still clears queued work and marks idle when runtime stop fails', async () => {
|
|
@@ -1047,7 +1051,7 @@ describe('SessionService', () => {
|
|
|
1047
1051
|
}));
|
|
1048
1052
|
vi.mocked(sessionRepository.updateSession).mockResolvedValue({});
|
|
1049
1053
|
const clearQueuedWorkSpy = vi.spyOn(sessionDomainService, 'clearQueuedWork');
|
|
1050
|
-
await
|
|
1054
|
+
await sessionLifecycleService.stopSession('session-1');
|
|
1051
1055
|
expect(sessionRepository.updateSessionIfStatus).toHaveBeenCalledWith('session-1', {
|
|
1052
1056
|
status: SessionStatus.IDLE,
|
|
1053
1057
|
}, [SessionStatus.RUNNING]);
|
|
@@ -1078,7 +1082,7 @@ describe('SessionService', () => {
|
|
|
1078
1082
|
const appendClaudeEventSpy = vi
|
|
1079
1083
|
.spyOn(sessionDomainService, 'appendClaudeEvent')
|
|
1080
1084
|
.mockReturnValue(77);
|
|
1081
|
-
await
|
|
1085
|
+
await sessionLifecycleService.stopSession('session-1');
|
|
1082
1086
|
expect(emitDeltaSpy).toHaveBeenCalledWith('session-1', expect.objectContaining({
|
|
1083
1087
|
type: 'tool_progress',
|
|
1084
1088
|
tool_use_id: 'call-1',
|
|
@@ -1102,7 +1106,7 @@ describe('SessionService', () => {
|
|
|
1102
1106
|
});
|
|
1103
1107
|
it('continues stop cleanup when orphaned tool-call finalization throws', async () => {
|
|
1104
1108
|
const markSessionIdle = vi.fn();
|
|
1105
|
-
|
|
1109
|
+
sessionLifecycleService.configure({
|
|
1106
1110
|
workspace: {
|
|
1107
1111
|
markSessionRunning: vi.fn(),
|
|
1108
1112
|
markSessionIdle,
|
|
@@ -1131,7 +1135,7 @@ describe('SessionService', () => {
|
|
|
1131
1135
|
vi.spyOn(sessionDomainService, 'emitDelta').mockImplementationOnce(() => {
|
|
1132
1136
|
throw new Error('emit failed');
|
|
1133
1137
|
});
|
|
1134
|
-
await
|
|
1138
|
+
await sessionLifecycleService.stopSession('session-1');
|
|
1135
1139
|
expect(sessionRepository.updateSessionIfStatus).toHaveBeenCalledWith('session-1', {
|
|
1136
1140
|
status: SessionStatus.IDLE,
|
|
1137
1141
|
}, [SessionStatus.RUNNING]);
|
|
@@ -1166,7 +1170,7 @@ describe('SessionService', () => {
|
|
|
1166
1170
|
vi.mocked(sessionRepository.updateSession).mockResolvedValue({});
|
|
1167
1171
|
vi.mocked(sessionRepository.deleteSession).mockResolvedValue({});
|
|
1168
1172
|
try {
|
|
1169
|
-
await
|
|
1173
|
+
await sessionLifecycleService.stopSession('session-1');
|
|
1170
1174
|
expect(mockRecordRatchetSessionEnd).toHaveBeenCalledWith('workspace-1', 'session-1', 'COMPLETED');
|
|
1171
1175
|
expect(closedSessionPersistenceService.persistClosedSession).toHaveBeenCalledWith({
|
|
1172
1176
|
sessionId: 'session-1',
|
|
@@ -1200,7 +1204,7 @@ describe('SessionService', () => {
|
|
|
1200
1204
|
}));
|
|
1201
1205
|
vi.mocked(sessionRepository.updateSession).mockResolvedValue({});
|
|
1202
1206
|
vi.mocked(closedSessionPersistenceService.persistClosedSession).mockRejectedValue(new Error('Disk full'));
|
|
1203
|
-
await
|
|
1207
|
+
await sessionLifecycleService.stopSession('session-1');
|
|
1204
1208
|
expect(closedSessionPersistenceService.persistClosedSession).toHaveBeenCalledTimes(1);
|
|
1205
1209
|
expect(sessionRepository.deleteSession).not.toHaveBeenCalled();
|
|
1206
1210
|
});
|
|
@@ -1213,7 +1217,7 @@ describe('SessionService', () => {
|
|
|
1213
1217
|
workflow: 'default',
|
|
1214
1218
|
}));
|
|
1215
1219
|
vi.mocked(sessionRepository.updateSession).mockResolvedValue({});
|
|
1216
|
-
await
|
|
1220
|
+
await sessionLifecycleService.stopSession('session-2');
|
|
1217
1221
|
expect(sessionRepository.deleteSession).not.toHaveBeenCalled();
|
|
1218
1222
|
});
|
|
1219
1223
|
it('clears ratchet pointer but does not delete session when transient cleanup is disabled', async () => {
|
|
@@ -1225,7 +1229,7 @@ describe('SessionService', () => {
|
|
|
1225
1229
|
workflow: 'ratchet',
|
|
1226
1230
|
}));
|
|
1227
1231
|
vi.mocked(sessionRepository.updateSession).mockResolvedValue({});
|
|
1228
|
-
await
|
|
1232
|
+
await sessionLifecycleService.stopSession('session-3', {
|
|
1229
1233
|
cleanupTransientRatchetSession: false,
|
|
1230
1234
|
});
|
|
1231
1235
|
expect(mockRecordRatchetSessionEnd).toHaveBeenCalledWith('workspace-1', 'session-3', 'COMPLETED');
|
|
@@ -1263,7 +1267,7 @@ describe('SessionService', () => {
|
|
|
1263
1267
|
});
|
|
1264
1268
|
vi.mocked(acpRuntimeManager.getOrCreateClient).mockRejectedValue(new Error('spawn failed'));
|
|
1265
1269
|
const setRuntimeSnapshotSpy = vi.spyOn(sessionDomainService, 'setRuntimeSnapshot');
|
|
1266
|
-
await expect(
|
|
1270
|
+
await expect(sessionLifecycleService.getOrCreateSessionClient('session-1')).rejects.toThrow('spawn failed');
|
|
1267
1271
|
expect(setRuntimeSnapshotSpy).toHaveBeenNthCalledWith(1, 'session-1', expect.objectContaining({
|
|
1268
1272
|
phase: 'starting',
|
|
1269
1273
|
processState: 'alive',
|
|
@@ -1278,7 +1282,7 @@ describe('SessionService', () => {
|
|
|
1278
1282
|
});
|
|
1279
1283
|
it('throws when session not found during client creation', async () => {
|
|
1280
1284
|
vi.mocked(sessionRepository.getSessionById).mockResolvedValue(null);
|
|
1281
|
-
await expect(
|
|
1285
|
+
await expect(sessionLifecycleService.getOrCreateSessionClient('session-1')).rejects.toThrow('Session not found: session-1');
|
|
1282
1286
|
});
|
|
1283
1287
|
it('returns null session options when workspace is missing', async () => {
|
|
1284
1288
|
const session = unsafeCoerce({
|
|
@@ -1291,7 +1295,7 @@ describe('SessionService', () => {
|
|
|
1291
1295
|
});
|
|
1292
1296
|
vi.mocked(sessionRepository.getSessionById).mockResolvedValue(session);
|
|
1293
1297
|
vi.mocked(sessionRepository.getWorkspaceById).mockResolvedValue(null);
|
|
1294
|
-
const options = await
|
|
1298
|
+
const options = await sessionLifecycleService.getSessionOptions('session-1');
|
|
1295
1299
|
expect(options).toBeNull();
|
|
1296
1300
|
});
|
|
1297
1301
|
it('clears ratchetActiveSessionId and deletes session on ACP ratchet exit', async () => {
|
|
@@ -1336,7 +1340,7 @@ describe('SessionService', () => {
|
|
|
1336
1340
|
});
|
|
1337
1341
|
mockCreatedAcpClient(acpHandle);
|
|
1338
1342
|
vi.mocked(acpRuntimeManager.sendPrompt).mockResolvedValue({ stopReason: 'end_turn' });
|
|
1339
|
-
await
|
|
1343
|
+
await sessionLifecycleService.startSession('session-1');
|
|
1340
1344
|
const acpHandlers = vi.mocked(acpRuntimeManager.getOrCreateClient).mock.calls[0][2];
|
|
1341
1345
|
await acpHandlers.onExit('session-1', 0);
|
|
1342
1346
|
expect(sessionRepository.updateSession).toHaveBeenCalledWith('session-1', {
|
|
@@ -1388,7 +1392,7 @@ describe('SessionService', () => {
|
|
|
1388
1392
|
});
|
|
1389
1393
|
mockCreatedAcpClient(acpHandle);
|
|
1390
1394
|
vi.mocked(acpRuntimeManager.sendPrompt).mockResolvedValue({ stopReason: 'end_turn' });
|
|
1391
|
-
await
|
|
1395
|
+
await sessionLifecycleService.startSession('session-1');
|
|
1392
1396
|
const acpHandlers = vi.mocked(acpRuntimeManager.getOrCreateClient).mock.calls[0][2];
|
|
1393
1397
|
await expect(acpHandlers.onExit('session-1', 0)).resolves.toBeUndefined();
|
|
1394
1398
|
expect(sessionRepository.updateSession).toHaveBeenCalledWith('session-1', {
|
|
@@ -1433,7 +1437,7 @@ describe('SessionService', () => {
|
|
|
1433
1437
|
});
|
|
1434
1438
|
mockCreatedAcpClient(acpHandle);
|
|
1435
1439
|
vi.mocked(acpRuntimeManager.sendPrompt).mockResolvedValue({ stopReason: 'end_turn' });
|
|
1436
|
-
await
|
|
1440
|
+
await sessionLifecycleService.startSession('session-2');
|
|
1437
1441
|
const acpHandlers = vi.mocked(acpRuntimeManager.getOrCreateClient).mock.calls[0][2];
|
|
1438
1442
|
await acpHandlers.onExit('session-2', 0);
|
|
1439
1443
|
expect(sessionRepository.updateSession).toHaveBeenCalledWith('session-2', {
|
|
@@ -1480,7 +1484,7 @@ describe('SessionService', () => {
|
|
|
1480
1484
|
});
|
|
1481
1485
|
mockCreatedAcpClient(acpHandle);
|
|
1482
1486
|
vi.mocked(acpRuntimeManager.sendPrompt).mockResolvedValue({ stopReason: 'end_turn' });
|
|
1483
|
-
await
|
|
1487
|
+
await sessionLifecycleService.startSession('session-2');
|
|
1484
1488
|
const acpHandlers = vi.mocked(acpRuntimeManager.getOrCreateClient).mock.calls[0][2];
|
|
1485
1489
|
await acpHandlers.onExit('session-2', exitCode);
|
|
1486
1490
|
expect(sessionRepository.updateSession).toHaveBeenCalledWith('session-2', {
|
|
@@ -1499,7 +1503,7 @@ describe('SessionService', () => {
|
|
|
1499
1503
|
vi.mocked(acpRuntimeManager.isSessionRunning).mockImplementation(() => {
|
|
1500
1504
|
throw new Error('isSessionRunning failed');
|
|
1501
1505
|
});
|
|
1502
|
-
await expect(
|
|
1506
|
+
await expect(sessionLifecycleService.stopSession('session-1')).rejects.toThrow('isSessionRunning failed');
|
|
1503
1507
|
expect(mockAcpTraceLoggerCloseSession).toHaveBeenCalledWith('session-1');
|
|
1504
1508
|
});
|
|
1505
1509
|
it('closes ACP trace session even when runtime-exit cleanup throws', async () => {
|
|
@@ -1538,7 +1542,7 @@ describe('SessionService', () => {
|
|
|
1538
1542
|
});
|
|
1539
1543
|
mockCreatedAcpClient(acpHandle);
|
|
1540
1544
|
vi.mocked(acpRuntimeManager.sendPrompt).mockResolvedValue({ stopReason: 'end_turn' });
|
|
1541
|
-
await
|
|
1545
|
+
await sessionLifecycleService.startSession('session-2');
|
|
1542
1546
|
const acpHandlers = vi.mocked(acpRuntimeManager.getOrCreateClient).mock.calls[0][2];
|
|
1543
1547
|
vi.mocked(acpRuntimeManager.isSessionRunning).mockImplementation(() => {
|
|
1544
1548
|
throw new Error('isSessionRunning failed');
|
|
@@ -1581,7 +1585,7 @@ describe('SessionService', () => {
|
|
|
1581
1585
|
injectedBranchRename: false,
|
|
1582
1586
|
});
|
|
1583
1587
|
mockCreatedAcpClient(acpHandle);
|
|
1584
|
-
await
|
|
1588
|
+
await sessionLifecycleService.getOrCreateSessionClient('session-1');
|
|
1585
1589
|
expect(acpRuntimeManager.getOrCreateClient).toHaveBeenCalled();
|
|
1586
1590
|
expect(sessionRepository.updateSession).toHaveBeenCalledWith('session-1', {
|
|
1587
1591
|
status: SessionStatus.RUNNING,
|
|
@@ -1688,7 +1692,7 @@ describe('SessionService', () => {
|
|
|
1688
1692
|
vi.useFakeTimers();
|
|
1689
1693
|
try {
|
|
1690
1694
|
const onPromptTurnComplete = vi.fn().mockResolvedValue(undefined);
|
|
1691
|
-
|
|
1695
|
+
sessionPromptTurnCompletionService.setHandler(onPromptTurnComplete);
|
|
1692
1696
|
vi.mocked(acpRuntimeManager.sendPrompt).mockResolvedValue({
|
|
1693
1697
|
stopReason: 'end_turn',
|
|
1694
1698
|
});
|
|
@@ -1705,7 +1709,7 @@ describe('SessionService', () => {
|
|
|
1705
1709
|
vi.useFakeTimers();
|
|
1706
1710
|
try {
|
|
1707
1711
|
const onPromptTurnComplete = vi.fn().mockResolvedValue(undefined);
|
|
1708
|
-
|
|
1712
|
+
sessionPromptTurnCompletionService.setHandler(onPromptTurnComplete);
|
|
1709
1713
|
vi.mocked(acpRuntimeManager.sendPrompt).mockRejectedValue({
|
|
1710
1714
|
code: -32_600,
|
|
1711
1715
|
message: 'Invalid request',
|
|
@@ -1725,7 +1729,7 @@ describe('SessionService', () => {
|
|
|
1725
1729
|
vi.useFakeTimers();
|
|
1726
1730
|
try {
|
|
1727
1731
|
const onPromptTurnComplete = vi.fn().mockResolvedValue(undefined);
|
|
1728
|
-
|
|
1732
|
+
sessionPromptTurnCompletionService.setHandler(onPromptTurnComplete);
|
|
1729
1733
|
vi.mocked(acpRuntimeManager.sendPrompt).mockRejectedValue(new Error('network blip'));
|
|
1730
1734
|
await expect(sessionService.sendAcpMessage('session-1', [{ type: 'text', text: 'hello' }])).rejects.toThrow('network blip');
|
|
1731
1735
|
expect(onPromptTurnComplete).not.toHaveBeenCalled();
|
|
@@ -1740,14 +1744,14 @@ describe('SessionService', () => {
|
|
|
1740
1744
|
vi.useFakeTimers();
|
|
1741
1745
|
try {
|
|
1742
1746
|
const onPromptTurnComplete = vi.fn().mockResolvedValue(undefined);
|
|
1743
|
-
|
|
1747
|
+
sessionPromptTurnCompletionService.setHandler(onPromptTurnComplete);
|
|
1744
1748
|
vi.mocked(acpRuntimeManager.sendPrompt).mockResolvedValue({
|
|
1745
1749
|
stopReason: 'end_turn',
|
|
1746
1750
|
});
|
|
1747
1751
|
vi.mocked(acpRuntimeManager.stopClient).mockResolvedValue();
|
|
1748
1752
|
vi.mocked(sessionRepository.updateSession).mockResolvedValue({});
|
|
1749
1753
|
await sessionService.sendAcpMessage('session-1', [{ type: 'text', text: 'hello' }]);
|
|
1750
|
-
await
|
|
1754
|
+
await sessionLifecycleService.stopSession('session-1');
|
|
1751
1755
|
await vi.runOnlyPendingTimersAsync();
|
|
1752
1756
|
expect(onPromptTurnComplete).not.toHaveBeenCalled();
|
|
1753
1757
|
}
|
|
@@ -1761,14 +1765,14 @@ describe('SessionService', () => {
|
|
|
1761
1765
|
const prompt = createDeferred();
|
|
1762
1766
|
const runtimeStop = createDeferred();
|
|
1763
1767
|
const onPromptTurnComplete = vi.fn().mockResolvedValue(undefined);
|
|
1764
|
-
|
|
1768
|
+
sessionPromptTurnCompletionService.setHandler(onPromptTurnComplete);
|
|
1765
1769
|
vi.mocked(acpRuntimeManager.sendPrompt).mockReturnValue(prompt.promise);
|
|
1766
1770
|
vi.mocked(acpRuntimeManager.stopClient).mockReturnValue(runtimeStop.promise);
|
|
1767
1771
|
const sendPromise = sessionService.sendAcpMessage('session-1', [
|
|
1768
1772
|
{ type: 'text', text: 'hello' },
|
|
1769
1773
|
]);
|
|
1770
1774
|
await Promise.resolve();
|
|
1771
|
-
const stopPromise =
|
|
1775
|
+
const stopPromise = sessionLifecycleService.stopSession('session-1');
|
|
1772
1776
|
await vi.waitFor(() => {
|
|
1773
1777
|
expect(acpRuntimeManager.stopClient).toHaveBeenCalledWith('session-1');
|
|
1774
1778
|
});
|
|
@@ -1784,11 +1788,100 @@ describe('SessionService', () => {
|
|
|
1784
1788
|
vi.useRealTimers();
|
|
1785
1789
|
}
|
|
1786
1790
|
});
|
|
1791
|
+
it('preserves stopped runtime when an in-flight prompt times out after stop completes', async () => {
|
|
1792
|
+
vi.useFakeTimers();
|
|
1793
|
+
const sessionId = 'session-prompt-timeout-after-stop';
|
|
1794
|
+
sessionEventBus.registerViewerCountProvider((viewedSessionId) => viewedSessionId === sessionId ? 1 : 0);
|
|
1795
|
+
const publishToSessionSpy = vi.spyOn(sessionEventBus, 'publishToSession');
|
|
1796
|
+
try {
|
|
1797
|
+
const prompt = createDeferred();
|
|
1798
|
+
const onPromptTurnComplete = vi.fn().mockResolvedValue(undefined);
|
|
1799
|
+
sessionPromptTurnCompletionService.setHandler(onPromptTurnComplete);
|
|
1800
|
+
vi.mocked(acpRuntimeManager.sendPrompt).mockReturnValue(prompt.promise);
|
|
1801
|
+
vi.mocked(acpRuntimeManager.stopClient).mockResolvedValue();
|
|
1802
|
+
const sendPromise = sessionService.sendAcpMessage(sessionId, [
|
|
1803
|
+
{ type: 'text', text: 'hello' },
|
|
1804
|
+
]);
|
|
1805
|
+
const sendRejection = expect(sendPromise).rejects.toThrow('Prompt timed out');
|
|
1806
|
+
await vi.waitFor(() => {
|
|
1807
|
+
expect(acpRuntimeManager.sendPrompt).toHaveBeenCalledWith(sessionId, [{ type: 'text', text: 'hello' }], undefined);
|
|
1808
|
+
});
|
|
1809
|
+
await sessionLifecycleService.stopSession(sessionId);
|
|
1810
|
+
expect(sessionLifecycleService.isSessionStopping(sessionId)).toBe(false);
|
|
1811
|
+
publishToSessionSpy.mockClear();
|
|
1812
|
+
prompt.reject(new Error('Prompt timed out'));
|
|
1813
|
+
await sendRejection;
|
|
1814
|
+
await vi.runOnlyPendingTimersAsync();
|
|
1815
|
+
expect(sessionLifecycleService.getRuntimeSnapshot(sessionId)).toMatchObject({
|
|
1816
|
+
phase: 'idle',
|
|
1817
|
+
processState: 'stopped',
|
|
1818
|
+
activity: 'IDLE',
|
|
1819
|
+
});
|
|
1820
|
+
expect(publishToSessionSpy).not.toHaveBeenCalledWith(sessionId, expect.objectContaining({
|
|
1821
|
+
type: 'session_delta',
|
|
1822
|
+
data: expect.objectContaining({
|
|
1823
|
+
type: 'session_runtime_updated',
|
|
1824
|
+
sessionRuntime: expect.objectContaining({ processState: 'alive' }),
|
|
1825
|
+
}),
|
|
1826
|
+
}));
|
|
1827
|
+
expect(onPromptTurnComplete).not.toHaveBeenCalled();
|
|
1828
|
+
}
|
|
1829
|
+
finally {
|
|
1830
|
+
publishToSessionSpy.mockRestore();
|
|
1831
|
+
sessionEventBus.registerViewerCountProvider(null);
|
|
1832
|
+
vi.useRealTimers();
|
|
1833
|
+
}
|
|
1834
|
+
});
|
|
1835
|
+
it('does not finalize a restarted prompt when a stopped prompt later times out', async () => {
|
|
1836
|
+
const sessionId = 'session-restarted-before-old-prompt-timeout';
|
|
1837
|
+
const stoppedPrompt = createDeferred();
|
|
1838
|
+
const restartedPrompt = createDeferred();
|
|
1839
|
+
vi.mocked(acpRuntimeManager.sendPrompt)
|
|
1840
|
+
.mockReturnValueOnce(stoppedPrompt.promise)
|
|
1841
|
+
.mockReturnValueOnce(restartedPrompt.promise);
|
|
1842
|
+
vi.mocked(acpRuntimeManager.stopClient).mockResolvedValue();
|
|
1843
|
+
const stoppedSend = sessionService.sendAcpMessage(sessionId, [
|
|
1844
|
+
{ type: 'text', text: 'before stop' },
|
|
1845
|
+
]);
|
|
1846
|
+
const stoppedSendRejection = expect(stoppedSend).rejects.toThrow('Prompt timed out');
|
|
1847
|
+
await vi.waitFor(() => {
|
|
1848
|
+
expect(acpRuntimeManager.sendPrompt).toHaveBeenCalledTimes(1);
|
|
1849
|
+
});
|
|
1850
|
+
await sessionLifecycleService.stopSession(sessionId);
|
|
1851
|
+
const restartedSend = sessionService.sendAcpMessage(sessionId, [
|
|
1852
|
+
{ type: 'text', text: 'after restart' },
|
|
1853
|
+
]);
|
|
1854
|
+
await vi.waitFor(() => {
|
|
1855
|
+
expect(acpRuntimeManager.sendPrompt).toHaveBeenCalledTimes(2);
|
|
1856
|
+
});
|
|
1857
|
+
const pendingToolCalls = getAcpProcessorState().pendingAcpToolCalls;
|
|
1858
|
+
pendingToolCalls.set(sessionId, new Map([
|
|
1859
|
+
[
|
|
1860
|
+
'restarted-call',
|
|
1861
|
+
{
|
|
1862
|
+
toolUseId: 'restarted-call',
|
|
1863
|
+
toolName: 'Run tests',
|
|
1864
|
+
},
|
|
1865
|
+
],
|
|
1866
|
+
]));
|
|
1867
|
+
const appendClaudeEventSpy = vi
|
|
1868
|
+
.spyOn(sessionDomainService, 'appendClaudeEvent')
|
|
1869
|
+
.mockReturnValue(88);
|
|
1870
|
+
stoppedPrompt.reject(new Error('Prompt timed out'));
|
|
1871
|
+
await stoppedSendRejection;
|
|
1872
|
+
const restartedToolCallSurvived = pendingToolCalls.get(sessionId)?.has('restarted-call');
|
|
1873
|
+
const stalePromptFinalizedToolCall = appendClaudeEventSpy.mock.calls.length > 0;
|
|
1874
|
+
pendingToolCalls.delete(sessionId);
|
|
1875
|
+
restartedPrompt.resolve({ stopReason: 'end_turn' });
|
|
1876
|
+
await expect(restartedSend).resolves.toBe('end_turn');
|
|
1877
|
+
expect(restartedToolCallSurvived).toBe(true);
|
|
1878
|
+
expect(stalePromptFinalizedToolCall).toBe(false);
|
|
1879
|
+
});
|
|
1787
1880
|
it('swallows prompt-turn completion callback failures', async () => {
|
|
1788
1881
|
vi.useFakeTimers();
|
|
1789
1882
|
try {
|
|
1790
1883
|
const onPromptTurnComplete = vi.fn().mockRejectedValue(new Error('dispatch failed'));
|
|
1791
|
-
|
|
1884
|
+
sessionPromptTurnCompletionService.setHandler(onPromptTurnComplete);
|
|
1792
1885
|
vi.mocked(acpRuntimeManager.sendPrompt).mockResolvedValue({
|
|
1793
1886
|
stopReason: 'end_turn',
|
|
1794
1887
|
});
|
|
@@ -1837,7 +1930,7 @@ describe('SessionService', () => {
|
|
|
1837
1930
|
});
|
|
1838
1931
|
mockCreatedAcpClient(acpHandle);
|
|
1839
1932
|
vi.mocked(acpRuntimeManager.sendPrompt).mockResolvedValue({ stopReason: 'end_turn' });
|
|
1840
|
-
await
|
|
1933
|
+
await sessionLifecycleService.startSession('session-1', { initialPrompt: 'go' });
|
|
1841
1934
|
expect(sessionRepository.getSessionById).toHaveBeenCalledTimes(1);
|
|
1842
1935
|
});
|
|
1843
1936
|
it('normalizes stale loading runtime to idle when no process is active', () => {
|
|
@@ -1847,7 +1940,7 @@ describe('SessionService', () => {
|
|
|
1847
1940
|
activity: 'IDLE',
|
|
1848
1941
|
updatedAt: new Date('2026-02-10T01:45:35.844Z').toISOString(),
|
|
1849
1942
|
});
|
|
1850
|
-
const runtime =
|
|
1943
|
+
const runtime = sessionLifecycleService.getRuntimeSnapshot('session-1');
|
|
1851
1944
|
expect(runtime).toMatchObject({
|
|
1852
1945
|
phase: 'idle',
|
|
1853
1946
|
processState: 'stopped',
|
|
@@ -1861,7 +1954,7 @@ describe('SessionService', () => {
|
|
|
1861
1954
|
activity: 'IDLE',
|
|
1862
1955
|
updatedAt: new Date().toISOString(),
|
|
1863
1956
|
});
|
|
1864
|
-
const runtime =
|
|
1957
|
+
const runtime = sessionLifecycleService.getRuntimeSnapshot('session-1');
|
|
1865
1958
|
expect(runtime).toMatchObject({
|
|
1866
1959
|
phase: 'loading',
|
|
1867
1960
|
processState: 'unknown',
|
|
@@ -1881,7 +1974,7 @@ describe('SessionService', () => {
|
|
|
1881
1974
|
configOptions: [],
|
|
1882
1975
|
}));
|
|
1883
1976
|
vi.mocked(acpRuntimeManager.isSessionWorking).mockReturnValue(false);
|
|
1884
|
-
const runtime =
|
|
1977
|
+
const runtime = sessionLifecycleService.getRuntimeSnapshot('session-1');
|
|
1885
1978
|
expect(runtime).toEqual({
|
|
1886
1979
|
phase: 'idle',
|
|
1887
1980
|
processState: 'alive',
|
|
@@ -1891,13 +1984,13 @@ describe('SessionService', () => {
|
|
|
1891
1984
|
});
|
|
1892
1985
|
it('stops all ACP clients during shutdown', async () => {
|
|
1893
1986
|
vi.mocked(acpRuntimeManager.stopAllClients).mockResolvedValue(undefined);
|
|
1894
|
-
await
|
|
1987
|
+
await sessionLifecycleService.stopAllClients(4321);
|
|
1895
1988
|
expect(acpRuntimeManager.stopAllClients).toHaveBeenCalledTimes(1);
|
|
1896
1989
|
expect(acpRuntimeManager.stopAllClients).toHaveBeenCalledWith(4321);
|
|
1897
1990
|
});
|
|
1898
1991
|
it('propagates ACP shutdown failure', async () => {
|
|
1899
1992
|
vi.mocked(acpRuntimeManager.stopAllClients).mockRejectedValueOnce(new Error('acp shutdown failed'));
|
|
1900
|
-
await expect(
|
|
1993
|
+
await expect(sessionLifecycleService.stopAllClients()).rejects.toThrow('acp shutdown failed');
|
|
1901
1994
|
expect(acpRuntimeManager.stopAllClients).toHaveBeenCalledWith(5000);
|
|
1902
1995
|
});
|
|
1903
1996
|
});
|