factory-factory 0.3.7 → 0.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{_basePickBy-BsuMuaCZ.js → _basePickBy-CoLLbaiQ.js} +1 -1
- package/dist/client/assets/{_baseUniq-BDd8f52s.js → _baseUniq-xRgxfXUW.js} +1 -1
- package/dist/client/assets/{arc-BWbaJQoA.js → arc-De4Ny3V9.js} +1 -1
- package/dist/client/assets/{architectureDiagram-VXUJARFQ-C_FQG3JS.js → architectureDiagram-VXUJARFQ-DM0j158z.js} +1 -1
- package/dist/client/assets/{blockDiagram-VD42YOAC-CLwvH-wA.js → blockDiagram-VD42YOAC-DKBZN-sz.js} +1 -1
- package/dist/client/assets/{c4Diagram-YG6GDRKO-Ba80_haP.js → c4Diagram-YG6GDRKO-CIA6AVRp.js} +1 -1
- package/dist/client/assets/channel-DW2o9xrZ.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-CSlDSMiy.js → chunk-4BX2VUAB-BrHsCtgI.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-Dm3keBAf.js → chunk-55IACEB6-DLwlJB2L.js} +1 -1
- package/dist/client/assets/{chunk-B4BG7PRW-BSrvNYuP.js → chunk-B4BG7PRW-cqTY9ldj.js} +1 -1
- package/dist/client/assets/{chunk-DI55MBZ5-DFQPoLQZ.js → chunk-DI55MBZ5-PAp7fYLU.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-C1KS438H.js → chunk-FMBD7UC4-CsvpScij.js} +1 -1
- package/dist/client/assets/{chunk-QN33PNHL-4rPPxHo4.js → chunk-QN33PNHL-DmkkCoc-.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-B_sF5IzV.js → chunk-QZHKN3VN-Ds5Tjlpo.js} +1 -1
- package/dist/client/assets/{chunk-TZMSLE5B-L-qbjoBp.js → chunk-TZMSLE5B-4Gu0uKkR.js} +1 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-CUeZuC6S.js +1 -0
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-CUeZuC6S.js +1 -0
- package/dist/client/assets/clone-Df9JDgIw.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-DB7lwAnl.js → cose-bilkent-S5V4N54A-CQJ_MgcD.js} +1 -1
- package/dist/client/assets/{dagre-6UL2VRFP-z2fl_1iD.js → dagre-6UL2VRFP-CfyncTju.js} +1 -1
- package/dist/client/assets/{diagram-PSM6KHXK-BL2iv8II.js → diagram-PSM6KHXK-BL2QA0bQ.js} +1 -1
- package/dist/client/assets/{diagram-QEK2KX5R-DgMZW0D1.js → diagram-QEK2KX5R-BDcBrJO4.js} +1 -1
- package/dist/client/assets/{diagram-S2PKOQOG-Ct2QBl2c.js → diagram-S2PKOQOG-BxofoMik.js} +1 -1
- package/dist/client/assets/{erDiagram-Q2GNP2WA-DII-pqkb.js → erDiagram-Q2GNP2WA-CDGe-bUA.js} +1 -1
- package/dist/client/assets/{flowDiagram-NV44I4VS-BV4CMZAZ.js → flowDiagram-NV44I4VS-CodDw20I.js} +1 -1
- package/dist/client/assets/{ganttDiagram-JELNMOA3-Dfj064tE.js → ganttDiagram-JELNMOA3-BHJlNcF5.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-Cg2b-j3t.js → gitGraphDiagram-V2S2FVAM-DsFPFnxn.js} +1 -1
- package/dist/client/assets/{graph-wzICjOO_.js → graph-DtyTGYVa.js} +1 -1
- package/dist/client/assets/index-BkwQogmx.css +1 -0
- package/dist/client/assets/index-CSanKe06.js +436 -0
- package/dist/client/assets/{infoDiagram-HS3SLOUP-D09mbfgG.js → infoDiagram-HS3SLOUP-CczckdeY.js} +1 -1
- package/dist/client/assets/{journeyDiagram-XKPGCS4Q-BebsQbuf.js → journeyDiagram-XKPGCS4Q-CIDlGmYi.js} +1 -1
- package/dist/client/assets/{kanban-definition-3W4ZIXB7-DOuawTNU.js → kanban-definition-3W4ZIXB7-Dvuu9eqr.js} +1 -1
- package/dist/client/assets/{layout-Bj6cMfF5.js → layout-Cth5sJm6.js} +1 -1
- package/dist/client/assets/{linear-B58HS9F4.js → linear-DRv-Y17x.js} +1 -1
- package/dist/client/assets/{mindmap-definition-VGOIOE7T-hSFgcTL2.js → mindmap-definition-VGOIOE7T-AXsc24V4.js} +1 -1
- package/dist/client/assets/{mobile-baseline-CmdjqYSm.js → mobile-baseline-DXBPdrir.js} +1 -1
- package/dist/client/assets/{pieDiagram-ADFJNKIX-D1vkoKs3.js → pieDiagram-ADFJNKIX-oIn8Bgi4.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-AYHSOK5B-pMQj9xcS.js → quadrantDiagram-AYHSOK5B-rGTqNh3q.js} +1 -1
- package/dist/client/assets/{requirementDiagram-UZGBJVZJ-DvRtxnIi.js → requirementDiagram-UZGBJVZJ-DgE2dYES.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-TZEHDZUN-BWoDxXkR.js → sankeyDiagram-TZEHDZUN-BWRLa217.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-WL72ISMW-Dz5i1ly3.js → sequenceDiagram-WL72ISMW-lYEkh9VX.js} +1 -1
- package/dist/client/assets/{stateDiagram-FKZM4ZOC-BFd_gXUo.js → stateDiagram-FKZM4ZOC-CV9VCuVK.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-DQ10FejB.js +1 -0
- package/dist/client/assets/{terminal-instance-BTIzq32H.js → terminal-instance-C3nwiweh.js} +1 -1
- package/dist/client/assets/{timeline-definition-IT6M3QCI-BFEIWW6m.js → timeline-definition-IT6M3QCI-Bzm_qoWF.js} +1 -1
- package/dist/client/assets/{treemap-GDKQZRPO-CC2Fh6RQ.js → treemap-GDKQZRPO-gouxKMUq.js} +1 -1
- package/dist/client/assets/{xychartDiagram-PRI3JC2R-DFygXQrm.js → xychartDiagram-PRI3JC2R-DqSTMw-l.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/prisma/generated/enums.d.ts +1 -0
- package/dist/prisma/generated/enums.d.ts.map +1 -1
- package/dist/prisma/generated/enums.js +1 -0
- package/dist/prisma/generated/enums.js.map +1 -1
- package/dist/prisma/generated/internal/class.js +4 -4
- package/dist/prisma/generated/internal/class.js.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespace.d.ts +1 -0
- package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespace.js +1 -0
- package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +1 -0
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.js +1 -0
- package/dist/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/prisma/generated/models/Workspace.d.ts +44 -1
- package/dist/prisma/generated/models/Workspace.d.ts.map +1 -1
- package/dist/src/backend/app-context.d.ts +2 -1
- package/dist/src/backend/app-context.d.ts.map +1 -1
- package/dist/src/backend/app-context.js +22 -5
- package/dist/src/backend/app-context.js.map +1 -1
- package/dist/src/backend/domains/github/github-cli/mappers.d.ts +1 -1
- package/dist/src/backend/domains/github/github-cli/mappers.d.ts.map +1 -1
- package/dist/src/backend/domains/github/github-cli/mappers.js +2 -37
- package/dist/src/backend/domains/github/github-cli/mappers.js.map +1 -1
- package/dist/src/backend/domains/github/github-cli.service.test.js +20 -0
- package/dist/src/backend/domains/github/github-cli.service.test.js.map +1 -1
- package/dist/src/backend/domains/linear/linear-state-sync.service.d.ts.map +1 -1
- package/dist/src/backend/domains/linear/linear-state-sync.service.js.map +1 -1
- package/dist/src/backend/domains/ratchet/bridges.d.ts +4 -0
- package/dist/src/backend/domains/ratchet/bridges.d.ts.map +1 -1
- package/dist/src/backend/domains/ratchet/ratchet-active-session.helpers.d.ts +15 -0
- package/dist/src/backend/domains/ratchet/ratchet-active-session.helpers.d.ts.map +1 -0
- package/dist/src/backend/domains/ratchet/ratchet-active-session.helpers.js +126 -0
- package/dist/src/backend/domains/ratchet/ratchet-active-session.helpers.js.map +1 -0
- package/dist/src/backend/domains/ratchet/ratchet-fixer-dispatch.helpers.d.ts +14 -0
- package/dist/src/backend/domains/ratchet/ratchet-fixer-dispatch.helpers.d.ts.map +1 -0
- package/dist/src/backend/domains/ratchet/ratchet-fixer-dispatch.helpers.js +55 -0
- package/dist/src/backend/domains/ratchet/ratchet-fixer-dispatch.helpers.js.map +1 -0
- package/dist/src/backend/domains/ratchet/ratchet-pr-state.helpers.d.ts +107 -0
- package/dist/src/backend/domains/ratchet/ratchet-pr-state.helpers.d.ts.map +1 -0
- package/dist/src/backend/domains/ratchet/ratchet-pr-state.helpers.js +246 -0
- package/dist/src/backend/domains/ratchet/ratchet-pr-state.helpers.js.map +1 -0
- package/dist/src/backend/domains/ratchet/ratchet-review-poll.helpers.d.ts +16 -0
- package/dist/src/backend/domains/ratchet/ratchet-review-poll.helpers.d.ts.map +1 -0
- package/dist/src/backend/domains/ratchet/ratchet-review-poll.helpers.js +52 -0
- package/dist/src/backend/domains/ratchet/ratchet-review-poll.helpers.js.map +1 -0
- package/dist/src/backend/domains/ratchet/ratchet.service.d.ts +6 -40
- package/dist/src/backend/domains/ratchet/ratchet.service.d.ts.map +1 -1
- package/dist/src/backend/domains/ratchet/ratchet.service.js +99 -426
- package/dist/src/backend/domains/ratchet/ratchet.service.js.map +1 -1
- package/dist/src/backend/domains/ratchet/ratchet.types.d.ts +86 -0
- package/dist/src/backend/domains/ratchet/ratchet.types.d.ts.map +1 -0
- package/dist/src/backend/domains/ratchet/ratchet.types.js +2 -0
- package/dist/src/backend/domains/ratchet/ratchet.types.js.map +1 -0
- package/dist/src/backend/domains/ratchet/reconciliation.service.d.ts.map +1 -1
- package/dist/src/backend/domains/ratchet/reconciliation.service.js +1 -2
- package/dist/src/backend/domains/ratchet/reconciliation.service.js.map +1 -1
- package/dist/src/backend/domains/ratchet/reconciliation.service.test.js +8 -10
- package/dist/src/backend/domains/ratchet/reconciliation.service.test.js.map +1 -1
- package/dist/src/backend/domains/run-script/index.d.ts +1 -1
- package/dist/src/backend/domains/run-script/index.d.ts.map +1 -1
- package/dist/src/backend/domains/run-script/index.js +1 -1
- package/dist/src/backend/domains/run-script/index.js.map +1 -1
- package/dist/src/backend/domains/run-script/run-script-domain-exports.test.js +5 -4
- package/dist/src/backend/domains/run-script/run-script-domain-exports.test.js.map +1 -1
- package/dist/src/backend/domains/run-script/run-script.service.d.ts +13 -1
- package/dist/src/backend/domains/run-script/run-script.service.d.ts.map +1 -1
- package/dist/src/backend/domains/run-script/run-script.service.js +175 -10
- package/dist/src/backend/domains/run-script/run-script.service.js.map +1 -1
- package/dist/src/backend/domains/run-script/run-script.service.test.js +204 -0
- package/dist/src/backend/domains/run-script/run-script.service.test.js.map +1 -1
- package/dist/src/backend/domains/session/acp/acp-event-translator.d.ts +13 -1
- package/dist/src/backend/domains/session/acp/acp-event-translator.d.ts.map +1 -1
- package/dist/src/backend/domains/session/acp/acp-event-translator.js +86 -1
- package/dist/src/backend/domains/session/acp/acp-event-translator.js.map +1 -1
- package/dist/src/backend/domains/session/acp/acp-event-translator.test.js +39 -0
- package/dist/src/backend/domains/session/acp/acp-event-translator.test.js.map +1 -1
- package/dist/src/backend/domains/session/acp/acp-runtime-manager.d.ts +5 -0
- package/dist/src/backend/domains/session/acp/acp-runtime-manager.d.ts.map +1 -1
- package/dist/src/backend/domains/session/acp/acp-runtime-manager.js +16 -13
- package/dist/src/backend/domains/session/acp/acp-runtime-manager.js.map +1 -1
- package/dist/src/backend/domains/session/acp/acp-runtime-manager.test.js +3 -12
- package/dist/src/backend/domains/session/acp/acp-runtime-manager.test.js.map +1 -1
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/acp-adapter-utils.d.ts +24 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/acp-adapter-utils.d.ts.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/acp-adapter-utils.js +79 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/acp-adapter-utils.js.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/adapter-state.d.ts +97 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/adapter-state.d.ts.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/adapter-state.js +2 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/adapter-state.js.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.d.ts +17 -39
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.d.ts.map +1 -1
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.js +109 -1694
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.js.map +1 -1
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.js +0 -191
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.js.map +1 -1
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-zod.d.ts +3 -3
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/command-metadata.d.ts +16 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/command-metadata.d.ts.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/command-metadata.js +292 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/command-metadata.js.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/command-metadata.test.d.ts +2 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/command-metadata.test.d.ts.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/command-metadata.test.js +56 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/command-metadata.test.js.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/protocol-permission-handler.d.ts +19 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/protocol-permission-handler.d.ts.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/protocol-permission-handler.js +369 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/protocol-permission-handler.js.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/protocol-permission-handler.test.d.ts +2 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/protocol-permission-handler.test.d.ts.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/protocol-permission-handler.test.js +91 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/protocol-permission-handler.test.js.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/retry-logic.d.ts +16 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/retry-logic.d.ts.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/retry-logic.js +53 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/retry-logic.js.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/session-config-resolver.d.ts +20 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/session-config-resolver.d.ts.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/session-config-resolver.js +341 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/session-config-resolver.js.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/session-negotiation.d.ts +41 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/session-negotiation.d.ts.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/session-negotiation.js +137 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/session-negotiation.js.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/session-state-container.d.ts +25 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/session-state-container.d.ts.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/session-state-container.js +47 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/session-state-container.js.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/shape-drift-reporter.d.ts +8 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/shape-drift-reporter.d.ts.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/shape-drift-reporter.js +37 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/shape-drift-reporter.js.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/stream-event-handler.d.ts +53 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/stream-event-handler.d.ts.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/stream-event-handler.js +419 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/stream-event-handler.js.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/stream-event-handler.test.d.ts +2 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/stream-event-handler.test.d.ts.map +1 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/stream-event-handler.test.js +95 -0
- package/dist/src/backend/domains/session/acp/codex-app-server-adapter/stream-event-handler.test.js.map +1 -0
- package/dist/src/backend/domains/session/acp/index.d.ts +1 -1
- package/dist/src/backend/domains/session/acp/index.d.ts.map +1 -1
- package/dist/src/backend/domains/session/acp/index.js +1 -1
- package/dist/src/backend/domains/session/acp/index.js.map +1 -1
- package/dist/src/backend/domains/session/bridges.d.ts +5 -0
- package/dist/src/backend/domains/session/bridges.d.ts.map +1 -1
- package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/load-session.handler.d.ts.map +1 -1
- package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/load-session.handler.js +2 -2
- package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/load-session.handler.js.map +1 -1
- package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/load-session.handler.test.js +1 -1
- package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/load-session.handler.test.js.map +1 -1
- package/dist/src/backend/domains/session/chat/chat-message-handlers.service.js +2 -2
- package/dist/src/backend/domains/session/chat/chat-message-handlers.service.js.map +1 -1
- package/dist/src/backend/domains/session/data/codex-session-history-loader.service.d.ts.map +1 -1
- package/dist/src/backend/domains/session/data/codex-session-history-loader.service.js +77 -24
- package/dist/src/backend/domains/session/data/codex-session-history-loader.service.js.map +1 -1
- package/dist/src/backend/domains/session/data/session-data.service.d.ts +2 -0
- package/dist/src/backend/domains/session/data/session-data.service.d.ts.map +1 -1
- package/dist/src/backend/domains/session/data/{claude-session-history-loader.service.d.ts → session-history-loader.service.d.ts} +1 -1
- package/dist/src/backend/domains/session/data/session-history-loader.service.d.ts.map +1 -0
- package/dist/src/backend/domains/session/data/{claude-session-history-loader.service.js → session-history-loader.service.js} +23 -9
- package/dist/src/backend/domains/session/data/session-history-loader.service.js.map +1 -0
- package/dist/src/backend/domains/session/data/session-history-loader.service.test.d.ts +2 -0
- package/dist/src/backend/domains/session/data/session-history-loader.service.test.d.ts.map +1 -0
- package/dist/src/backend/domains/session/data/{claude-session-history-loader.service.test.js → session-history-loader.service.test.js} +6 -3
- package/dist/src/backend/domains/session/data/session-history-loader.service.test.js.map +1 -0
- package/dist/src/backend/domains/session/index.d.ts +3 -1
- package/dist/src/backend/domains/session/index.d.ts.map +1 -1
- package/dist/src/backend/domains/session/index.js +2 -1
- package/dist/src/backend/domains/session/index.js.map +1 -1
- package/dist/src/backend/domains/session/interceptor.bridge.d.ts +8 -0
- package/dist/src/backend/domains/session/interceptor.bridge.d.ts.map +1 -0
- package/dist/src/backend/domains/session/interceptor.bridge.js +7 -0
- package/dist/src/backend/domains/session/interceptor.bridge.js.map +1 -0
- package/dist/src/backend/domains/session/lifecycle/acp-event-processor.d.ts +71 -0
- package/dist/src/backend/domains/session/lifecycle/acp-event-processor.d.ts.map +1 -0
- package/dist/src/backend/domains/session/lifecycle/acp-event-processor.js +404 -0
- package/dist/src/backend/domains/session/lifecycle/acp-event-processor.js.map +1 -0
- package/dist/src/backend/domains/session/lifecycle/session.config.service.d.ts +59 -0
- package/dist/src/backend/domains/session/lifecycle/session.config.service.d.ts.map +1 -0
- package/dist/src/backend/domains/session/lifecycle/session.config.service.js +635 -0
- package/dist/src/backend/domains/session/lifecycle/session.config.service.js.map +1 -0
- package/dist/src/backend/domains/session/lifecycle/session.config.service.test.d.ts +2 -0
- package/dist/src/backend/domains/session/lifecycle/session.config.service.test.d.ts.map +1 -0
- package/dist/src/backend/domains/session/lifecycle/session.config.service.test.js +552 -0
- package/dist/src/backend/domains/session/lifecycle/session.config.service.test.js.map +1 -0
- package/dist/src/backend/domains/session/lifecycle/session.permission.service.d.ts +17 -0
- package/dist/src/backend/domains/session/lifecycle/session.permission.service.d.ts.map +1 -0
- package/dist/src/backend/domains/session/lifecycle/session.permission.service.js +86 -0
- package/dist/src/backend/domains/session/lifecycle/session.permission.service.js.map +1 -0
- package/dist/src/backend/domains/session/lifecycle/session.permission.service.test.d.ts +2 -0
- package/dist/src/backend/domains/session/lifecycle/session.permission.service.test.d.ts.map +1 -0
- package/dist/src/backend/domains/session/lifecycle/session.permission.service.test.js +137 -0
- package/dist/src/backend/domains/session/lifecycle/session.permission.service.test.js.map +1 -0
- package/dist/src/backend/domains/session/lifecycle/session.repository.d.ts +0 -2
- package/dist/src/backend/domains/session/lifecycle/session.repository.d.ts.map +1 -1
- package/dist/src/backend/domains/session/lifecycle/session.repository.js +0 -3
- package/dist/src/backend/domains/session/lifecycle/session.repository.js.map +1 -1
- package/dist/src/backend/domains/session/lifecycle/session.repository.test.js +0 -1
- package/dist/src/backend/domains/session/lifecycle/session.repository.test.js.map +1 -1
- package/dist/src/backend/domains/session/lifecycle/session.service.d.ts +24 -56
- package/dist/src/backend/domains/session/lifecycle/session.service.d.ts.map +1 -1
- package/dist/src/backend/domains/session/lifecycle/session.service.js +140 -1083
- package/dist/src/backend/domains/session/lifecycle/session.service.js.map +1 -1
- package/dist/src/backend/domains/session/lifecycle/session.service.test.js +62 -689
- package/dist/src/backend/domains/session/lifecycle/session.service.test.js.map +1 -1
- package/dist/src/backend/domains/session/logging/acp-trace-logger.service.d.ts.map +1 -1
- package/dist/src/backend/domains/session/logging/acp-trace-logger.service.js +2 -13
- package/dist/src/backend/domains/session/logging/acp-trace-logger.service.js.map +1 -1
- package/dist/src/backend/domains/session/logging/acp-trace-logger.service.test.js +15 -3
- package/dist/src/backend/domains/session/logging/acp-trace-logger.service.test.js.map +1 -1
- package/dist/src/backend/domains/session/logging/session-file-logger.service.js +1 -1
- package/dist/src/backend/domains/session/logging/session-file-logger.service.js.map +1 -1
- package/dist/src/backend/domains/session/logging/session-file-logger.service.test.js +3 -0
- package/dist/src/backend/domains/session/logging/session-file-logger.service.test.js.map +1 -1
- package/dist/src/backend/domains/session/session-domain.service.d.ts +1 -2
- package/dist/src/backend/domains/session/session-domain.service.d.ts.map +1 -1
- package/dist/src/backend/domains/session/session-domain.service.js +21 -2
- package/dist/src/backend/domains/session/session-domain.service.js.map +1 -1
- package/dist/src/backend/domains/session/session-domain.service.test.js +34 -0
- package/dist/src/backend/domains/session/session-domain.service.test.js.map +1 -1
- package/dist/src/backend/domains/session/store/file-lock.service.d.ts.map +1 -1
- package/dist/src/backend/domains/session/store/file-lock.service.js +25 -6
- package/dist/src/backend/domains/session/store/file-lock.service.js.map +1 -1
- package/dist/src/backend/domains/session/store/file-lock.service.test.js +3 -0
- package/dist/src/backend/domains/session/store/file-lock.service.test.js.map +1 -1
- package/dist/src/backend/domains/session/zod-issue-summary.d.ts +3 -0
- package/dist/src/backend/domains/session/zod-issue-summary.d.ts.map +1 -0
- package/dist/src/backend/domains/session/zod-issue-summary.js +7 -0
- package/dist/src/backend/domains/session/zod-issue-summary.js.map +1 -0
- package/dist/src/backend/domains/workspace/index.d.ts +0 -1
- package/dist/src/backend/domains/workspace/index.d.ts.map +1 -1
- package/dist/src/backend/domains/workspace/index.js +0 -1
- package/dist/src/backend/domains/workspace/index.js.map +1 -1
- package/dist/src/backend/domains/workspace/lifecycle/creation.service.d.ts +7 -0
- package/dist/src/backend/domains/workspace/lifecycle/creation.service.d.ts.map +1 -1
- package/dist/src/backend/domains/workspace/lifecycle/creation.service.js +98 -85
- package/dist/src/backend/domains/workspace/lifecycle/creation.service.js.map +1 -1
- package/dist/src/backend/domains/workspace/lifecycle/creation.service.test.js +41 -1
- package/dist/src/backend/domains/workspace/lifecycle/creation.service.test.js.map +1 -1
- package/dist/src/backend/domains/workspace/lifecycle/data.service.d.ts +9 -1
- package/dist/src/backend/domains/workspace/lifecycle/data.service.d.ts.map +1 -1
- package/dist/src/backend/domains/workspace/lifecycle/data.service.js +2 -1
- package/dist/src/backend/domains/workspace/lifecycle/data.service.js.map +1 -1
- package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.d.ts +8 -0
- package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.d.ts.map +1 -1
- package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.js +47 -5
- package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.js.map +1 -1
- package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.test.js +117 -22
- package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.test.js.map +1 -1
- package/dist/src/backend/domains/workspace/query/project-management.service.d.ts +2 -0
- package/dist/src/backend/domains/workspace/query/project-management.service.d.ts.map +1 -1
- package/dist/src/backend/domains/workspace/query/workspace-query.service.d.ts +4 -1
- package/dist/src/backend/domains/workspace/query/workspace-query.service.d.ts.map +1 -1
- package/dist/src/backend/domains/workspace/query/workspace-query.service.js +51 -36
- package/dist/src/backend/domains/workspace/query/workspace-query.service.js.map +1 -1
- package/dist/src/backend/domains/workspace/query/workspace-query.service.test.js +141 -44
- package/dist/src/backend/domains/workspace/query/workspace-query.service.test.js.map +1 -1
- package/dist/src/backend/domains/workspace/state/flow-state.d.ts +2 -2
- package/dist/src/backend/domains/workspace/state/flow-state.d.ts.map +1 -1
- package/dist/src/backend/domains/workspace/state/flow-state.js.map +1 -1
- package/dist/src/backend/domains/workspace/state/init-policy.js +1 -1
- package/dist/src/backend/domains/workspace/state/init-policy.js.map +1 -1
- package/dist/src/backend/domains/workspace/state/kanban-state.d.ts +2 -1
- package/dist/src/backend/domains/workspace/state/kanban-state.d.ts.map +1 -1
- package/dist/src/backend/domains/workspace/state/kanban-state.js +9 -5
- package/dist/src/backend/domains/workspace/state/kanban-state.js.map +1 -1
- package/dist/src/backend/domains/workspace/state/kanban-state.test.js +23 -0
- package/dist/src/backend/domains/workspace/state/kanban-state.test.js.map +1 -1
- package/dist/src/backend/domains/workspace/worktree/worktree-lifecycle.service.d.ts +3 -6
- package/dist/src/backend/domains/workspace/worktree/worktree-lifecycle.service.d.ts.map +1 -1
- package/dist/src/backend/domains/workspace/worktree/worktree-lifecycle.service.js +7 -116
- package/dist/src/backend/domains/workspace/worktree/worktree-lifecycle.service.js.map +1 -1
- package/dist/src/backend/domains/workspace/worktree/worktree-lifecycle.service.test.js +38 -65
- package/dist/src/backend/domains/workspace/worktree/worktree-lifecycle.service.test.js.map +1 -1
- package/dist/src/backend/interceptors/conversation-rename.interceptor.d.ts.map +1 -1
- package/dist/src/backend/interceptors/conversation-rename.interceptor.js +22 -6
- package/dist/src/backend/interceptors/conversation-rename.interceptor.js.map +1 -1
- package/dist/src/backend/interceptors/conversation-rename.interceptor.test.js +25 -13
- package/dist/src/backend/interceptors/conversation-rename.interceptor.test.js.map +1 -1
- package/dist/src/backend/interceptors/index.d.ts +2 -0
- package/dist/src/backend/interceptors/index.d.ts.map +1 -1
- package/dist/src/backend/interceptors/index.js +6 -0
- package/dist/src/backend/interceptors/index.js.map +1 -1
- package/dist/src/backend/interceptors/pre-pr-rename.interceptor.d.ts.map +1 -1
- package/dist/src/backend/interceptors/pre-pr-rename.interceptor.js +8 -0
- package/dist/src/backend/interceptors/pre-pr-rename.interceptor.js.map +1 -1
- package/dist/src/backend/interceptors/pre-pr-rename.interceptor.test.js +5 -1
- package/dist/src/backend/interceptors/pre-pr-rename.interceptor.test.js.map +1 -1
- package/dist/src/backend/interceptors/pre-push-rename.interceptor.d.ts.map +1 -1
- package/dist/src/backend/interceptors/pre-push-rename.interceptor.js +3 -0
- package/dist/src/backend/interceptors/pre-push-rename.interceptor.js.map +1 -1
- package/dist/src/backend/interceptors/registry.d.ts +5 -0
- package/dist/src/backend/interceptors/registry.d.ts.map +1 -1
- package/dist/src/backend/interceptors/registry.js +51 -0
- package/dist/src/backend/interceptors/registry.js.map +1 -1
- package/dist/src/backend/interceptors/types.d.ts +2 -0
- package/dist/src/backend/interceptors/types.d.ts.map +1 -1
- package/dist/src/backend/lib/file-helpers.d.ts +2 -0
- package/dist/src/backend/lib/file-helpers.d.ts.map +1 -1
- package/dist/src/backend/lib/file-helpers.js +64 -1
- package/dist/src/backend/lib/file-helpers.js.map +1 -1
- package/dist/src/backend/lib/workspace-derived-state.d.ts +47 -0
- package/dist/src/backend/lib/workspace-derived-state.d.ts.map +1 -0
- package/dist/src/backend/lib/workspace-derived-state.js +31 -0
- package/dist/src/backend/lib/workspace-derived-state.js.map +1 -0
- package/dist/src/backend/lib/workspace-derived-state.test.d.ts +2 -0
- package/dist/src/backend/lib/workspace-derived-state.test.d.ts.map +1 -0
- package/dist/src/backend/lib/workspace-derived-state.test.js +66 -0
- package/dist/src/backend/lib/workspace-derived-state.test.js.map +1 -0
- package/dist/src/backend/middleware/cors.middleware.d.ts +1 -2
- package/dist/src/backend/middleware/cors.middleware.d.ts.map +1 -1
- package/dist/src/backend/middleware/cors.middleware.js +0 -2
- package/dist/src/backend/middleware/cors.middleware.js.map +1 -1
- package/dist/src/backend/middleware/index.d.ts +1 -1
- package/dist/src/backend/middleware/index.d.ts.map +1 -1
- package/dist/src/backend/middleware/index.js +1 -1
- package/dist/src/backend/middleware/index.js.map +1 -1
- package/dist/src/backend/orchestration/data-backup.service.test.js +1 -0
- package/dist/src/backend/orchestration/data-backup.service.test.js.map +1 -1
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts +26 -1
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts.map +1 -1
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.js +24 -1
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.js.map +1 -1
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js +19 -1
- package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js.map +1 -1
- package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts +8 -1
- package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts.map +1 -1
- package/dist/src/backend/orchestration/event-collector.orchestrator.js +41 -21
- package/dist/src/backend/orchestration/event-collector.orchestrator.js.map +1 -1
- package/dist/src/backend/orchestration/event-collector.orchestrator.test.js +19 -4
- package/dist/src/backend/orchestration/event-collector.orchestrator.test.js.map +1 -1
- package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts +6 -2
- package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts.map +1 -1
- package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js +8 -3
- package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js.map +1 -1
- package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts +19 -1
- package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts.map +1 -1
- package/dist/src/backend/orchestration/workspace-archive.orchestrator.js +21 -13
- package/dist/src/backend/orchestration/workspace-archive.orchestrator.js.map +1 -1
- package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js +103 -77
- package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js.map +1 -1
- package/dist/src/backend/orchestration/workspace-init-script-pipeline.d.ts +18 -0
- package/dist/src/backend/orchestration/workspace-init-script-pipeline.d.ts.map +1 -0
- package/dist/src/backend/orchestration/workspace-init-script-pipeline.js +75 -0
- package/dist/src/backend/orchestration/workspace-init-script-pipeline.js.map +1 -0
- package/dist/src/backend/orchestration/workspace-init.orchestrator.d.ts.map +1 -1
- package/dist/src/backend/orchestration/workspace-init.orchestrator.js +105 -106
- package/dist/src/backend/orchestration/workspace-init.orchestrator.js.map +1 -1
- package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js +137 -18
- package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js.map +1 -1
- package/dist/src/backend/resource_accessors/project.accessor.js +1 -1
- package/dist/src/backend/resource_accessors/project.accessor.js.map +1 -1
- package/dist/src/backend/resource_accessors/workspace.accessor.d.ts +1 -0
- package/dist/src/backend/resource_accessors/workspace.accessor.d.ts.map +1 -1
- package/dist/src/backend/resource_accessors/workspace.accessor.js.map +1 -1
- package/dist/src/backend/routers/websocket/index.d.ts +1 -0
- package/dist/src/backend/routers/websocket/index.d.ts.map +1 -1
- package/dist/src/backend/routers/websocket/index.js +1 -0
- package/dist/src/backend/routers/websocket/index.js.map +1 -1
- package/dist/src/backend/routers/websocket/post-run-logs.handler.d.ts +9 -0
- package/dist/src/backend/routers/websocket/post-run-logs.handler.d.ts.map +1 -0
- package/dist/src/backend/routers/websocket/post-run-logs.handler.js +52 -0
- package/dist/src/backend/routers/websocket/post-run-logs.handler.js.map +1 -0
- package/dist/src/backend/routers/websocket/snapshots.handler.d.ts.map +1 -1
- package/dist/src/backend/routers/websocket/snapshots.handler.js +17 -6
- package/dist/src/backend/routers/websocket/snapshots.handler.js.map +1 -1
- package/dist/src/backend/routers/websocket/snapshots.handler.test.js +40 -5
- package/dist/src/backend/routers/websocket/snapshots.handler.test.js.map +1 -1
- package/dist/src/backend/routers/websocket/websocket.integration.test.js +1 -0
- 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 +16 -6
- package/dist/src/backend/server.js.map +1 -1
- package/dist/src/backend/server.upgrade.test.js +4 -0
- package/dist/src/backend/server.upgrade.test.js.map +1 -1
- package/dist/src/backend/services/check-single-writer.test.d.ts +2 -0
- package/dist/src/backend/services/check-single-writer.test.d.ts.map +1 -0
- package/dist/src/backend/services/check-single-writer.test.js +132 -0
- package/dist/src/backend/services/check-single-writer.test.js.map +1 -0
- package/dist/src/backend/services/config.service.d.ts +14 -6
- package/dist/src/backend/services/config.service.d.ts.map +1 -1
- package/dist/src/backend/services/config.service.js +31 -9
- package/dist/src/backend/services/config.service.js.map +1 -1
- package/dist/src/backend/services/env-schemas.d.ts +7 -3
- package/dist/src/backend/services/env-schemas.d.ts.map +1 -1
- package/dist/src/backend/services/env-schemas.js +19 -3
- package/dist/src/backend/services/env-schemas.js.map +1 -1
- package/dist/src/backend/services/run-script-config-persistence.service.d.ts +37 -0
- package/dist/src/backend/services/run-script-config-persistence.service.d.ts.map +1 -0
- package/dist/src/backend/services/run-script-config-persistence.service.js +73 -0
- package/dist/src/backend/services/run-script-config-persistence.service.js.map +1 -0
- package/dist/src/backend/services/run-script-config-persistence.service.test.d.ts +2 -0
- package/dist/src/backend/services/run-script-config-persistence.service.test.d.ts.map +1 -0
- package/dist/src/backend/services/run-script-config-persistence.service.test.js +111 -0
- package/dist/src/backend/services/run-script-config-persistence.service.test.js.map +1 -0
- package/dist/src/backend/services/run-script-proxy.service.d.ts.map +1 -1
- package/dist/src/backend/services/run-script-proxy.service.js +2 -1
- package/dist/src/backend/services/run-script-proxy.service.js.map +1 -1
- package/dist/src/backend/services/run-script-proxy.service.test.js +4 -0
- package/dist/src/backend/services/run-script-proxy.service.test.js.map +1 -1
- package/dist/src/backend/services/workspace-snapshot-store.service.d.ts +5 -3
- package/dist/src/backend/services/workspace-snapshot-store.service.d.ts.map +1 -1
- package/dist/src/backend/services/workspace-snapshot-store.service.js +20 -15
- package/dist/src/backend/services/workspace-snapshot-store.service.js.map +1 -1
- package/dist/src/backend/services/workspace-snapshot-store.service.test.js +3 -0
- package/dist/src/backend/services/workspace-snapshot-store.service.test.js.map +1 -1
- package/dist/src/backend/trpc/admin.router.test.js +0 -2
- package/dist/src/backend/trpc/admin.router.test.js.map +1 -1
- package/dist/src/backend/trpc/admin.trpc.d.ts +2 -7
- package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/admin.trpc.js +2 -3
- package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
- package/dist/src/backend/trpc/index.d.ts +49 -14
- package/dist/src/backend/trpc/index.d.ts.map +1 -1
- package/dist/src/backend/trpc/project.trpc.d.ts +17 -3
- package/dist/src/backend/trpc/project.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/project.trpc.js +22 -0
- package/dist/src/backend/trpc/project.trpc.js.map +1 -1
- package/dist/src/backend/trpc/session.router.test.js +1 -0
- package/dist/src/backend/trpc/session.router.test.js.map +1 -1
- package/dist/src/backend/trpc/session.trpc.d.ts +4 -0
- package/dist/src/backend/trpc/session.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/session.trpc.js +2 -2
- package/dist/src/backend/trpc/session.trpc.js.map +1 -1
- package/dist/src/backend/trpc/workspace/files.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace/files.trpc.js +1 -64
- package/dist/src/backend/trpc/workspace/files.trpc.js.map +1 -1
- package/dist/src/backend/trpc/workspace/init.router.test.js +1 -1
- package/dist/src/backend/trpc/workspace/init.router.test.js.map +1 -1
- package/dist/src/backend/trpc/workspace/init.trpc.d.ts +1 -0
- package/dist/src/backend/trpc/workspace/init.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace/init.trpc.js +2 -3
- package/dist/src/backend/trpc/workspace/init.trpc.js.map +1 -1
- package/dist/src/backend/trpc/workspace/run-script.router.test.js +31 -4
- package/dist/src/backend/trpc/workspace/run-script.router.test.js.map +1 -1
- package/dist/src/backend/trpc/workspace/run-script.trpc.d.ts +2 -0
- package/dist/src/backend/trpc/workspace/run-script.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace/run-script.trpc.js +8 -8
- package/dist/src/backend/trpc/workspace/run-script.trpc.js.map +1 -1
- package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts +2 -0
- package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace.router.test.js +45 -1
- package/dist/src/backend/trpc/workspace.router.test.js.map +1 -1
- package/dist/src/backend/trpc/workspace.trpc.d.ts +26 -4
- package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace.trpc.js +25 -16
- package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
- package/dist/src/cli/index.js +17 -5
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/shared/core/ci-status.d.ts +6 -4
- package/dist/src/shared/core/ci-status.d.ts.map +1 -1
- package/dist/src/shared/core/ci-status.js +47 -13
- package/dist/src/shared/core/ci-status.js.map +1 -1
- package/dist/src/shared/core/enums.d.ts +1 -0
- package/dist/src/shared/core/enums.d.ts.map +1 -1
- package/dist/src/shared/core/enums.js +1 -0
- package/dist/src/shared/core/enums.js.map +1 -1
- package/dist/src/shared/core/index.d.ts +1 -1
- package/dist/src/shared/core/index.d.ts.map +1 -1
- package/dist/src/shared/core/index.js +1 -1
- package/dist/src/shared/core/index.js.map +1 -1
- package/dist/src/shared/schemas/export-data.schema.d.ts +2 -0
- package/dist/src/shared/schemas/export-data.schema.d.ts.map +1 -1
- package/dist/src/shared/schemas/factory-config.schema.d.ts +1 -0
- package/dist/src/shared/schemas/factory-config.schema.d.ts.map +1 -1
- package/dist/src/shared/schemas/factory-config.schema.js +1 -0
- package/dist/src/shared/schemas/factory-config.schema.js.map +1 -1
- package/dist/src/shared/schemas/issue-tracker-config.schema.d.ts +2 -2
- package/dist/src/shared/schemas/persisted-stores.schema.d.ts +0 -2
- package/dist/src/shared/schemas/persisted-stores.schema.d.ts.map +1 -1
- package/dist/src/shared/schemas/persisted-stores.schema.js +0 -1
- package/dist/src/shared/schemas/persisted-stores.schema.js.map +1 -1
- package/dist/src/shared/workspace-flow-state.d.ts +3 -0
- package/dist/src/shared/workspace-flow-state.d.ts.map +1 -0
- package/dist/src/shared/workspace-flow-state.js +2 -0
- package/dist/src/shared/workspace-flow-state.js.map +1 -0
- package/dist/tsconfig.backend.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/prisma/migrations/20260222120000_add_post_run_command/migration.sql +1 -0
- package/prisma/migrations/20260224150000_add_workspace_archiving_state/migration.sql +4 -0
- package/prisma/schema.prisma +2 -0
- package/dist/client/assets/channel-B2z94T-9.js +0 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-B2LoFG_o.js +0 -1
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-B2LoFG_o.js +0 -1
- package/dist/client/assets/clone-C8LA0zQQ.js +0 -1
- package/dist/client/assets/index-DvtmO7DV.css +0 -1
- package/dist/client/assets/index-EVrp_NXm.js +0 -429
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-CO6XGRkL.js +0 -1
- package/dist/src/backend/domains/session/data/claude-session-history-loader.service.d.ts.map +0 -1
- package/dist/src/backend/domains/session/data/claude-session-history-loader.service.js.map +0 -1
- package/dist/src/backend/domains/session/data/claude-session-history-loader.service.test.d.ts +0 -2
- package/dist/src/backend/domains/session/data/claude-session-history-loader.service.test.d.ts.map +0 -1
- package/dist/src/backend/domains/session/data/claude-session-history-loader.service.test.js.map +0 -1
- package/dist/src/backend/domains/workspace/lifecycle/archive-tracker.service.d.ts +0 -10
- package/dist/src/backend/domains/workspace/lifecycle/archive-tracker.service.d.ts.map +0 -1
- package/dist/src/backend/domains/workspace/lifecycle/archive-tracker.service.js +0 -24
- package/dist/src/backend/domains/workspace/lifecycle/archive-tracker.service.js.map +0 -1
- package/dist/src/backend/domains/workspace/lifecycle/archive-tracker.service.test.d.ts +0 -2
- package/dist/src/backend/domains/workspace/lifecycle/archive-tracker.service.test.d.ts.map +0 -1
- package/dist/src/backend/domains/workspace/lifecycle/archive-tracker.service.test.js +0 -17
- package/dist/src/backend/domains/workspace/lifecycle/archive-tracker.service.test.js.map +0 -1
|
@@ -4,14 +4,18 @@ import { workspaceAccessor } from '../../../backend/resource_accessors/workspace
|
|
|
4
4
|
import { FactoryConfigService } from '../../../backend/services/factory-config.service.js';
|
|
5
5
|
import { createLogger } from '../../../backend/services/logger.service.js';
|
|
6
6
|
import { PortAllocationService } from '../../../backend/services/port-allocation.service.js';
|
|
7
|
+
import { runScriptConfigPersistenceService, } from '../../../backend/services/run-script-config-persistence.service.js';
|
|
7
8
|
import { runScriptProxyService } from '../../../backend/services/run-script-proxy.service.js';
|
|
8
9
|
import { runScriptStateMachine } from './run-script-state-machine.service.js';
|
|
9
10
|
const logger = createLogger('run-script-service');
|
|
10
11
|
const MAX_OUTPUT_BUFFER_SIZE = 500 * 1024;
|
|
11
12
|
export class RunScriptService {
|
|
12
13
|
runningProcesses = new Map();
|
|
14
|
+
postRunProcesses = new Map();
|
|
13
15
|
outputBuffers = new Map();
|
|
14
16
|
outputListeners = new Map();
|
|
17
|
+
postRunOutputBuffers = new Map();
|
|
18
|
+
postRunOutputListeners = new Map();
|
|
15
19
|
isShuttingDown = false;
|
|
16
20
|
shutdownHandlersRegistered = false;
|
|
17
21
|
async startRunScript(workspaceId) {
|
|
@@ -20,12 +24,13 @@ export class RunScriptService {
|
|
|
20
24
|
if (!workspace) {
|
|
21
25
|
throw new Error('Workspace not found');
|
|
22
26
|
}
|
|
23
|
-
if (!workspace.runScriptCommand) {
|
|
24
|
-
throw new Error('No run script configured for this workspace');
|
|
25
|
-
}
|
|
26
27
|
if (!workspace.worktreePath) {
|
|
27
28
|
throw new Error('Workspace worktree not initialized');
|
|
28
29
|
}
|
|
30
|
+
const commands = await this.reconcileWorkspaceCommands(workspace);
|
|
31
|
+
if (!commands.runScriptCommand) {
|
|
32
|
+
throw new Error('No run script configured for this workspace');
|
|
33
|
+
}
|
|
29
34
|
const started = await runScriptStateMachine.start(workspaceId);
|
|
30
35
|
if (!started) {
|
|
31
36
|
const fresh = await workspaceAccessor.findById(workspaceId);
|
|
@@ -36,7 +41,7 @@ export class RunScriptService {
|
|
|
36
41
|
port: fresh?.runScriptPort ?? undefined,
|
|
37
42
|
};
|
|
38
43
|
}
|
|
39
|
-
let command =
|
|
44
|
+
let command = commands.runScriptCommand;
|
|
40
45
|
let port;
|
|
41
46
|
if (command.includes('{port}')) {
|
|
42
47
|
port = await PortAllocationService.findFreePort();
|
|
@@ -63,13 +68,20 @@ export class RunScriptService {
|
|
|
63
68
|
this.runningProcesses.set(workspaceId, childProcess);
|
|
64
69
|
const startMessage = `\x1b[36m[Factory Factory]\x1b[0m Starting ${command}\n\n`;
|
|
65
70
|
this.outputBuffers.set(workspaceId, startMessage);
|
|
71
|
+
this.postRunOutputBuffers.delete(workspaceId);
|
|
66
72
|
this.registerProcessHandlers(workspaceId, childProcess, pid);
|
|
67
|
-
return await this.transitionToRunning(workspaceId, childProcess, pid, port);
|
|
73
|
+
return await this.transitionToRunning(workspaceId, childProcess, pid, port, commands.runScriptPostRunCommand, workspace.worktreePath);
|
|
68
74
|
}
|
|
69
75
|
catch (error) {
|
|
70
76
|
return this.handleStartError(workspaceId, error);
|
|
71
77
|
}
|
|
72
78
|
}
|
|
79
|
+
reconcileWorkspaceCommands(workspace) {
|
|
80
|
+
return runScriptConfigPersistenceService.reconcileWorkspaceCommandCache({
|
|
81
|
+
workspace,
|
|
82
|
+
persistWorkspaceCommands: async () => Promise.resolve(),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
73
85
|
registerProcessHandlers(workspaceId, childProcess, pid) {
|
|
74
86
|
childProcess.on('exit', (code, signal) => {
|
|
75
87
|
void this.handleProcessExit(workspaceId, pid, code, signal).catch((error) => {
|
|
@@ -110,6 +122,7 @@ export class RunScriptService {
|
|
|
110
122
|
logger.info('Run script exited', { workspaceId, pid, code, signal });
|
|
111
123
|
this.runningProcesses.delete(workspaceId);
|
|
112
124
|
this.outputListeners.delete(workspaceId);
|
|
125
|
+
await this.killPostRunProcess(workspaceId);
|
|
113
126
|
await runScriptProxyService.stopTunnel(workspaceId);
|
|
114
127
|
try {
|
|
115
128
|
const ws = await workspaceAccessor.findById(workspaceId);
|
|
@@ -160,13 +173,32 @@ export class RunScriptService {
|
|
|
160
173
|
}
|
|
161
174
|
}
|
|
162
175
|
}
|
|
163
|
-
|
|
176
|
+
appendPostRunOutput(workspaceId, output) {
|
|
177
|
+
const currentBuffer = this.postRunOutputBuffers.get(workspaceId) ?? '';
|
|
178
|
+
let newBuffer = currentBuffer + output;
|
|
179
|
+
if (newBuffer.length > MAX_OUTPUT_BUFFER_SIZE) {
|
|
180
|
+
newBuffer = newBuffer.slice(-MAX_OUTPUT_BUFFER_SIZE);
|
|
181
|
+
}
|
|
182
|
+
this.postRunOutputBuffers.set(workspaceId, newBuffer);
|
|
183
|
+
const listeners = this.postRunOutputListeners.get(workspaceId);
|
|
184
|
+
if (listeners) {
|
|
185
|
+
for (const listener of listeners) {
|
|
186
|
+
listener(output);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
async transitionToRunning(workspaceId, childProcess, pid, port, runScriptPostRunCommand = null, worktreePath = null) {
|
|
164
191
|
try {
|
|
165
192
|
await runScriptStateMachine.markRunning(workspaceId, { pid, port });
|
|
166
193
|
let proxyUrl = null;
|
|
167
194
|
if (port) {
|
|
168
195
|
proxyUrl = await this.ensureTunnelForActiveProcess(workspaceId, childProcess, pid, port);
|
|
169
196
|
}
|
|
197
|
+
if (runScriptPostRunCommand && worktreePath) {
|
|
198
|
+
void this.spawnPostRunScript(workspaceId, runScriptPostRunCommand, worktreePath, port).catch((error) => {
|
|
199
|
+
logger.warn('Failed to start postRun script', { workspaceId, error });
|
|
200
|
+
});
|
|
201
|
+
}
|
|
170
202
|
return { success: true, port, pid, proxyUrl: proxyUrl ?? undefined };
|
|
171
203
|
}
|
|
172
204
|
catch (markRunningError) {
|
|
@@ -248,6 +280,10 @@ export class RunScriptService {
|
|
|
248
280
|
return { success: true };
|
|
249
281
|
}
|
|
250
282
|
if (status === 'STOPPING') {
|
|
283
|
+
if (childProcess || pid) {
|
|
284
|
+
await this.killProcessTree(workspaceId, childProcess, pid);
|
|
285
|
+
await this.killPostRunProcess(workspaceId);
|
|
286
|
+
}
|
|
251
287
|
await this.completeStoppingAfterStop(workspaceId);
|
|
252
288
|
await runScriptProxyService.stopTunnel(workspaceId);
|
|
253
289
|
return { success: true };
|
|
@@ -265,14 +301,26 @@ export class RunScriptService {
|
|
|
265
301
|
await runScriptProxyService.stopTunnel(workspaceId);
|
|
266
302
|
return { success: true };
|
|
267
303
|
}
|
|
268
|
-
|
|
304
|
+
let runScriptCleanupCommand = workspace.runScriptCleanupCommand;
|
|
305
|
+
try {
|
|
306
|
+
const commands = await this.reconcileWorkspaceCommands(workspace);
|
|
307
|
+
runScriptCleanupCommand = commands.runScriptCleanupCommand;
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
logger.warn('Failed to reconcile workspace commands during stop; using cached cleanup', {
|
|
311
|
+
workspaceId,
|
|
312
|
+
error,
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
if (runScriptCleanupCommand && workspace.worktreePath) {
|
|
269
316
|
await this.runCleanupScript(workspaceId, {
|
|
270
|
-
runScriptCleanupCommand
|
|
317
|
+
runScriptCleanupCommand,
|
|
271
318
|
worktreePath: workspace.worktreePath,
|
|
272
319
|
runScriptPort: workspace.runScriptPort,
|
|
273
320
|
});
|
|
274
321
|
}
|
|
275
322
|
await this.killProcessTree(workspaceId, childProcess, pid);
|
|
323
|
+
await this.killPostRunProcess(workspaceId);
|
|
276
324
|
await this.completeStoppingAfterStop(workspaceId);
|
|
277
325
|
await runScriptProxyService.stopTunnel(workspaceId);
|
|
278
326
|
return { success: true };
|
|
@@ -380,6 +428,80 @@ export class RunScriptService {
|
|
|
380
428
|
logger.error('Failed to run cleanup script', error, { workspaceId });
|
|
381
429
|
}
|
|
382
430
|
}
|
|
431
|
+
async spawnPostRunScript(workspaceId, runScriptPostRunCommand, worktreePath, port) {
|
|
432
|
+
await Promise.resolve();
|
|
433
|
+
let command = runScriptPostRunCommand;
|
|
434
|
+
if (port && command.includes('{port}')) {
|
|
435
|
+
command = FactoryConfigService.substitutePort(command, port);
|
|
436
|
+
}
|
|
437
|
+
logger.info('Starting postRun script', { workspaceId, command });
|
|
438
|
+
const postRunProcess = spawn('bash', ['-c', command], {
|
|
439
|
+
cwd: worktreePath,
|
|
440
|
+
detached: false,
|
|
441
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
442
|
+
});
|
|
443
|
+
if (!postRunProcess.pid) {
|
|
444
|
+
logger.warn('Failed to spawn postRun process', { workspaceId });
|
|
445
|
+
return;
|
|
446
|
+
}
|
|
447
|
+
this.postRunProcesses.set(workspaceId, postRunProcess);
|
|
448
|
+
const postRunStartMessage = `\x1b[36m[Factory Factory]\x1b[0m Starting postRun: ${command}\n`;
|
|
449
|
+
this.appendOutput(workspaceId, postRunStartMessage);
|
|
450
|
+
this.appendPostRunOutput(workspaceId, postRunStartMessage);
|
|
451
|
+
const handleOutput = (data) => {
|
|
452
|
+
this.appendPostRunOutput(workspaceId, data.toString());
|
|
453
|
+
};
|
|
454
|
+
postRunProcess.stdout?.on('data', handleOutput);
|
|
455
|
+
postRunProcess.stdout?.on('error', (error) => {
|
|
456
|
+
logger.warn('PostRun stdout stream error', { workspaceId, error });
|
|
457
|
+
});
|
|
458
|
+
postRunProcess.stderr?.on('data', handleOutput);
|
|
459
|
+
postRunProcess.stderr?.on('error', (error) => {
|
|
460
|
+
logger.warn('PostRun stderr stream error', { workspaceId, error });
|
|
461
|
+
});
|
|
462
|
+
postRunProcess.on('exit', (code, signal) => {
|
|
463
|
+
logger.info('PostRun script exited', {
|
|
464
|
+
workspaceId,
|
|
465
|
+
pid: postRunProcess.pid,
|
|
466
|
+
code,
|
|
467
|
+
signal,
|
|
468
|
+
});
|
|
469
|
+
this.postRunProcesses.delete(workspaceId);
|
|
470
|
+
});
|
|
471
|
+
postRunProcess.on('error', (error) => {
|
|
472
|
+
logger.error('PostRun spawn error', error, { workspaceId });
|
|
473
|
+
this.postRunProcesses.delete(workspaceId);
|
|
474
|
+
});
|
|
475
|
+
}
|
|
476
|
+
async killPostRunProcess(workspaceId) {
|
|
477
|
+
const postRunProcess = this.postRunProcesses.get(workspaceId);
|
|
478
|
+
if (!postRunProcess) {
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
481
|
+
const postRunPid = postRunProcess.pid;
|
|
482
|
+
if (!postRunPid) {
|
|
483
|
+
this.postRunProcesses.delete(workspaceId);
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
logger.info('Stopping postRun process', { workspaceId, pid: postRunPid });
|
|
487
|
+
await new Promise((resolve) => {
|
|
488
|
+
treeKill(postRunPid, 'SIGTERM', (err) => {
|
|
489
|
+
if (err) {
|
|
490
|
+
const errorCode = err.code;
|
|
491
|
+
const message = err.message;
|
|
492
|
+
if (errorCode !== 'ESRCH' && !message.includes('No such process')) {
|
|
493
|
+
logger.warn('Failed to tree-kill postRun process', {
|
|
494
|
+
workspaceId,
|
|
495
|
+
pid: postRunPid,
|
|
496
|
+
error: message,
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
this.postRunProcesses.delete(workspaceId);
|
|
501
|
+
resolve();
|
|
502
|
+
});
|
|
503
|
+
});
|
|
504
|
+
}
|
|
383
505
|
async killProcessTree(workspaceId, childProcess, pid) {
|
|
384
506
|
const targetPid = childProcess?.pid ?? pid;
|
|
385
507
|
if (!targetPid) {
|
|
@@ -430,6 +552,7 @@ export class RunScriptService {
|
|
|
430
552
|
startedAt: freshWorkspace.runScriptStartedAt,
|
|
431
553
|
hasRunScript: !!freshWorkspace.runScriptCommand,
|
|
432
554
|
runScriptCommand: freshWorkspace.runScriptCommand,
|
|
555
|
+
runScriptPostRunCommand: freshWorkspace.runScriptPostRunCommand,
|
|
433
556
|
runScriptCleanupCommand: freshWorkspace.runScriptCleanupCommand,
|
|
434
557
|
};
|
|
435
558
|
}
|
|
@@ -453,6 +576,26 @@ export class RunScriptService {
|
|
|
453
576
|
}
|
|
454
577
|
};
|
|
455
578
|
}
|
|
579
|
+
getPostRunOutputBuffer(workspaceId) {
|
|
580
|
+
return this.postRunOutputBuffers.get(workspaceId) ?? '';
|
|
581
|
+
}
|
|
582
|
+
subscribeToPostRunOutput(workspaceId, listener) {
|
|
583
|
+
let listeners = this.postRunOutputListeners.get(workspaceId);
|
|
584
|
+
if (!listeners) {
|
|
585
|
+
listeners = new Set();
|
|
586
|
+
this.postRunOutputListeners.set(workspaceId, listeners);
|
|
587
|
+
}
|
|
588
|
+
listeners.add(listener);
|
|
589
|
+
return () => {
|
|
590
|
+
const listeners = this.postRunOutputListeners.get(workspaceId);
|
|
591
|
+
if (listeners) {
|
|
592
|
+
listeners.delete(listener);
|
|
593
|
+
if (listeners.size === 0) {
|
|
594
|
+
this.postRunOutputListeners.delete(workspaceId);
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
};
|
|
598
|
+
}
|
|
456
599
|
async cleanup() {
|
|
457
600
|
logger.info('Cleaning up all running scripts', {
|
|
458
601
|
count: this.runningProcesses.size,
|
|
@@ -469,6 +612,7 @@ export class RunScriptService {
|
|
|
469
612
|
}
|
|
470
613
|
}));
|
|
471
614
|
this.runningProcesses.clear();
|
|
615
|
+
this.postRunProcesses.clear();
|
|
472
616
|
await runScriptProxyService.cleanup();
|
|
473
617
|
}
|
|
474
618
|
cleanupSync() {
|
|
@@ -487,9 +631,25 @@ export class RunScriptService {
|
|
|
487
631
|
}
|
|
488
632
|
}
|
|
489
633
|
this.runningProcesses.clear();
|
|
634
|
+
for (const [workspaceId, postRunProcess] of this.postRunProcesses.entries()) {
|
|
635
|
+
try {
|
|
636
|
+
if (!postRunProcess.killed) {
|
|
637
|
+
postRunProcess.kill('SIGKILL');
|
|
638
|
+
}
|
|
639
|
+
logger.info('Force killed postRun script on exit', {
|
|
640
|
+
workspaceId,
|
|
641
|
+
pid: postRunProcess.pid,
|
|
642
|
+
});
|
|
643
|
+
}
|
|
644
|
+
catch {
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
this.postRunProcesses.clear();
|
|
490
648
|
runScriptProxyService.cleanupSync();
|
|
491
649
|
this.outputBuffers.clear();
|
|
492
650
|
this.outputListeners.clear();
|
|
651
|
+
this.postRunOutputBuffers.clear();
|
|
652
|
+
this.postRunOutputListeners.clear();
|
|
493
653
|
}
|
|
494
654
|
registerShutdownHandlers() {
|
|
495
655
|
if (this.shutdownHandlersRegistered) {
|
|
@@ -519,6 +679,11 @@ export class RunScriptService {
|
|
|
519
679
|
});
|
|
520
680
|
}
|
|
521
681
|
}
|
|
522
|
-
export
|
|
523
|
-
|
|
682
|
+
export function createRunScriptService(options = {}) {
|
|
683
|
+
const service = new RunScriptService();
|
|
684
|
+
if (options.registerShutdownHandlers) {
|
|
685
|
+
service.registerShutdownHandlers();
|
|
686
|
+
}
|
|
687
|
+
return service;
|
|
688
|
+
}
|
|
524
689
|
//# sourceMappingURL=run-script.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-script.service.js","sourceRoot":"","sources":["../../../../../src/backend/domains/run-script/run-script.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run-script.service.js","sourceRoot":"","sources":["../../../../../src/backend/domains/run-script/run-script.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { FactoryConfigService } from '../../../backend/services/factory-config.service.js';
|
|
2
3
|
const mockTreeKill = vi.fn();
|
|
3
4
|
const mockFindById = vi.fn();
|
|
4
5
|
const mockBeginStopping = vi.fn();
|
|
@@ -7,11 +8,13 @@ const mockMarkCompleted = vi.fn();
|
|
|
7
8
|
const mockMarkFailed = vi.fn();
|
|
8
9
|
const mockMarkRunning = vi.fn();
|
|
9
10
|
const mockReset = vi.fn();
|
|
11
|
+
const mockVerifyRunning = vi.fn();
|
|
10
12
|
const mockEnsureTunnel = vi.fn();
|
|
11
13
|
const mockStopTunnel = vi.fn();
|
|
12
14
|
const mockGetTunnelUrl = vi.fn();
|
|
13
15
|
const mockCleanupTunnels = vi.fn();
|
|
14
16
|
const mockCleanupTunnelsSync = vi.fn();
|
|
17
|
+
const mockReconcileWorkspaceCommandCache = vi.fn();
|
|
15
18
|
vi.mock('tree-kill', () => ({
|
|
16
19
|
default: (...args) => mockTreeKill(...args),
|
|
17
20
|
}));
|
|
@@ -28,6 +31,7 @@ vi.mock('./run-script-state-machine.service', () => ({
|
|
|
28
31
|
markFailed: (...args) => mockMarkFailed(...args),
|
|
29
32
|
markRunning: (...args) => mockMarkRunning(...args),
|
|
30
33
|
reset: (...args) => mockReset(...args),
|
|
34
|
+
verifyRunning: (...args) => mockVerifyRunning(...args),
|
|
31
35
|
},
|
|
32
36
|
}));
|
|
33
37
|
vi.mock('@/backend/services/run-script-proxy.service', () => ({
|
|
@@ -47,6 +51,11 @@ vi.mock('@/backend/services/logger.service', () => ({
|
|
|
47
51
|
error: vi.fn(),
|
|
48
52
|
}),
|
|
49
53
|
}));
|
|
54
|
+
vi.mock('@/backend/services/run-script-config-persistence.service', () => ({
|
|
55
|
+
runScriptConfigPersistenceService: {
|
|
56
|
+
reconcileWorkspaceCommandCache: (...args) => mockReconcileWorkspaceCommandCache(...args),
|
|
57
|
+
},
|
|
58
|
+
}));
|
|
50
59
|
import { RunScriptService } from './run-script.service.js';
|
|
51
60
|
describe('RunScriptService.handleProcessExit', () => {
|
|
52
61
|
beforeEach(() => {
|
|
@@ -76,6 +85,14 @@ describe('RunScriptService.handleProcessExit', () => {
|
|
|
76
85
|
describe('RunScriptService.stopRunScript', () => {
|
|
77
86
|
beforeEach(() => {
|
|
78
87
|
vi.clearAllMocks();
|
|
88
|
+
mockReconcileWorkspaceCommandCache.mockImplementation((input) => {
|
|
89
|
+
const workspace = input.workspace;
|
|
90
|
+
return {
|
|
91
|
+
runScriptCommand: workspace.runScriptCommand,
|
|
92
|
+
runScriptPostRunCommand: workspace.runScriptPostRunCommand,
|
|
93
|
+
runScriptCleanupCommand: workspace.runScriptCleanupCommand,
|
|
94
|
+
};
|
|
95
|
+
});
|
|
79
96
|
mockTreeKill.mockImplementation((_pid, _signal, callback) => callback(null));
|
|
80
97
|
});
|
|
81
98
|
it('returns success when completeStopping races with exit handler', async () => {
|
|
@@ -125,6 +142,22 @@ describe('RunScriptService.stopRunScript', () => {
|
|
|
125
142
|
expect(mockBeginStopping).not.toHaveBeenCalled();
|
|
126
143
|
expect(mockCompleteStopping).toHaveBeenCalledWith('ws-1');
|
|
127
144
|
});
|
|
145
|
+
it('kills lingering process before completing STOPPING to IDLE', async () => {
|
|
146
|
+
mockFindById.mockResolvedValue({
|
|
147
|
+
id: 'ws-1',
|
|
148
|
+
runScriptStatus: 'STOPPING',
|
|
149
|
+
runScriptPid: 12_345,
|
|
150
|
+
});
|
|
151
|
+
mockCompleteStopping.mockResolvedValue(undefined);
|
|
152
|
+
const service = new RunScriptService();
|
|
153
|
+
service.runningProcesses.set('ws-1', { pid: 12_345 });
|
|
154
|
+
service.postRunProcesses.set('ws-1', { pid: 888 });
|
|
155
|
+
const result = await service.stopRunScript('ws-1');
|
|
156
|
+
expect(result).toEqual({ success: true });
|
|
157
|
+
expect(mockTreeKill).toHaveBeenCalledWith(12_345, 'SIGTERM', expect.any(Function));
|
|
158
|
+
expect(mockTreeKill).toHaveBeenCalledWith(888, 'SIGTERM', expect.any(Function));
|
|
159
|
+
expect(mockCompleteStopping).toHaveBeenCalledWith('ws-1');
|
|
160
|
+
});
|
|
128
161
|
it('handles COMPLETED state by resetting to IDLE', async () => {
|
|
129
162
|
mockFindById.mockResolvedValue({
|
|
130
163
|
id: 'ws-1',
|
|
@@ -197,6 +230,67 @@ describe('RunScriptService.stopRunScript', () => {
|
|
|
197
230
|
expect(result).toEqual({ success: true });
|
|
198
231
|
expect(service.runningProcesses.has('ws-1')).toBe(false);
|
|
199
232
|
});
|
|
233
|
+
it('uses reconciled cleanup command during stop flow', async () => {
|
|
234
|
+
mockFindById.mockResolvedValue({
|
|
235
|
+
id: 'ws-1',
|
|
236
|
+
runScriptStatus: 'RUNNING',
|
|
237
|
+
runScriptPid: 12_345,
|
|
238
|
+
runScriptCommand: 'pnpm dev',
|
|
239
|
+
runScriptPostRunCommand: null,
|
|
240
|
+
runScriptCleanupCommand: null,
|
|
241
|
+
worktreePath: '/tmp/ws-1',
|
|
242
|
+
runScriptPort: 3000,
|
|
243
|
+
});
|
|
244
|
+
mockBeginStopping.mockResolvedValue(undefined);
|
|
245
|
+
mockCompleteStopping.mockResolvedValue(undefined);
|
|
246
|
+
mockReconcileWorkspaceCommandCache.mockResolvedValue({
|
|
247
|
+
runScriptCommand: 'pnpm dev',
|
|
248
|
+
runScriptPostRunCommand: null,
|
|
249
|
+
runScriptCleanupCommand: 'echo cleanup {port}',
|
|
250
|
+
});
|
|
251
|
+
const service = new RunScriptService();
|
|
252
|
+
const runCleanupSpy = vi
|
|
253
|
+
.spyOn(service, 'runCleanupScript')
|
|
254
|
+
.mockResolvedValue(undefined);
|
|
255
|
+
service.runningProcesses.set('ws-1', { pid: 12_345 });
|
|
256
|
+
const result = await service.stopRunScript('ws-1');
|
|
257
|
+
expect(result).toEqual({ success: true });
|
|
258
|
+
expect(mockReconcileWorkspaceCommandCache).toHaveBeenCalledTimes(1);
|
|
259
|
+
expect(runCleanupSpy).toHaveBeenCalledWith('ws-1', {
|
|
260
|
+
runScriptCleanupCommand: 'echo cleanup {port}',
|
|
261
|
+
worktreePath: '/tmp/ws-1',
|
|
262
|
+
runScriptPort: 3000,
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
it('falls back to cached cleanup command when reconciliation fails during stop', async () => {
|
|
266
|
+
mockFindById.mockResolvedValue({
|
|
267
|
+
id: 'ws-1',
|
|
268
|
+
runScriptStatus: 'RUNNING',
|
|
269
|
+
runScriptPid: 12_345,
|
|
270
|
+
runScriptCommand: 'pnpm dev',
|
|
271
|
+
runScriptPostRunCommand: null,
|
|
272
|
+
runScriptCleanupCommand: 'echo cached cleanup {port}',
|
|
273
|
+
worktreePath: '/tmp/ws-1',
|
|
274
|
+
runScriptPort: 3000,
|
|
275
|
+
});
|
|
276
|
+
mockBeginStopping.mockResolvedValue(undefined);
|
|
277
|
+
mockCompleteStopping.mockResolvedValue(undefined);
|
|
278
|
+
mockReconcileWorkspaceCommandCache.mockRejectedValue(new Error('Invalid factory-factory.json'));
|
|
279
|
+
const service = new RunScriptService();
|
|
280
|
+
const runCleanupSpy = vi
|
|
281
|
+
.spyOn(service, 'runCleanupScript')
|
|
282
|
+
.mockResolvedValue(undefined);
|
|
283
|
+
service.runningProcesses.set('ws-1', { pid: 12_345 });
|
|
284
|
+
const result = await service.stopRunScript('ws-1');
|
|
285
|
+
expect(result).toEqual({ success: true });
|
|
286
|
+
expect(runCleanupSpy).toHaveBeenCalledWith('ws-1', {
|
|
287
|
+
runScriptCleanupCommand: 'echo cached cleanup {port}',
|
|
288
|
+
worktreePath: '/tmp/ws-1',
|
|
289
|
+
runScriptPort: 3000,
|
|
290
|
+
});
|
|
291
|
+
expect(mockTreeKill).toHaveBeenCalledWith(12_345, 'SIGTERM', expect.any(Function));
|
|
292
|
+
expect(mockCompleteStopping).toHaveBeenCalledWith('ws-1');
|
|
293
|
+
});
|
|
200
294
|
});
|
|
201
295
|
describe('RunScriptService.handleProcessExit edge cases', () => {
|
|
202
296
|
beforeEach(() => {
|
|
@@ -278,6 +372,32 @@ describe('RunScriptService.transitionToRunning', () => {
|
|
|
278
372
|
expect(result).toMatchObject({ success: true, port: 5173, pid: 12_345 });
|
|
279
373
|
expect(result.proxyUrl).toBeUndefined();
|
|
280
374
|
});
|
|
375
|
+
it('starts postRun using reconciled command arguments', async () => {
|
|
376
|
+
mockMarkRunning.mockResolvedValue(undefined);
|
|
377
|
+
const service = new RunScriptService();
|
|
378
|
+
const spawnPostRunSpy = vi.spyOn(service, 'spawnPostRunScript').mockResolvedValue(undefined);
|
|
379
|
+
const childProcess = { pid: 12_345, exitCode: null };
|
|
380
|
+
service.runningProcesses.set('ws-1', childProcess);
|
|
381
|
+
const result = await service.transitionToRunning('ws-1', childProcess, 12_345, undefined, 'echo post-run', '/tmp/ws-1');
|
|
382
|
+
expect(result).toMatchObject({ success: true, pid: 12_345 });
|
|
383
|
+
expect(spawnPostRunSpy).toHaveBeenCalledWith('ws-1', 'echo post-run', '/tmp/ws-1', undefined);
|
|
384
|
+
});
|
|
385
|
+
it('keeps transition successful when postRun setup throws synchronously', async () => {
|
|
386
|
+
mockMarkRunning.mockResolvedValue(undefined);
|
|
387
|
+
mockEnsureTunnel.mockResolvedValue(null);
|
|
388
|
+
const substitutePortSpy = vi
|
|
389
|
+
.spyOn(FactoryConfigService, 'substitutePort')
|
|
390
|
+
.mockImplementation(() => {
|
|
391
|
+
throw new Error('bad postRun command');
|
|
392
|
+
});
|
|
393
|
+
const service = new RunScriptService();
|
|
394
|
+
const childProcess = { pid: 12_345, exitCode: null };
|
|
395
|
+
service.runningProcesses.set('ws-1', childProcess);
|
|
396
|
+
const result = await service.transitionToRunning('ws-1', childProcess, 12_345, 5173, 'echo {port}', '/tmp/ws-1');
|
|
397
|
+
expect(result).toMatchObject({ success: true, port: 5173, pid: 12_345 });
|
|
398
|
+
expect(mockFindById).not.toHaveBeenCalled();
|
|
399
|
+
substitutePortSpy.mockRestore();
|
|
400
|
+
});
|
|
281
401
|
});
|
|
282
402
|
describe('RunScriptService.appendOutput', () => {
|
|
283
403
|
it('truncates output buffer when exceeding MAX_OUTPUT_BUFFER_SIZE', () => {
|
|
@@ -343,5 +463,89 @@ describe('RunScriptService.cleanupSync', () => {
|
|
|
343
463
|
service.cleanupSync();
|
|
344
464
|
expect(mockProcess.kill).not.toHaveBeenCalled();
|
|
345
465
|
});
|
|
466
|
+
it('force kills postRun processes on sync cleanup', () => {
|
|
467
|
+
const service = new RunScriptService();
|
|
468
|
+
const mockPostRun = { killed: false, kill: vi.fn(), pid: 888 };
|
|
469
|
+
service.postRunProcesses.set('ws-1', mockPostRun);
|
|
470
|
+
service.cleanupSync();
|
|
471
|
+
expect(mockPostRun.kill).toHaveBeenCalledWith('SIGKILL');
|
|
472
|
+
expect(service.postRunProcesses.size).toBe(0);
|
|
473
|
+
});
|
|
474
|
+
it('skips already-killed postRun processes', () => {
|
|
475
|
+
const service = new RunScriptService();
|
|
476
|
+
const mockPostRun = { killed: true, kill: vi.fn(), pid: 888 };
|
|
477
|
+
service.postRunProcesses.set('ws-1', mockPostRun);
|
|
478
|
+
service.cleanupSync();
|
|
479
|
+
expect(mockPostRun.kill).not.toHaveBeenCalled();
|
|
480
|
+
expect(service.postRunProcesses.size).toBe(0);
|
|
481
|
+
});
|
|
482
|
+
});
|
|
483
|
+
describe('RunScriptService.killPostRunProcess', () => {
|
|
484
|
+
beforeEach(() => {
|
|
485
|
+
vi.clearAllMocks();
|
|
486
|
+
});
|
|
487
|
+
it('does nothing when no postRun process exists', async () => {
|
|
488
|
+
const service = new RunScriptService();
|
|
489
|
+
await service.killPostRunProcess('ws-1');
|
|
490
|
+
expect(mockTreeKill).not.toHaveBeenCalled();
|
|
491
|
+
});
|
|
492
|
+
it('cleans up postRun process without pid', async () => {
|
|
493
|
+
const service = new RunScriptService();
|
|
494
|
+
service.postRunProcesses.set('ws-1', { pid: 0 });
|
|
495
|
+
await service.killPostRunProcess('ws-1');
|
|
496
|
+
expect(mockTreeKill).not.toHaveBeenCalled();
|
|
497
|
+
expect(service.postRunProcesses.has('ws-1')).toBe(false);
|
|
498
|
+
});
|
|
499
|
+
it('tree-kills postRun process by pid', async () => {
|
|
500
|
+
mockTreeKill.mockImplementation((_pid, _signal, callback) => callback(null));
|
|
501
|
+
const service = new RunScriptService();
|
|
502
|
+
service.postRunProcesses.set('ws-1', { pid: 888 });
|
|
503
|
+
await service.killPostRunProcess('ws-1');
|
|
504
|
+
expect(mockTreeKill).toHaveBeenCalledWith(888, 'SIGTERM', expect.any(Function));
|
|
505
|
+
expect(service.postRunProcesses.has('ws-1')).toBe(false);
|
|
506
|
+
});
|
|
507
|
+
it('handles ESRCH error gracefully when postRun process already exited', async () => {
|
|
508
|
+
const esrchError = new Error('No such process');
|
|
509
|
+
esrchError.code = 'ESRCH';
|
|
510
|
+
mockTreeKill.mockImplementation((_pid, _signal, callback) => callback(esrchError));
|
|
511
|
+
const service = new RunScriptService();
|
|
512
|
+
service.postRunProcesses.set('ws-1', { pid: 888 });
|
|
513
|
+
await service.killPostRunProcess('ws-1');
|
|
514
|
+
expect(service.postRunProcesses.has('ws-1')).toBe(false);
|
|
515
|
+
});
|
|
516
|
+
});
|
|
517
|
+
describe('RunScriptService.getRunScriptStatus', () => {
|
|
518
|
+
beforeEach(() => {
|
|
519
|
+
vi.clearAllMocks();
|
|
520
|
+
});
|
|
521
|
+
it('returns status with postRun command', async () => {
|
|
522
|
+
mockVerifyRunning.mockResolvedValue('RUNNING');
|
|
523
|
+
mockFindById.mockResolvedValueOnce({ id: 'ws-1' }).mockResolvedValueOnce({
|
|
524
|
+
id: 'ws-1',
|
|
525
|
+
runScriptPid: 12_345,
|
|
526
|
+
runScriptPort: 3000,
|
|
527
|
+
runScriptStartedAt: new Date(),
|
|
528
|
+
runScriptCommand: 'pnpm dev',
|
|
529
|
+
runScriptPostRunCommand: 'cloudflared tunnel --url http://localhost:3000',
|
|
530
|
+
runScriptCleanupCommand: null,
|
|
531
|
+
});
|
|
532
|
+
mockGetTunnelUrl.mockReturnValue('https://example.trycloudflare.com');
|
|
533
|
+
const service = new RunScriptService();
|
|
534
|
+
const result = await service.getRunScriptStatus('ws-1');
|
|
535
|
+
expect(result.status).toBe('RUNNING');
|
|
536
|
+
expect(result.runScriptPostRunCommand).toBe('cloudflared tunnel --url http://localhost:3000');
|
|
537
|
+
expect(result.hasRunScript).toBe(true);
|
|
538
|
+
});
|
|
539
|
+
it('throws when workspace not found', async () => {
|
|
540
|
+
mockFindById.mockResolvedValue(null);
|
|
541
|
+
const service = new RunScriptService();
|
|
542
|
+
await expect(service.getRunScriptStatus('ws-missing')).rejects.toThrow('Workspace not found');
|
|
543
|
+
});
|
|
544
|
+
it('throws when workspace disappears after verify', async () => {
|
|
545
|
+
mockVerifyRunning.mockResolvedValue('IDLE');
|
|
546
|
+
mockFindById.mockResolvedValueOnce({ id: 'ws-1' }).mockResolvedValueOnce(null);
|
|
547
|
+
const service = new RunScriptService();
|
|
548
|
+
await expect(service.getRunScriptStatus('ws-1')).rejects.toThrow('Workspace not found');
|
|
549
|
+
});
|
|
346
550
|
});
|
|
347
551
|
//# sourceMappingURL=run-script.service.test.js.map
|