factory-factory 0.3.3 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/dist/client/assets/{_basePickBy-0_GqMukI.js → _basePickBy-kS1IrKFQ.js} +1 -1
  2. package/dist/client/assets/{_baseUniq-BkDCIs_N.js → _baseUniq-DisTPj-I.js} +1 -1
  3. package/dist/client/assets/{arc-BYBi6T58.js → arc-CWpVTRns.js} +1 -1
  4. package/dist/client/assets/{architectureDiagram-VXUJARFQ-utRnH0EI.js → architectureDiagram-VXUJARFQ-Dp1AYPMt.js} +1 -1
  5. package/dist/client/assets/{blockDiagram-VD42YOAC-ke2uPDpN.js → blockDiagram-VD42YOAC-DXpmez0y.js} +1 -1
  6. package/dist/client/assets/{c4Diagram-YG6GDRKO-DAt0t6eK.js → c4Diagram-YG6GDRKO-C6sDxR49.js} +1 -1
  7. package/dist/client/assets/channel-D5BCeybW.js +1 -0
  8. package/dist/client/assets/{chunk-4BX2VUAB-D1vNGBo6.js → chunk-4BX2VUAB-CQxlRbYu.js} +1 -1
  9. package/dist/client/assets/{chunk-55IACEB6-BDwpH7UI.js → chunk-55IACEB6-DxubFDep.js} +1 -1
  10. package/dist/client/assets/{chunk-B4BG7PRW-DAM5zmSO.js → chunk-B4BG7PRW-BtTQ0im9.js} +1 -1
  11. package/dist/client/assets/{chunk-DI55MBZ5-CgmMeVp9.js → chunk-DI55MBZ5-C2tNYDZj.js} +1 -1
  12. package/dist/client/assets/{chunk-FMBD7UC4-nijXNm9V.js → chunk-FMBD7UC4-kRQRN6vP.js} +1 -1
  13. package/dist/client/assets/{chunk-QN33PNHL-GM5iQLPS.js → chunk-QN33PNHL-DP72lCp6.js} +1 -1
  14. package/dist/client/assets/{chunk-QZHKN3VN-CbOwrlLz.js → chunk-QZHKN3VN-BfxMFZDN.js} +1 -1
  15. package/dist/client/assets/{chunk-TZMSLE5B-D0eFaU6T.js → chunk-TZMSLE5B-G3wPktxK.js} +1 -1
  16. package/dist/client/assets/classDiagram-2ON5EDUG-BUS1JDwr.js +1 -0
  17. package/dist/client/assets/classDiagram-v2-WZHVMYZB-BUS1JDwr.js +1 -0
  18. package/dist/client/assets/clone-C5xhPZw8.js +1 -0
  19. package/dist/client/assets/{cose-bilkent-S5V4N54A-BAHIgVQk.js → cose-bilkent-S5V4N54A-QPsUxyAe.js} +1 -1
  20. package/dist/client/assets/{dagre-6UL2VRFP-CNvHuwOI.js → dagre-6UL2VRFP-BAmsmcnI.js} +1 -1
  21. package/dist/client/assets/{diagram-PSM6KHXK-726LBpxe.js → diagram-PSM6KHXK-QA-3O0wr.js} +1 -1
  22. package/dist/client/assets/{diagram-QEK2KX5R-DQsnVN2A.js → diagram-QEK2KX5R-VZkRJLXU.js} +1 -1
  23. package/dist/client/assets/{diagram-S2PKOQOG-D_T0ifdw.js → diagram-S2PKOQOG-DwLmogjW.js} +1 -1
  24. package/dist/client/assets/{erDiagram-Q2GNP2WA-BmVDGu8M.js → erDiagram-Q2GNP2WA-DMKIVzp4.js} +1 -1
  25. package/dist/client/assets/{flowDiagram-NV44I4VS-Z65JFfSc.js → flowDiagram-NV44I4VS-op3xA_nS.js} +1 -1
  26. package/dist/client/assets/{ganttDiagram-JELNMOA3-BZ3yfDKP.js → ganttDiagram-JELNMOA3-nrnzVCJK.js} +1 -1
  27. package/dist/client/assets/{gitGraphDiagram-NY62KEGX-faBi9oTt.js → gitGraphDiagram-NY62KEGX-CK2ytvyZ.js} +1 -1
  28. package/dist/client/assets/{graph-DMDSMqaB.js → graph-D_lEcPMk.js} +1 -1
  29. package/dist/client/assets/{index-D9ddlgEa.js → index-C2qHRaOH.js} +233 -231
  30. package/dist/client/assets/index-D5ywoSOH.css +1 -0
  31. package/dist/client/assets/{infoDiagram-WHAUD3N6-CJU-Jxtx.js → infoDiagram-WHAUD3N6-DO5X8HkW.js} +1 -1
  32. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-CIFki-iq.js → journeyDiagram-XKPGCS4Q-Bnhe4U1x.js} +1 -1
  33. package/dist/client/assets/{kanban-definition-3W4ZIXB7-DDuM9VeF.js → kanban-definition-3W4ZIXB7-DpTaTXko.js} +1 -1
  34. package/dist/client/assets/{layout-CnYzyA25.js → layout-HT5qr--Q.js} +1 -1
  35. package/dist/client/assets/{linear-BoRrKhGP.js → linear-CDmQ8HG8.js} +1 -1
  36. package/dist/client/assets/{mindmap-definition-VGOIOE7T-QhVqNLyz.js → mindmap-definition-VGOIOE7T-zDr7s4o2.js} +1 -1
  37. package/dist/client/assets/{pieDiagram-ADFJNKIX-BkK0cKA8.js → pieDiagram-ADFJNKIX-BVBJCvYL.js} +1 -1
  38. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-CeFigc3p.js → quadrantDiagram-AYHSOK5B-DzdJzkAJ.js} +1 -1
  39. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-KowHp3BW.js → requirementDiagram-UZGBJVZJ-ChrLzx8S.js} +1 -1
  40. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-D7CevVS2.js → sankeyDiagram-TZEHDZUN-GIzxIQQB.js} +1 -1
  41. package/dist/client/assets/{sequenceDiagram-WL72ISMW-3mHDMyaP.js → sequenceDiagram-WL72ISMW-BHxEpSCU.js} +1 -1
  42. package/dist/client/assets/{stateDiagram-FKZM4ZOC-h-G1xS2P.js → stateDiagram-FKZM4ZOC-ByvdYZKl.js} +1 -1
  43. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-ynQtAOKH.js +1 -0
  44. package/dist/client/assets/{terminal-instance-BbEVZkgm.js → terminal-instance-xdECz0dx.js} +1 -1
  45. package/dist/client/assets/{timeline-definition-IT6M3QCI-Cc2H2fvU.js → timeline-definition-IT6M3QCI-BcCmIxix.js} +1 -1
  46. package/dist/client/assets/{treemap-KMMF4GRG-BAjv-2_R.js → treemap-KMMF4GRG-CVpLLzhu.js} +1 -1
  47. package/dist/client/assets/{xychartDiagram-PRI3JC2R-CqgFJhi0.js → xychartDiagram-PRI3JC2R-DrgKBPUM.js} +1 -1
  48. package/dist/client/index.html +2 -2
  49. package/dist/prisma/generated/commonInputTypes.d.ts +0 -30
  50. package/dist/prisma/generated/commonInputTypes.d.ts.map +1 -1
  51. package/dist/prisma/generated/internal/class.js +2 -2
  52. package/dist/prisma/generated/internal/class.js.map +1 -1
  53. package/dist/prisma/generated/internal/prismaNamespace.d.ts +0 -2
  54. package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
  55. package/dist/prisma/generated/internal/prismaNamespace.js +0 -2
  56. package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
  57. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +0 -2
  58. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  59. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js +0 -2
  60. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  61. package/dist/prisma/generated/models/Workspace.d.ts +1 -90
  62. package/dist/prisma/generated/models/Workspace.d.ts.map +1 -1
  63. package/dist/src/backend/domains/github/bridges.d.ts +0 -15
  64. package/dist/src/backend/domains/github/bridges.d.ts.map +1 -1
  65. package/dist/src/backend/domains/github/github-domain-exports.test.js +1 -7
  66. package/dist/src/backend/domains/github/github-domain-exports.test.js.map +1 -1
  67. package/dist/src/backend/domains/github/index.d.ts +1 -3
  68. package/dist/src/backend/domains/github/index.d.ts.map +1 -1
  69. package/dist/src/backend/domains/github/index.js +0 -2
  70. package/dist/src/backend/domains/github/index.js.map +1 -1
  71. package/dist/src/backend/domains/ratchet/bridges.d.ts +1 -0
  72. package/dist/src/backend/domains/ratchet/bridges.d.ts.map +1 -1
  73. package/dist/src/backend/domains/ratchet/fixer-session.service.d.ts.map +1 -1
  74. package/dist/src/backend/domains/ratchet/fixer-session.service.js +2 -0
  75. package/dist/src/backend/domains/ratchet/fixer-session.service.js.map +1 -1
  76. package/dist/src/backend/domains/ratchet/fixer-session.service.test.js +1 -0
  77. package/dist/src/backend/domains/ratchet/fixer-session.service.test.js.map +1 -1
  78. package/dist/src/backend/domains/ratchet/index.d.ts +0 -3
  79. package/dist/src/backend/domains/ratchet/index.d.ts.map +1 -1
  80. package/dist/src/backend/domains/ratchet/index.js +0 -2
  81. package/dist/src/backend/domains/ratchet/index.js.map +1 -1
  82. package/dist/src/backend/domains/ratchet/ratchet-domain-exports.test.js +1 -7
  83. package/dist/src/backend/domains/ratchet/ratchet-domain-exports.test.js.map +1 -1
  84. package/dist/src/backend/domains/session/acp/acp-event-translator.d.ts +3 -0
  85. package/dist/src/backend/domains/session/acp/acp-event-translator.d.ts.map +1 -1
  86. package/dist/src/backend/domains/session/acp/acp-event-translator.js +47 -56
  87. package/dist/src/backend/domains/session/acp/acp-event-translator.js.map +1 -1
  88. package/dist/src/backend/domains/session/acp/acp-permission-bridge.d.ts +3 -1
  89. package/dist/src/backend/domains/session/acp/acp-permission-bridge.d.ts.map +1 -1
  90. package/dist/src/backend/domains/session/acp/acp-permission-bridge.js +10 -1
  91. package/dist/src/backend/domains/session/acp/acp-permission-bridge.js.map +1 -1
  92. package/dist/src/backend/domains/session/acp/acp-permission-bridge.test.js +24 -0
  93. package/dist/src/backend/domains/session/acp/acp-permission-bridge.test.js.map +1 -1
  94. package/dist/src/backend/domains/session/acp/acp-runtime-manager.d.ts.map +1 -1
  95. package/dist/src/backend/domains/session/acp/acp-runtime-manager.js +176 -18
  96. package/dist/src/backend/domains/session/acp/acp-runtime-manager.js.map +1 -1
  97. package/dist/src/backend/domains/session/acp/acp-runtime-manager.manual.integration.test.d.ts +2 -0
  98. package/dist/src/backend/domains/session/acp/acp-runtime-manager.manual.integration.test.d.ts.map +1 -0
  99. package/dist/src/backend/domains/session/acp/acp-runtime-manager.manual.integration.test.js +40 -0
  100. package/dist/src/backend/domains/session/acp/acp-runtime-manager.manual.integration.test.js.map +1 -0
  101. package/dist/src/backend/domains/session/acp/acp-runtime-manager.test.js +88 -1
  102. package/dist/src/backend/domains/session/acp/acp-runtime-manager.test.js.map +1 -1
  103. package/dist/src/backend/domains/session/acp/acp-session-negotiation.integration.test.js +13 -1
  104. package/dist/src/backend/domains/session/acp/acp-session-negotiation.integration.test.js.map +1 -1
  105. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.d.ts +85 -0
  106. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.d.ts.map +1 -0
  107. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.js +1794 -0
  108. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.js.map +1 -0
  109. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.manual.integration.test.d.ts +2 -0
  110. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.manual.integration.test.d.ts.map +1 -0
  111. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.manual.integration.test.js +92 -0
  112. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.manual.integration.test.js.map +1 -0
  113. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.d.ts +2 -0
  114. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.d.ts.map +1 -0
  115. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.js +1407 -0
  116. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.js.map +1 -0
  117. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-rpc-client.d.ts +46 -0
  118. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-rpc-client.d.ts.map +1 -0
  119. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-rpc-client.js +238 -0
  120. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-rpc-client.js.map +1 -0
  121. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-rpc-client.test.d.ts +2 -0
  122. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-rpc-client.test.d.ts.map +1 -0
  123. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-rpc-client.test.js +140 -0
  124. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-rpc-client.test.js.map +1 -0
  125. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-schema-snapshot.test.d.ts +2 -0
  126. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-schema-snapshot.test.d.ts.map +1 -0
  127. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-schema-snapshot.test.js +35 -0
  128. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-schema-snapshot.test.js.map +1 -0
  129. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-zod.d.ts +314 -0
  130. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-zod.d.ts.map +1 -0
  131. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-zod.js +308 -0
  132. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-zod.js.map +1 -0
  133. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-zod.test.d.ts +2 -0
  134. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-zod.test.d.ts.map +1 -0
  135. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-zod.test.js +147 -0
  136. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/codex-zod.test.js.map +1 -0
  137. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/index.d.ts +2 -0
  138. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/index.d.ts.map +1 -0
  139. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/index.js +2 -0
  140. package/dist/src/backend/domains/session/acp/codex-app-server-adapter/index.js.map +1 -0
  141. package/dist/src/backend/domains/session/acp/codex-cli-import-resolution.integration.test.d.ts +2 -0
  142. package/dist/src/backend/domains/session/acp/codex-cli-import-resolution.integration.test.d.ts.map +1 -0
  143. package/dist/src/backend/domains/session/acp/codex-cli-import-resolution.integration.test.js +64 -0
  144. package/dist/src/backend/domains/session/acp/codex-cli-import-resolution.integration.test.js.map +1 -0
  145. package/dist/src/backend/domains/session/acp/index.d.ts +1 -0
  146. package/dist/src/backend/domains/session/acp/index.d.ts.map +1 -1
  147. package/dist/src/backend/domains/session/acp/index.js +1 -0
  148. package/dist/src/backend/domains/session/acp/index.js.map +1 -1
  149. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/permission-response.handler.d.ts.map +1 -1
  150. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/permission-response.handler.js +3 -2
  151. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/permission-response.handler.js.map +1 -1
  152. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.d.ts.map +1 -1
  153. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.js +13 -11
  154. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.js.map +1 -1
  155. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.test.js +9 -0
  156. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.test.js.map +1 -1
  157. package/dist/src/backend/domains/session/data/claude-session-history-loader.service.d.ts.map +1 -1
  158. package/dist/src/backend/domains/session/data/claude-session-history-loader.service.js +17 -29
  159. package/dist/src/backend/domains/session/data/claude-session-history-loader.service.js.map +1 -1
  160. package/dist/src/backend/domains/session/data/codex-session-history-loader.service.d.ts +1 -0
  161. package/dist/src/backend/domains/session/data/codex-session-history-loader.service.d.ts.map +1 -1
  162. package/dist/src/backend/domains/session/data/codex-session-history-loader.service.js +152 -74
  163. package/dist/src/backend/domains/session/data/codex-session-history-loader.service.js.map +1 -1
  164. package/dist/src/backend/domains/session/data/codex-session-history-loader.service.test.js +96 -0
  165. package/dist/src/backend/domains/session/data/codex-session-history-loader.service.test.js.map +1 -1
  166. package/dist/src/backend/domains/session/data/session-data.service.d.ts +6 -9
  167. package/dist/src/backend/domains/session/data/session-data.service.d.ts.map +1 -1
  168. package/dist/src/backend/domains/session/data/session-data.service.js +3 -0
  169. package/dist/src/backend/domains/session/data/session-data.service.js.map +1 -1
  170. package/dist/src/backend/domains/session/data/session-history-jsonl-reader.d.ts +6 -0
  171. package/dist/src/backend/domains/session/data/session-history-jsonl-reader.d.ts.map +1 -0
  172. package/dist/src/backend/domains/session/data/session-history-jsonl-reader.js +25 -0
  173. package/dist/src/backend/domains/session/data/session-history-jsonl-reader.js.map +1 -0
  174. package/dist/src/backend/domains/session/data/session-provider-resolver.service.test.js +0 -2
  175. package/dist/src/backend/domains/session/data/session-provider-resolver.service.test.js.map +1 -1
  176. package/dist/src/backend/domains/session/index.d.ts +1 -1
  177. package/dist/src/backend/domains/session/index.d.ts.map +1 -1
  178. package/dist/src/backend/domains/session/index.js +1 -1
  179. package/dist/src/backend/domains/session/index.js.map +1 -1
  180. package/dist/src/backend/domains/session/lifecycle/session.repository.d.ts +2 -2
  181. package/dist/src/backend/domains/session/lifecycle/session.repository.d.ts.map +1 -1
  182. package/dist/src/backend/domains/session/lifecycle/session.repository.js.map +1 -1
  183. package/dist/src/backend/domains/session/lifecycle/session.service.d.ts +22 -3
  184. package/dist/src/backend/domains/session/lifecycle/session.service.d.ts.map +1 -1
  185. package/dist/src/backend/domains/session/lifecycle/session.service.js +279 -50
  186. package/dist/src/backend/domains/session/lifecycle/session.service.js.map +1 -1
  187. package/dist/src/backend/domains/session/lifecycle/session.service.test.js +447 -2
  188. package/dist/src/backend/domains/session/lifecycle/session.service.test.js.map +1 -1
  189. package/dist/src/backend/domains/session/store/session-replay-builder.d.ts.map +1 -1
  190. package/dist/src/backend/domains/session/store/session-replay-builder.js +2 -1
  191. package/dist/src/backend/domains/session/store/session-replay-builder.js.map +1 -1
  192. package/dist/src/backend/domains/session/store/session-replay-builder.test.js +26 -0
  193. package/dist/src/backend/domains/session/store/session-replay-builder.test.js.map +1 -1
  194. package/dist/src/backend/domains/workspace/bridges.d.ts +1 -0
  195. package/dist/src/backend/domains/workspace/bridges.d.ts.map +1 -1
  196. package/dist/src/backend/domains/workspace/index.d.ts +1 -0
  197. package/dist/src/backend/domains/workspace/index.d.ts.map +1 -1
  198. package/dist/src/backend/domains/workspace/index.js +1 -0
  199. package/dist/src/backend/domains/workspace/index.js.map +1 -1
  200. package/dist/src/backend/domains/workspace/lifecycle/creation.service.test.js +0 -2
  201. package/dist/src/backend/domains/workspace/lifecycle/creation.service.test.js.map +1 -1
  202. package/dist/src/backend/domains/workspace/lifecycle/data.service.d.ts +10 -24
  203. package/dist/src/backend/domains/workspace/lifecycle/data.service.d.ts.map +1 -1
  204. package/dist/src/backend/domains/workspace/query/project-management.service.d.ts +2 -6
  205. package/dist/src/backend/domains/workspace/query/project-management.service.d.ts.map +1 -1
  206. package/dist/src/backend/domains/workspace/query/workspace-query.service.d.ts +82 -6
  207. package/dist/src/backend/domains/workspace/query/workspace-query.service.d.ts.map +1 -1
  208. package/dist/src/backend/domains/workspace/query/workspace-query.service.js +15 -15
  209. package/dist/src/backend/domains/workspace/query/workspace-query.service.js.map +1 -1
  210. package/dist/src/backend/domains/workspace/query/workspace-query.service.test.d.ts +2 -0
  211. package/dist/src/backend/domains/workspace/query/workspace-query.service.test.d.ts.map +1 -0
  212. package/dist/src/backend/domains/workspace/query/workspace-query.service.test.js +165 -0
  213. package/dist/src/backend/domains/workspace/query/workspace-query.service.test.js.map +1 -0
  214. package/dist/src/backend/domains/workspace/state/pending-request-type.d.ts +6 -0
  215. package/dist/src/backend/domains/workspace/state/pending-request-type.d.ts.map +1 -0
  216. package/dist/src/backend/domains/workspace/state/pending-request-type.js +27 -0
  217. package/dist/src/backend/domains/workspace/state/pending-request-type.js.map +1 -0
  218. package/dist/src/backend/domains/workspace/state/pending-request-type.test.d.ts +2 -0
  219. package/dist/src/backend/domains/workspace/state/pending-request-type.test.d.ts.map +1 -0
  220. package/dist/src/backend/domains/workspace/state/pending-request-type.test.js +44 -0
  221. package/dist/src/backend/domains/workspace/state/pending-request-type.test.js.map +1 -0
  222. package/dist/src/backend/domains/workspace/worktree/worktree-init.test.js +9 -2
  223. package/dist/src/backend/domains/workspace/worktree/worktree-init.test.js.map +1 -1
  224. package/dist/src/backend/interceptors/pr-detection.interceptor.d.ts.map +1 -1
  225. package/dist/src/backend/interceptors/pr-detection.interceptor.js +53 -8
  226. package/dist/src/backend/interceptors/pr-detection.interceptor.js.map +1 -1
  227. package/dist/src/backend/interceptors/pr-detection.interceptor.test.d.ts +2 -0
  228. package/dist/src/backend/interceptors/pr-detection.interceptor.test.d.ts.map +1 -0
  229. package/dist/src/backend/interceptors/pr-detection.interceptor.test.js +106 -0
  230. package/dist/src/backend/interceptors/pr-detection.interceptor.test.js.map +1 -0
  231. package/dist/src/backend/lib/session-model.js +1 -1
  232. package/dist/src/backend/lib/session-model.js.map +1 -1
  233. package/dist/src/backend/lib/session-model.test.js +1 -1
  234. package/dist/src/backend/lib/session-model.test.js.map +1 -1
  235. package/dist/src/backend/orchestration/data-backup.service.d.ts.map +1 -1
  236. package/dist/src/backend/orchestration/data-backup.service.js +0 -4
  237. package/dist/src/backend/orchestration/data-backup.service.js.map +1 -1
  238. package/dist/src/backend/orchestration/data-backup.service.test.js +0 -4
  239. package/dist/src/backend/orchestration/data-backup.service.test.js.map +1 -1
  240. package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts.map +1 -1
  241. package/dist/src/backend/orchestration/domain-bridges.orchestrator.js +3 -19
  242. package/dist/src/backend/orchestration/domain-bridges.orchestrator.js.map +1 -1
  243. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js +13 -27
  244. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js.map +1 -1
  245. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts +1 -0
  246. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts.map +1 -1
  247. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js +1 -15
  248. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js.map +1 -1
  249. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js +97 -0
  250. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js.map +1 -1
  251. package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts +1 -3
  252. package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts.map +1 -1
  253. package/dist/src/backend/orchestration/workspace-init.orchestrator.d.ts.map +1 -1
  254. package/dist/src/backend/orchestration/workspace-init.orchestrator.js +4 -1
  255. package/dist/src/backend/orchestration/workspace-init.orchestrator.js.map +1 -1
  256. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js +1 -0
  257. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js.map +1 -1
  258. package/dist/src/backend/resource_accessors/agent-session.accessor.d.ts +1 -0
  259. package/dist/src/backend/resource_accessors/agent-session.accessor.d.ts.map +1 -1
  260. package/dist/src/backend/resource_accessors/agent-session.accessor.js +10 -0
  261. package/dist/src/backend/resource_accessors/agent-session.accessor.js.map +1 -1
  262. package/dist/src/backend/resource_accessors/agent-session.accessor.test.d.ts +2 -0
  263. package/dist/src/backend/resource_accessors/agent-session.accessor.test.d.ts.map +1 -0
  264. package/dist/src/backend/resource_accessors/agent-session.accessor.test.js +148 -0
  265. package/dist/src/backend/resource_accessors/agent-session.accessor.test.js.map +1 -0
  266. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts +0 -15
  267. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts.map +1 -1
  268. package/dist/src/backend/resource_accessors/workspace.accessor.js +0 -33
  269. package/dist/src/backend/resource_accessors/workspace.accessor.js.map +1 -1
  270. package/dist/src/backend/schemas/tool-inputs.schema.d.ts +2 -0
  271. package/dist/src/backend/schemas/tool-inputs.schema.d.ts.map +1 -1
  272. package/dist/src/backend/schemas/tool-inputs.schema.js +1 -0
  273. package/dist/src/backend/schemas/tool-inputs.schema.js.map +1 -1
  274. package/dist/src/backend/services/constants.d.ts +0 -5
  275. package/dist/src/backend/services/constants.d.ts.map +1 -1
  276. package/dist/src/backend/services/constants.js +0 -5
  277. package/dist/src/backend/services/constants.js.map +1 -1
  278. package/dist/src/backend/services/workspace-snapshot-store.service.d.ts +2 -2
  279. package/dist/src/backend/services/workspace-snapshot-store.service.d.ts.map +1 -1
  280. package/dist/src/backend/trpc/admin-active-processes.d.ts +55 -0
  281. package/dist/src/backend/trpc/admin-active-processes.d.ts.map +1 -0
  282. package/dist/src/backend/trpc/admin-active-processes.js +103 -0
  283. package/dist/src/backend/trpc/admin-active-processes.js.map +1 -0
  284. package/dist/src/backend/trpc/admin-active-processes.test.d.ts +2 -0
  285. package/dist/src/backend/trpc/admin-active-processes.test.d.ts.map +1 -0
  286. package/dist/src/backend/trpc/admin-active-processes.test.js +105 -0
  287. package/dist/src/backend/trpc/admin-active-processes.test.js.map +1 -0
  288. package/dist/src/backend/trpc/admin.trpc.d.ts +5 -32
  289. package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
  290. package/dist/src/backend/trpc/admin.trpc.js +29 -128
  291. package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
  292. package/dist/src/backend/trpc/decision-log.trpc.d.ts +3 -3
  293. package/dist/src/backend/trpc/index.d.ts +136 -104
  294. package/dist/src/backend/trpc/index.d.ts.map +1 -1
  295. package/dist/src/backend/trpc/log-file-reader.d.ts +26 -0
  296. package/dist/src/backend/trpc/log-file-reader.d.ts.map +1 -0
  297. package/dist/src/backend/trpc/log-file-reader.js +160 -0
  298. package/dist/src/backend/trpc/log-file-reader.js.map +1 -0
  299. package/dist/src/backend/trpc/log-file-reader.test.d.ts +2 -0
  300. package/dist/src/backend/trpc/log-file-reader.test.d.ts.map +1 -0
  301. package/dist/src/backend/trpc/log-file-reader.test.js +162 -0
  302. package/dist/src/backend/trpc/log-file-reader.test.js.map +1 -0
  303. package/dist/src/backend/trpc/project.trpc.d.ts +2 -6
  304. package/dist/src/backend/trpc/project.trpc.d.ts.map +1 -1
  305. package/dist/src/backend/trpc/session.trpc.d.ts +23 -31
  306. package/dist/src/backend/trpc/session.trpc.d.ts.map +1 -1
  307. package/dist/src/backend/trpc/workspace/init.trpc.d.ts +4 -6
  308. package/dist/src/backend/trpc/workspace/init.trpc.d.ts.map +1 -1
  309. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts +5 -9
  310. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts.map +1 -1
  311. package/dist/src/backend/trpc/workspace.trpc.d.ts +103 -39
  312. package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
  313. package/dist/src/backend/trpc/workspace.trpc.js +8 -0
  314. package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
  315. package/dist/src/cli/index.js +7 -2
  316. package/dist/src/cli/index.js.map +1 -1
  317. package/dist/src/shared/acp-protocol/protocol/interaction.d.ts +2 -0
  318. package/dist/src/shared/acp-protocol/protocol/interaction.d.ts.map +1 -1
  319. package/dist/src/shared/acp-protocol/protocol/websocket.d.ts +1 -0
  320. package/dist/src/shared/acp-protocol/protocol/websocket.d.ts.map +1 -1
  321. package/dist/src/shared/acp-protocol/protocol/websocket.js.map +1 -1
  322. package/dist/src/shared/pending-request-types.d.ts +4 -0
  323. package/dist/src/shared/pending-request-types.d.ts.map +1 -1
  324. package/dist/src/shared/pending-request-types.js +10 -0
  325. package/dist/src/shared/pending-request-types.js.map +1 -1
  326. package/dist/src/shared/schemas/export-data.schema.d.ts +0 -18
  327. package/dist/src/shared/schemas/export-data.schema.d.ts.map +1 -1
  328. package/dist/src/shared/schemas/export-data.schema.js +0 -2
  329. package/dist/src/shared/schemas/export-data.schema.js.map +1 -1
  330. package/dist/src/shared/websocket/chat-message.schema.d.ts +1 -0
  331. package/dist/src/shared/websocket/chat-message.schema.d.ts.map +1 -1
  332. package/dist/src/shared/websocket/chat-message.schema.js +1 -0
  333. package/dist/src/shared/websocket/chat-message.schema.js.map +1 -1
  334. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  335. package/package.json +4 -2
  336. package/prisma/migrations/20260214232046_remove_ratchet_last_modified/migration.sql +68 -0
  337. package/prisma/schema.prisma +0 -2
  338. package/dist/client/assets/channel-BA4I5_zc.js +0 -1
  339. package/dist/client/assets/classDiagram-2ON5EDUG-DHiY0J8v.js +0 -1
  340. package/dist/client/assets/classDiagram-v2-WZHVMYZB-DHiY0J8v.js +0 -1
  341. package/dist/client/assets/clone-C7QOkM1k.js +0 -1
  342. package/dist/client/assets/index-D_8rf7lP.css +0 -1
  343. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BGGNxhyR.js +0 -1
  344. package/dist/src/backend/domains/github/pr-review-fixer.service.d.ts +0 -63
  345. package/dist/src/backend/domains/github/pr-review-fixer.service.d.ts.map +0 -1
  346. package/dist/src/backend/domains/github/pr-review-fixer.service.js +0 -141
  347. package/dist/src/backend/domains/github/pr-review-fixer.service.js.map +0 -1
  348. package/dist/src/backend/domains/github/pr-review-fixer.service.test.d.ts +0 -2
  349. package/dist/src/backend/domains/github/pr-review-fixer.service.test.d.ts.map +0 -1
  350. package/dist/src/backend/domains/github/pr-review-fixer.service.test.js +0 -28
  351. package/dist/src/backend/domains/github/pr-review-fixer.service.test.js.map +0 -1
  352. package/dist/src/backend/domains/github/pr-review-monitor.service.d.ts +0 -19
  353. package/dist/src/backend/domains/github/pr-review-monitor.service.d.ts.map +0 -1
  354. package/dist/src/backend/domains/github/pr-review-monitor.service.js +0 -215
  355. package/dist/src/backend/domains/github/pr-review-monitor.service.js.map +0 -1
  356. package/dist/src/backend/domains/ratchet/ci-fixer.service.d.ts +0 -47
  357. package/dist/src/backend/domains/ratchet/ci-fixer.service.d.ts.map +0 -1
  358. package/dist/src/backend/domains/ratchet/ci-fixer.service.js +0 -95
  359. package/dist/src/backend/domains/ratchet/ci-fixer.service.js.map +0 -1
  360. package/dist/src/backend/domains/ratchet/ci-fixer.service.test.d.ts +0 -2
  361. package/dist/src/backend/domains/ratchet/ci-fixer.service.test.d.ts.map +0 -1
  362. package/dist/src/backend/domains/ratchet/ci-fixer.service.test.js +0 -100
  363. package/dist/src/backend/domains/ratchet/ci-fixer.service.test.js.map +0 -1
  364. package/dist/src/backend/domains/ratchet/ci-monitor.service.d.ts +0 -36
  365. package/dist/src/backend/domains/ratchet/ci-monitor.service.d.ts.map +0 -1
  366. package/dist/src/backend/domains/ratchet/ci-monitor.service.js +0 -278
  367. package/dist/src/backend/domains/ratchet/ci-monitor.service.js.map +0 -1
  368. package/dist/src/backend/services/fixer-workflow.service.d.ts +0 -83
  369. package/dist/src/backend/services/fixer-workflow.service.d.ts.map +0 -1
  370. package/dist/src/backend/services/fixer-workflow.service.js +0 -77
  371. package/dist/src/backend/services/fixer-workflow.service.js.map +0 -1
  372. package/dist/src/backend/services/fixer-workflow.service.test.d.ts +0 -2
  373. package/dist/src/backend/services/fixer-workflow.service.test.d.ts.map +0 -1
  374. package/dist/src/backend/services/fixer-workflow.service.test.js +0 -55
  375. package/dist/src/backend/services/fixer-workflow.service.test.js.map +0 -1
@@ -26,7 +26,7 @@ export interface WorkspaceSnapshotEntry {
26
26
  runScriptStatus: RunScriptStatus;
27
27
  hasHadSessions: boolean;
28
28
  isWorking: boolean;
29
- pendingRequestType: 'plan_approval' | 'user_question' | null;
29
+ pendingRequestType: 'plan_approval' | 'user_question' | 'permission_request' | null;
30
30
  sessionSummaries: WorkspaceSessionSummary[];
31
31
  gitStats: {
32
32
  total: number;
@@ -55,7 +55,7 @@ export interface SnapshotUpdateInput {
55
55
  prCiStatus?: CIStatus;
56
56
  prUpdatedAt?: string | null;
57
57
  isWorking?: boolean;
58
- pendingRequestType?: 'plan_approval' | 'user_question' | null;
58
+ pendingRequestType?: 'plan_approval' | 'user_question' | 'permission_request' | null;
59
59
  sessionSummaries?: WorkspaceSessionSummary[];
60
60
  ratchetEnabled?: boolean;
61
61
  ratchetState?: RatchetState;
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-snapshot-store.service.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/workspace-snapshot-store.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-snapshot-store.service.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/workspace-snapshot-store.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { SessionStatus } from '../../shared/core/index.js';
2
+ export interface ActiveAcpProcess {
3
+ sessionId: string;
4
+ pid: number | undefined;
5
+ status: string;
6
+ isRunning: boolean;
7
+ }
8
+ export interface AgentSessionProcessRecord {
9
+ id: string;
10
+ workspaceId: string;
11
+ name: string | null;
12
+ workflow: string;
13
+ model: string;
14
+ status: SessionStatus;
15
+ providerProcessPid: number | null;
16
+ createdAt: Date;
17
+ updatedAt: Date;
18
+ }
19
+ export interface WorkspaceProcessRecord {
20
+ id: string;
21
+ name: string;
22
+ branchName: string | null;
23
+ project: {
24
+ slug: string;
25
+ };
26
+ }
27
+ export interface AgentProcessRow {
28
+ sessionId: string;
29
+ workspaceId: string;
30
+ workspaceName: string;
31
+ workspaceBranch: string | null;
32
+ projectSlug: string | null;
33
+ name: string | null;
34
+ workflow: string;
35
+ model: string;
36
+ pid: number | null;
37
+ status: SessionStatus;
38
+ inMemory: boolean;
39
+ memoryStatus: string | null;
40
+ createdAt: Date;
41
+ updatedAt: Date;
42
+ cpuPercent: number | null;
43
+ memoryBytes: number | null;
44
+ idleTimeMs: number | null;
45
+ }
46
+ export declare function mergeAgentSessions(activeSessionsById: AgentSessionProcessRecord[], sessionsWithPid: AgentSessionProcessRecord[]): AgentSessionProcessRecord[];
47
+ export declare function buildAgentProcesses(params: {
48
+ activeAcpProcesses: ActiveAcpProcess[];
49
+ dbSessions: AgentSessionProcessRecord[];
50
+ workspaceById: ReadonlyMap<string, WorkspaceProcessRecord>;
51
+ }): {
52
+ agentProcesses: AgentProcessRow[];
53
+ orphanedSessionIds: string[];
54
+ };
55
+ //# sourceMappingURL=admin-active-processes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-active-processes.d.ts","sourceRoot":"","sources":["../../../../src/backend/trpc/admin-active-processes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,CAAC;IACtB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAiFD,wBAAgB,kBAAkB,CAChC,kBAAkB,EAAE,yBAAyB,EAAE,EAC/C,eAAe,EAAE,yBAAyB,EAAE,GAC3C,yBAAyB,EAAE,CAW7B;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;IACvC,UAAU,EAAE,yBAAyB,EAAE,CAAC;IACxC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CAC5D,GAAG;IAAE,cAAc,EAAE,eAAe,EAAE,CAAC;IAAC,kBAAkB,EAAE,MAAM,EAAE,CAAA;CAAE,CA4BtE"}
@@ -0,0 +1,103 @@
1
+ import { SessionStatus } from '../../shared/core/index.js';
2
+ function toWorkspaceFields(workspace) {
3
+ return {
4
+ workspaceName: workspace?.name ?? 'Unknown',
5
+ workspaceBranch: workspace?.branchName ?? null,
6
+ projectSlug: workspace?.project.slug ?? null,
7
+ };
8
+ }
9
+ function createOrphanInMemoryRow(memProcess) {
10
+ return {
11
+ sessionId: memProcess.sessionId,
12
+ workspaceId: 'unknown',
13
+ workspaceName: 'Unknown (orphan)',
14
+ workspaceBranch: null,
15
+ projectSlug: null,
16
+ name: null,
17
+ workflow: 'unknown',
18
+ model: 'unknown',
19
+ pid: memProcess.pid ?? null,
20
+ status: memProcess.isRunning ? SessionStatus.RUNNING : SessionStatus.COMPLETED,
21
+ inMemory: true,
22
+ memoryStatus: memProcess.status,
23
+ createdAt: new Date(),
24
+ updatedAt: new Date(),
25
+ cpuPercent: null,
26
+ memoryBytes: null,
27
+ idleTimeMs: null,
28
+ };
29
+ }
30
+ function createInMemoryRow(session, memProcess, workspace) {
31
+ return {
32
+ sessionId: session.id,
33
+ workspaceId: session.workspaceId,
34
+ ...toWorkspaceFields(workspace),
35
+ name: session.name,
36
+ workflow: session.workflow,
37
+ model: session.model,
38
+ pid: session.providerProcessPid ?? memProcess.pid ?? null,
39
+ status: session.status,
40
+ inMemory: true,
41
+ memoryStatus: memProcess.status,
42
+ createdAt: session.createdAt,
43
+ updatedAt: session.updatedAt,
44
+ cpuPercent: null,
45
+ memoryBytes: null,
46
+ idleTimeMs: null,
47
+ };
48
+ }
49
+ function createDbOnlyRow(session, workspace) {
50
+ return {
51
+ sessionId: session.id,
52
+ workspaceId: session.workspaceId,
53
+ ...toWorkspaceFields(workspace),
54
+ name: session.name,
55
+ workflow: session.workflow,
56
+ model: session.model,
57
+ pid: session.providerProcessPid,
58
+ status: session.status,
59
+ inMemory: false,
60
+ memoryStatus: null,
61
+ createdAt: session.createdAt,
62
+ updatedAt: session.updatedAt,
63
+ cpuPercent: null,
64
+ memoryBytes: null,
65
+ idleTimeMs: null,
66
+ };
67
+ }
68
+ export function mergeAgentSessions(activeSessionsById, sessionsWithPid) {
69
+ const merged = new Map();
70
+ for (const session of activeSessionsById) {
71
+ merged.set(session.id, session);
72
+ }
73
+ for (const session of sessionsWithPid) {
74
+ if (!merged.has(session.id)) {
75
+ merged.set(session.id, session);
76
+ }
77
+ }
78
+ return Array.from(merged.values());
79
+ }
80
+ export function buildAgentProcesses(params) {
81
+ const { activeAcpProcesses, dbSessions, workspaceById } = params;
82
+ const dbSessionsById = new Map(dbSessions.map((session) => [session.id, session]));
83
+ const activeSessionIds = new Set(activeAcpProcesses.map((process) => process.sessionId));
84
+ const agentProcesses = [];
85
+ const orphanedSessionIds = [];
86
+ for (const memProcess of activeAcpProcesses) {
87
+ const session = dbSessionsById.get(memProcess.sessionId);
88
+ if (!session) {
89
+ orphanedSessionIds.push(memProcess.sessionId);
90
+ agentProcesses.push(createOrphanInMemoryRow(memProcess));
91
+ continue;
92
+ }
93
+ agentProcesses.push(createInMemoryRow(session, memProcess, workspaceById.get(session.workspaceId)));
94
+ }
95
+ for (const session of dbSessions) {
96
+ if (activeSessionIds.has(session.id)) {
97
+ continue;
98
+ }
99
+ agentProcesses.push(createDbOnlyRow(session, workspaceById.get(session.workspaceId)));
100
+ }
101
+ return { agentProcesses, orphanedSessionIds };
102
+ }
103
+ //# sourceMappingURL=admin-active-processes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-active-processes.js","sourceRoot":"","sources":["../../../../src/backend/trpc/admin-active-processes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=admin-active-processes.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-active-processes.test.d.ts","sourceRoot":"","sources":["../../../../src/backend/trpc/admin-active-processes.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,105 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { SessionStatus } from '../../shared/core/index.js';
3
+ import { buildAgentProcesses, mergeAgentSessions, } from './admin-active-processes.js';
4
+ const now = new Date('2026-02-15T12:00:00.000Z');
5
+ function createSession(overrides) {
6
+ return {
7
+ id: 'session-1',
8
+ workspaceId: 'workspace-1',
9
+ name: 'Chat 1',
10
+ workflow: 'user',
11
+ model: 'gpt-5',
12
+ status: SessionStatus.RUNNING,
13
+ providerProcessPid: null,
14
+ createdAt: now,
15
+ updatedAt: now,
16
+ ...overrides,
17
+ };
18
+ }
19
+ function createWorkspace(overrides) {
20
+ const { id, ...rest } = overrides;
21
+ return {
22
+ id,
23
+ name: 'Workspace',
24
+ branchName: 'main',
25
+ project: { slug: 'demo-project' },
26
+ ...rest,
27
+ };
28
+ }
29
+ function createMemProcess(overrides) {
30
+ const { sessionId, ...rest } = overrides;
31
+ return {
32
+ sessionId,
33
+ pid: 1234,
34
+ status: 'running',
35
+ isRunning: true,
36
+ ...rest,
37
+ };
38
+ }
39
+ describe('mergeAgentSessions', () => {
40
+ it('keeps active sessions and appends non-overlapping PID sessions', () => {
41
+ const active = [createSession({ id: 'active-1' })];
42
+ const withPid = [
43
+ createSession({ id: 'active-1', providerProcessPid: 123 }),
44
+ createSession({ id: 'pid-only-1', providerProcessPid: 456 }),
45
+ ];
46
+ const merged = mergeAgentSessions(active, withPid);
47
+ expect(merged).toHaveLength(2);
48
+ expect(merged.map((session) => session.id)).toEqual(['active-1', 'pid-only-1']);
49
+ expect(merged[0]?.providerProcessPid).toBeNull();
50
+ });
51
+ });
52
+ describe('buildAgentProcesses', () => {
53
+ it('maps active ACP sessions by session id even when DB pid is null', () => {
54
+ const session = createSession({
55
+ id: 'session-without-db-pid',
56
+ workspaceId: 'workspace-real',
57
+ providerProcessPid: null,
58
+ });
59
+ const workspaceMap = new Map([
60
+ [
61
+ 'workspace-real',
62
+ createWorkspace({ id: 'workspace-real', name: 'Real Workspace', branchName: 'feature/a' }),
63
+ ],
64
+ ]);
65
+ const result = buildAgentProcesses({
66
+ activeAcpProcesses: [createMemProcess({ sessionId: 'session-without-db-pid', pid: 4321 })],
67
+ dbSessions: [session],
68
+ workspaceById: workspaceMap,
69
+ });
70
+ expect(result.orphanedSessionIds).toEqual([]);
71
+ expect(result.agentProcesses).toHaveLength(1);
72
+ expect(result.agentProcesses[0]?.workspaceName).toBe('Real Workspace');
73
+ expect(result.agentProcesses[0]?.workspaceId).toBe('workspace-real');
74
+ expect(result.agentProcesses[0]?.pid).toBe(4321);
75
+ expect(result.agentProcesses[0]?.inMemory).toBe(true);
76
+ });
77
+ it('keeps true in-memory orphans and includes db-only pid sessions', () => {
78
+ const workspaceMap = new Map([
79
+ ['workspace-1', createWorkspace({ id: 'workspace-1', name: 'Workspace One' })],
80
+ ['workspace-2', createWorkspace({ id: 'workspace-2', name: 'Workspace Two' })],
81
+ ]);
82
+ const result = buildAgentProcesses({
83
+ activeAcpProcesses: [createMemProcess({ sessionId: 'missing-db-session', pid: 9999 })],
84
+ dbSessions: [
85
+ createSession({
86
+ id: 'db-only-session',
87
+ workspaceId: 'workspace-2',
88
+ providerProcessPid: 2222,
89
+ }),
90
+ ],
91
+ workspaceById: workspaceMap,
92
+ });
93
+ expect(result.orphanedSessionIds).toEqual(['missing-db-session']);
94
+ expect(result.agentProcesses).toHaveLength(2);
95
+ const orphan = result.agentProcesses.find((process) => process.sessionId === 'missing-db-session');
96
+ const dbOnly = result.agentProcesses.find((process) => process.sessionId === 'db-only-session');
97
+ expect(orphan?.workspaceName).toBe('Unknown (orphan)');
98
+ expect(orphan?.workspaceId).toBe('unknown');
99
+ expect(orphan?.inMemory).toBe(true);
100
+ expect(dbOnly?.workspaceName).toBe('Workspace Two');
101
+ expect(dbOnly?.inMemory).toBe(false);
102
+ expect(dbOnly?.pid).toBe(2222);
103
+ });
104
+ });
105
+ //# sourceMappingURL=admin-active-processes.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-active-processes.test.js","sourceRoot":"","sources":["../../../../src/backend/trpc/admin-active-processes.test.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,4 @@
1
1
  import { type Context } from './trpc.js';
2
- export interface ParsedLogEntry {
3
- level: string;
4
- timestamp: string;
5
- message: string;
6
- component: string;
7
- context: Record<string, unknown>;
8
- }
9
2
  export declare const adminRouter: import("@trpc/server").TRPCBuiltRouter<{
10
3
  ctx: Context;
11
4
  meta: object;
@@ -94,25 +87,7 @@ export declare const adminRouter: import("@trpc/server").TRPCBuiltRouter<{
94
87
  getActiveProcesses: import("@trpc/server").TRPCQueryProcedure<{
95
88
  input: void;
96
89
  output: {
97
- agent: {
98
- sessionId: string;
99
- workspaceId: string;
100
- workspaceName: string;
101
- workspaceBranch: string | null;
102
- projectSlug: string | null;
103
- name: string | null;
104
- workflow: string;
105
- model: string;
106
- pid: number | null;
107
- status: import("../../../prisma/generated/client.js").SessionStatus;
108
- inMemory: boolean;
109
- memoryStatus: string | null;
110
- createdAt: Date;
111
- updatedAt: Date;
112
- cpuPercent: number | null;
113
- memoryBytes: number | null;
114
- idleTimeMs: number | null;
115
- }[];
90
+ agent: import("./admin-active-processes.js").AgentProcessRow[];
116
91
  terminal: {
117
92
  terminalId: string;
118
93
  workspaceId: string;
@@ -209,10 +184,8 @@ export declare const adminRouter: import("@trpc/server").TRPCBuiltRouter<{
209
184
  ratchetEnabled: boolean;
210
185
  ratchetState: "READY" | "IDLE" | "MERGED" | "CI_RUNNING" | "CI_FAILED" | "REVIEW_PENDING";
211
186
  ratchetLastCheckedAt: string | null;
212
- ratchetLastPushAt: string | null;
213
187
  ratchetActiveSessionId: string | null;
214
188
  ratchetLastCiRunId: string | null;
215
- ratchetLastNotifiedState: "READY" | "IDLE" | "MERGED" | "CI_RUNNING" | "CI_FAILED" | "REVIEW_PENDING" | null;
216
189
  hasHadSessions: boolean;
217
190
  cachedKanbanColumn: "WORKING" | "WAITING" | "DONE";
218
191
  stateComputedAt: string | null;
@@ -318,10 +291,8 @@ export declare const adminRouter: import("@trpc/server").TRPCBuiltRouter<{
318
291
  ratchetEnabled: boolean;
319
292
  ratchetState: "READY" | "IDLE" | "MERGED" | "CI_RUNNING" | "CI_FAILED" | "REVIEW_PENDING";
320
293
  ratchetLastCheckedAt: string | null;
321
- ratchetLastPushAt: string | null;
322
294
  ratchetActiveSessionId: string | null;
323
295
  ratchetLastCiRunId: string | null;
324
- ratchetLastNotifiedState: "READY" | "IDLE" | "MERGED" | "CI_RUNNING" | "CI_FAILED" | "REVIEW_PENDING" | null;
325
296
  hasHadSessions: boolean;
326
297
  cachedKanbanColumn: "WORKING" | "WAITING" | "DONE";
327
298
  stateComputedAt: string | null;
@@ -378,9 +349,11 @@ export declare const adminRouter: import("@trpc/server").TRPCBuiltRouter<{
378
349
  offset?: number | undefined;
379
350
  };
380
351
  output: {
381
- entries: ParsedLogEntry[];
382
- total: number;
383
352
  filePath: string;
353
+ entries: import("./log-file-reader.js").ParsedLogEntry[];
354
+ total: number;
355
+ totalIsExact: boolean;
356
+ hasMore: boolean;
384
357
  };
385
358
  meta: object;
386
359
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"admin.trpc.d.ts","sourceRoot":"","sources":["../../../../src/backend/trpc/admin.trpc.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,OAAO,EAA2B,MAAM,QAAQ,CAAC;AAM/D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAyFD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA6KI,MAAM,GAAG,IAAI;6BACZ,MAAM,GAAG,IAAI;4BACd,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwMvC,CAAC"}
1
+ {"version":3,"file":"admin.trpc.d.ts","sourceRoot":"","sources":["../../../../src/backend/trpc/admin.trpc.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,OAAO,EAA2B,MAAM,QAAQ,CAAC;AAM/D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoVtB,CAAC"}
@@ -1,85 +1,16 @@
1
- import { createReadStream } from 'node:fs';
2
1
  import { open, stat } from 'node:fs/promises';
3
- import { createInterface } from 'node:readline';
4
2
  import { z } from 'zod';
5
3
  import { acpRuntimeManager, sessionDataService } from '../../backend/domains/session/index.js';
6
4
  import { workspaceDataService } from '../../backend/domains/workspace/index.js';
7
5
  import { dataBackupService } from '../../backend/orchestration/data-backup.service.js';
8
6
  import { decisionLogQueryService } from '../../backend/orchestration/decision-log-query.service.js';
9
7
  import { getLogFilePath } from '../../backend/services/logger.service.js';
10
- import { SessionStatus } from '../../shared/core/index.js';
11
8
  import { exportDataSchema } from '../../shared/schemas/export-data.schema.js';
9
+ import { buildAgentProcesses, mergeAgentSessions } from './admin-active-processes.js';
10
+ import { readFilteredLogEntriesPage } from './log-file-reader.js';
12
11
  import { publicProcedure, router } from './trpc.js';
13
12
  const loggerName = 'admin-trpc';
14
13
  const getLogger = (ctx) => ctx.appContext.services.createLogger(loggerName);
15
- const RawLogEntrySchema = z.object({
16
- level: z.string(),
17
- timestamp: z.string().optional(),
18
- message: z.string().optional(),
19
- context: z.record(z.string(), z.unknown()).optional(),
20
- });
21
- function matchesTimestamp(timestamp, filter) {
22
- if (!(timestamp && (filter.sinceMs || filter.untilMs))) {
23
- return true;
24
- }
25
- const ts = new Date(timestamp).getTime();
26
- if (filter.sinceMs && ts < filter.sinceMs) {
27
- return false;
28
- }
29
- return !(filter.untilMs && ts > filter.untilMs);
30
- }
31
- function matchesLogFilter(entry, filter) {
32
- if (filter.level && entry.level !== filter.level) {
33
- return false;
34
- }
35
- if (!matchesTimestamp(entry.timestamp, filter)) {
36
- return false;
37
- }
38
- if (filter.search) {
39
- const msg = entry.message?.toLowerCase() ?? '';
40
- const comp = typeof entry.context?.component === 'string' ? entry.context.component : undefined;
41
- if (!(msg.includes(filter.search) || comp?.toLowerCase().includes(filter.search))) {
42
- return false;
43
- }
44
- }
45
- return true;
46
- }
47
- function toParsedLogEntry(entry) {
48
- return {
49
- level: entry.level,
50
- timestamp: entry.timestamp ?? '',
51
- message: entry.message ?? '',
52
- component: typeof entry.context?.component === 'string' ? entry.context.component : '',
53
- context: entry.context ?? {},
54
- };
55
- }
56
- async function readFilteredLogEntries(filePath, filter) {
57
- const filtered = [];
58
- const rl = createInterface({
59
- input: createReadStream(filePath, 'utf-8'),
60
- crlfDelay: Number.POSITIVE_INFINITY,
61
- });
62
- for await (const line of rl) {
63
- if (!line) {
64
- continue;
65
- }
66
- try {
67
- const rawEntry = JSON.parse(line);
68
- const parsedEntry = RawLogEntrySchema.safeParse(rawEntry);
69
- if (!parsedEntry.success) {
70
- continue;
71
- }
72
- const entry = parsedEntry.data;
73
- if (!matchesLogFilter(entry, filter)) {
74
- continue;
75
- }
76
- filtered.push(toParsedLogEntry(entry));
77
- }
78
- catch {
79
- }
80
- }
81
- return filtered;
82
- }
83
14
  export const adminRouter = router({
84
15
  getServerInfo: publicProcedure.query(({ ctx }) => {
85
16
  const { configService, serverInstanceService } = ctx.appContext.services;
@@ -167,67 +98,31 @@ export const adminRouter = router({
167
98
  const { terminalService } = ctx.appContext.services;
168
99
  const logger = getLogger(ctx);
169
100
  const activeAcpProcesses = acpRuntimeManager.getAllActiveProcesses();
101
+ const activeSessionIds = activeAcpProcesses.map((process) => process.sessionId);
102
+ const activeDbSessions = await sessionDataService.findAgentSessionsByIds(activeSessionIds);
170
103
  const activeTerminals = terminalService.getAllTerminals();
171
104
  const agentSessionsWithPid = await sessionDataService.findAgentSessionsWithPid();
105
+ const mergedAgentSessions = mergeAgentSessions(activeDbSessions, agentSessionsWithPid);
172
106
  const terminalSessionsWithPid = await sessionDataService.findTerminalSessionsWithPid();
173
107
  const workspaceIds = new Set([
174
- ...agentSessionsWithPid.map((s) => s.workspaceId),
108
+ ...mergedAgentSessions.map((s) => s.workspaceId),
175
109
  ...terminalSessionsWithPid.map((s) => s.workspaceId),
176
110
  ...activeTerminals.map((t) => t.workspaceId),
177
111
  ]);
178
112
  const workspaces = await workspaceDataService.findByIdsWithProject(Array.from(workspaceIds));
179
113
  const workspaceMap = new Map(workspaces.map((w) => [w.id, w]));
180
- const dbSessionIds = new Set(agentSessionsWithPid.map((s) => s.id));
181
- const agentProcesses = agentSessionsWithPid.map((session) => {
182
- const memProcess = activeAcpProcesses.find((p) => p.sessionId === session.id);
183
- const workspace = workspaceMap.get(session.workspaceId);
184
- return {
185
- sessionId: session.id,
186
- workspaceId: session.workspaceId,
187
- workspaceName: workspace?.name ?? 'Unknown',
188
- workspaceBranch: workspace?.branchName ?? null,
189
- projectSlug: workspace?.project.slug ?? null,
190
- name: session.name,
191
- workflow: session.workflow,
192
- model: session.model,
193
- pid: session.providerProcessPid,
194
- status: session.status,
195
- inMemory: !!memProcess,
196
- memoryStatus: memProcess?.status ?? null,
197
- createdAt: session.createdAt,
198
- updatedAt: session.updatedAt,
199
- cpuPercent: null,
200
- memoryBytes: null,
201
- idleTimeMs: null,
202
- };
114
+ const { agentProcesses, orphanedSessionIds } = buildAgentProcesses({
115
+ activeAcpProcesses,
116
+ dbSessions: mergedAgentSessions,
117
+ workspaceById: workspaceMap,
203
118
  });
204
- for (const memProcess of activeAcpProcesses) {
205
- if (!dbSessionIds.has(memProcess.sessionId)) {
206
- logger.warn('Found in-memory ACP process without DB record', {
207
- sessionId: memProcess.sessionId,
208
- pid: memProcess.pid,
209
- status: memProcess.status,
210
- });
211
- agentProcesses.push({
212
- sessionId: memProcess.sessionId,
213
- workspaceId: 'unknown',
214
- workspaceName: 'Unknown (orphan)',
215
- workspaceBranch: null,
216
- projectSlug: null,
217
- name: null,
218
- workflow: 'unknown',
219
- model: 'unknown',
220
- pid: memProcess.pid ?? null,
221
- status: memProcess.isRunning ? SessionStatus.RUNNING : SessionStatus.COMPLETED,
222
- inMemory: true,
223
- memoryStatus: memProcess.status,
224
- createdAt: new Date(),
225
- updatedAt: new Date(),
226
- cpuPercent: null,
227
- memoryBytes: null,
228
- idleTimeMs: null,
229
- });
230
- }
119
+ for (const sessionId of orphanedSessionIds) {
120
+ const memProcess = activeAcpProcesses.find((process) => process.sessionId === sessionId);
121
+ logger.warn('Found in-memory ACP process without DB record', {
122
+ sessionId,
123
+ pid: memProcess?.pid,
124
+ status: memProcess?.status,
125
+ });
231
126
  }
232
127
  const terminalProcesses = activeTerminals.map((terminal) => {
233
128
  const dbSession = terminalSessionsWithPid.find((s) => s.workspaceId === terminal.workspaceId && s.pid === terminal.pid);
@@ -297,16 +192,22 @@ export const adminRouter = router({
297
192
  sinceMs: input.since ? new Date(input.since).getTime() : null,
298
193
  untilMs: input.until ? new Date(input.until).getTime() : null,
299
194
  };
300
- let filtered;
301
195
  try {
302
- filtered = await readFilteredLogEntries(filePath, filter);
196
+ const page = await readFilteredLogEntriesPage(filePath, filter, {
197
+ limit: input.limit,
198
+ offset: input.offset,
199
+ });
200
+ return { ...page, filePath };
303
201
  }
304
202
  catch {
305
- return { entries: [], total: 0, filePath };
203
+ return {
204
+ entries: [],
205
+ total: 0,
206
+ totalIsExact: false,
207
+ hasMore: false,
208
+ filePath,
209
+ };
306
210
  }
307
- filtered.reverse();
308
- const page = filtered.slice(input.offset, input.offset + input.limit);
309
- return { entries: page, total: filtered.length, filePath };
310
211
  }),
311
212
  downloadLogFile: publicProcedure.query(async () => {
312
213
  const filePath = getLogFilePath();