factory-factory 0.4.5 → 0.4.6

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 (383) hide show
  1. package/dist/client/assets/{abnfDiagram-VRR7QNED-DygwVN25.js → abnfDiagram-N423BO3Z-BcUuFtOj.js} +1 -1
  2. package/dist/client/assets/{arc-CcnMw5av.js → arc-Cp8_E6ha.js} +1 -1
  3. package/dist/client/assets/architectureDiagram-T3A2C74G-C3_2J0tC.js +36 -0
  4. package/dist/client/assets/{blockDiagram-677ZJIJ3-DQ77xvqH.js → blockDiagram-VBNYF7ZC-Dy0jc6lP.js} +1 -1
  5. package/dist/client/assets/{c4Diagram-LMCZKHZV-B-9QZJ1e.js → c4Diagram-5PPSVZJV-97TkD6w-.js} +1 -1
  6. package/dist/client/assets/channel-DLBBfejH.js +1 -0
  7. package/dist/client/assets/{chunk-32BRIVSS-CV9UmSkI.js → chunk-2GRJ4B5K-Dc0I7ume.js} +1 -1
  8. package/dist/client/assets/{chunk-2Q5K7J3B-DhfBY-Wd.js → chunk-2Q5K7J3B-DbFPWZwu.js} +1 -1
  9. package/dist/client/assets/{chunk-EX3LRPZG-Dj63JdET.js → chunk-5RXB4S5H-Dci_7ZDD.js} +1 -1
  10. package/dist/client/assets/{chunk-5VM5RSS4-BUNj3iDY.js → chunk-5VM5RSS4-Ca82Rzl0.js} +1 -1
  11. package/dist/client/assets/{chunk-MOJQB5TN-PY5GLOxr.js → chunk-6Q2QTUOP-Be2f5Q2t.js} +1 -1
  12. package/dist/client/assets/{chunk-V7JOEXUC--zp7Z0xS.js → chunk-GF5L2VYU-C4VRs6xS.js} +1 -1
  13. package/dist/client/assets/{chunk-JWPE2WC7-i6Ud3VAu.js → chunk-JWPE2WC7-DVlW0c7f.js} +1 -1
  14. package/dist/client/assets/{chunk-VR4S4FIN-JstmsazP.js → chunk-KBJHAD2P-BKRpW89b.js} +1 -1
  15. package/dist/client/assets/{chunk-RYQCIY6F-pIEuQy1L.js → chunk-RYQCIY6F-BwMw9oh9.js} +1 -1
  16. package/dist/client/assets/{chunk-XXDRQBXY-C66lsFmy.js → chunk-XXDRQBXY-py-FQquv.js} +1 -1
  17. package/dist/client/assets/classDiagram-JCYQIIEL-Ds5wVQR3.js +1 -0
  18. package/dist/client/assets/classDiagram-v2-OCEON4UE-Ds5wVQR3.js +1 -0
  19. package/dist/client/assets/{cose-bilkent-JH36ORCC-D3jSuAHn.js → cose-bilkent-JH36ORCC-BMCtQCZ8.js} +1 -1
  20. package/dist/client/assets/{cynefin-VYW2F7L2-Dx3xfGS7.js → cynefin-VYW2F7L2-BTHAy6wD.js} +1 -1
  21. package/dist/client/assets/{cynefinDiagram-TSTJHNR4-BcGYZcSJ.js → cynefinDiagram-MW4NZA55-pQCQD0Ih.js} +1 -1
  22. package/dist/client/assets/{dagre-VKFMJZFB-CLZSDf9x.js → dagre-VZM6K2ZE-CZcoEFVf.js} +1 -1
  23. package/dist/client/assets/{diagram-OA4YK3LP-C7WEtC2B.js → diagram-7IWD3JNH-DgQv_208.js} +1 -1
  24. package/dist/client/assets/{diagram-FQU43EPY-Nosv2FJf.js → diagram-B4RE2ZJO-DoFotcsB.js} +1 -1
  25. package/dist/client/assets/{diagram-NH7WQ7WH-BmRiUIAJ.js → diagram-LBJQPF4R-C5zkL1ml.js} +1 -1
  26. package/dist/client/assets/{diagram-G47NLZAW-CPjqONaO.js → diagram-Q27KOJAE-ERKqnoHP.js} +1 -1
  27. package/dist/client/assets/diagram-UB23O5K3-Dyt6sy3Z.js +41 -0
  28. package/dist/client/assets/{ebnfDiagram-CCIWWBDH-D2Ye87k4.js → ebnfDiagram-BXEA7PRR-DqsFEAw2.js} +1 -1
  29. package/dist/client/assets/{erDiagram-Q63AITRT-CgZF8eG-.js → erDiagram-JOGREHBK-Dn8Aqkgn.js} +1 -1
  30. package/dist/client/assets/{flowDiagram-23GEKE2U-bxoO3Eep.js → flowDiagram-UKHOOZJN-DcArGyH-.js} +6 -6
  31. package/dist/client/assets/{ganttDiagram-NO4QXBWP-BAtqPw6P.js → ganttDiagram-PKOTCBZU-BuHaeolc.js} +1 -1
  32. package/dist/client/assets/{gitGraphDiagram-IHSO6WYX-DYQqeJ8w.js → gitGraphDiagram-DS77QQ5N-iKWWNsQK.js} +1 -1
  33. package/dist/client/assets/index-CVVo6xHd.css +1 -0
  34. package/dist/client/assets/index-DY0TryY7.js +695 -0
  35. package/dist/client/assets/{infoDiagram-FWYZ7A6U-CZQCerFQ.js → infoDiagram-6WML65LV-C7IulVvo.js} +1 -1
  36. package/dist/client/assets/{ishikawaDiagram-FXEZZL3T-Bc7wE25N.js → ishikawaDiagram-WSZJBQD7-DW4cB_Nk.js} +1 -1
  37. package/dist/client/assets/{journeyDiagram-5HDEW3XC-D5qqjKJz.js → journeyDiagram-NVQOT4AX-Nzsiy4H7.js} +1 -1
  38. package/dist/client/assets/{kanban-definition-HUTT4EX6-42kkaHBo.js → kanban-definition-27J2QSJJ-BUsK9dj9.js} +1 -1
  39. package/dist/client/assets/{linear-Dg3NQEM3.js → linear-CyoW-usj.js} +1 -1
  40. package/dist/client/assets/{mindmap-definition-LN4V7U3C-CRANKUcD.js → mindmap-definition-FAOFIHXS-Bd9cSJjQ.js} +1 -1
  41. package/dist/client/assets/{mobile-baseline-D6bQ8WTB.js → mobile-baseline-K78aE4nt.js} +1 -1
  42. package/dist/client/assets/{pegDiagram-2B236MQR-qJQPOd8H.js → pegDiagram-VL7TDLO6-BrmAKdiE.js} +1 -1
  43. package/dist/client/assets/{pieDiagram-ENE6RG2P-B5wB7Ccf.js → pieDiagram-7S7Q4E2Y-Ce0k6LI1.js} +1 -1
  44. package/dist/client/assets/{quadrantDiagram-ABIIQ3AL-CCZfXF8m.js → quadrantDiagram-CIZ2JOQS-_9HxOOGa.js} +1 -1
  45. package/dist/client/assets/{railroadDiagram-RFXS5EU6-BuIrSJUW.js → railroadDiagram-AXF67PYL-ChdF1CBw.js} +1 -1
  46. package/dist/client/assets/{requirementDiagram-TGXJPOKE-DfIr0zZ3.js → requirementDiagram-LRYGKXZP-Bm2gdYTE.js} +1 -1
  47. package/dist/client/assets/{sankeyDiagram-HTMAVEWB-CJoUXRWq.js → sankeyDiagram-W5VNT64P-Kf7zUiC-.js} +1 -1
  48. package/dist/client/assets/{sequenceDiagram-DBY2YBRQ-Cq1lOU1b.js → sequenceDiagram-SI44F4Z6-DyPqsgh1.js} +1 -1
  49. package/dist/client/assets/{sizeCapture-X5ZJPWSS-XHOsOkor.js → sizeCapture-X5ZJPWSS-Cgn8Hxr2.js} +1 -1
  50. package/dist/client/assets/{stateDiagram-2N3HPSRC-BLVzzete.js → stateDiagram-OKZ733FA-CJxSzxmg.js} +1 -1
  51. package/dist/client/assets/stateDiagram-v2-UEYNNEHI-BwUaUW2J.js +1 -0
  52. package/dist/client/assets/{swimlanes-5IMT3BWC-C20mYIPR.js → swimlanes-SLNWSIFB-Ckb_izEZ.js} +2 -2
  53. package/dist/client/assets/swimlanesDiagram-ULZ7WXOC-D87lLmuW.js +8 -0
  54. package/dist/client/assets/{terminal-instance-Dw2gcPib.js → terminal-instance-DWySt2_t.js} +1 -1
  55. package/dist/client/assets/{timeline-definition-FHXFAJF6-DlceJAxJ.js → timeline-definition-Z64GVDOM-BWx_NLrK.js} +1 -1
  56. package/dist/client/assets/{vennDiagram-L72KCM5P-CFl-Eo1Y.js → vennDiagram-T6HMQDX7-BgN2-lO-.js} +1 -1
  57. package/dist/client/assets/{wardleyDiagram-EHGQE667-eBpeLOoN.js → wardleyDiagram-T6FBY63Y-C9iwoeki.js} +1 -1
  58. package/dist/client/assets/{xychartDiagram-FW5EYKEG-B8RBkKiX.js → xychartDiagram-ELKLHX3M-B3AYy5ZN.js} +4 -4
  59. package/dist/client/audio-worklets/pcm-capture-processor.js +67 -0
  60. package/dist/client/index.html +2 -2
  61. package/dist/client/sounds/voice-thinking-start.mp3 +0 -0
  62. package/dist/prisma/generated/commonInputTypes.d.ts +40 -0
  63. package/dist/prisma/generated/commonInputTypes.d.ts.map +1 -1
  64. package/dist/prisma/generated/enums.d.ts +1 -0
  65. package/dist/prisma/generated/enums.d.ts.map +1 -1
  66. package/dist/prisma/generated/enums.js +2 -1
  67. package/dist/prisma/generated/enums.js.map +1 -1
  68. package/dist/prisma/generated/internal/class.js +4 -4
  69. package/dist/prisma/generated/internal/class.js.map +1 -1
  70. package/dist/prisma/generated/internal/prismaNamespace.d.ts +7 -1
  71. package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
  72. package/dist/prisma/generated/internal/prismaNamespace.js +6 -0
  73. package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
  74. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +6 -0
  75. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  76. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js +6 -0
  77. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  78. package/dist/prisma/generated/models/UserSettings.d.ts +216 -1
  79. package/dist/prisma/generated/models/UserSettings.d.ts.map +1 -1
  80. package/dist/src/backend/app-context.d.ts +4 -1
  81. package/dist/src/backend/app-context.d.ts.map +1 -1
  82. package/dist/src/backend/app-context.js +4 -1
  83. package/dist/src/backend/app-context.js.map +1 -1
  84. package/dist/src/backend/orchestration/data-backup.service.d.ts.map +1 -1
  85. package/dist/src/backend/orchestration/data-backup.service.js +10 -0
  86. package/dist/src/backend/orchestration/data-backup.service.js.map +1 -1
  87. package/dist/src/backend/orchestration/data-backup.service.test.js +23 -0
  88. package/dist/src/backend/orchestration/data-backup.service.test.js.map +1 -1
  89. package/dist/src/backend/orchestration/reconciliation.service.d.ts.map +1 -1
  90. package/dist/src/backend/orchestration/reconciliation.service.js +4 -0
  91. package/dist/src/backend/orchestration/reconciliation.service.js.map +1 -1
  92. package/dist/src/backend/orchestration/reconciliation.service.test.js +39 -0
  93. package/dist/src/backend/orchestration/reconciliation.service.test.js.map +1 -1
  94. package/dist/src/backend/routers/websocket/index.d.ts +1 -0
  95. package/dist/src/backend/routers/websocket/index.d.ts.map +1 -1
  96. package/dist/src/backend/routers/websocket/index.js +1 -0
  97. package/dist/src/backend/routers/websocket/index.js.map +1 -1
  98. package/dist/src/backend/routers/websocket/voice-soft-stop.handler.d.ts +11 -0
  99. package/dist/src/backend/routers/websocket/voice-soft-stop.handler.d.ts.map +1 -0
  100. package/dist/src/backend/routers/websocket/voice-soft-stop.handler.js +28 -0
  101. package/dist/src/backend/routers/websocket/voice-soft-stop.handler.js.map +1 -0
  102. package/dist/src/backend/routers/websocket/voice-soft-stop.handler.test.d.ts +2 -0
  103. package/dist/src/backend/routers/websocket/voice-soft-stop.handler.test.d.ts.map +1 -0
  104. package/dist/src/backend/routers/websocket/voice-soft-stop.handler.test.js +84 -0
  105. package/dist/src/backend/routers/websocket/voice-soft-stop.handler.test.js.map +1 -0
  106. package/dist/src/backend/routers/websocket/voice.handler.d.ts +3 -0
  107. package/dist/src/backend/routers/websocket/voice.handler.d.ts.map +1 -0
  108. package/dist/src/backend/routers/websocket/voice.handler.js +46 -0
  109. package/dist/src/backend/routers/websocket/voice.handler.js.map +1 -0
  110. package/dist/src/backend/server.d.ts.map +1 -1
  111. package/dist/src/backend/server.js +3 -1
  112. package/dist/src/backend/server.js.map +1 -1
  113. package/dist/src/backend/server.upgrade.test.js +16 -0
  114. package/dist/src/backend/server.upgrade.test.js.map +1 -1
  115. package/dist/src/backend/services/ratchet/service/ratchet.service.test.js +6 -0
  116. package/dist/src/backend/services/ratchet/service/ratchet.service.test.js.map +1 -1
  117. package/dist/src/backend/services/session/service/acp/acp-client-handler.d.ts +1 -0
  118. package/dist/src/backend/services/session/service/acp/acp-client-handler.d.ts.map +1 -1
  119. package/dist/src/backend/services/session/service/acp/acp-client-handler.js +30 -0
  120. package/dist/src/backend/services/session/service/acp/acp-client-handler.js.map +1 -1
  121. package/dist/src/backend/services/session/service/acp/acp-client-handler.test.js +57 -0
  122. package/dist/src/backend/services/session/service/acp/acp-client-handler.test.js.map +1 -1
  123. package/dist/src/backend/services/session/service/acp/acp-event-translator.d.ts +1 -37
  124. package/dist/src/backend/services/session/service/acp/acp-event-translator.d.ts.map +1 -1
  125. package/dist/src/backend/services/session/service/acp/acp-event-translator.js +1 -334
  126. package/dist/src/backend/services/session/service/acp/acp-event-translator.js.map +1 -1
  127. package/dist/src/backend/services/session/service/acp/acp-event-translator.test.js +5 -484
  128. package/dist/src/backend/services/session/service/acp/acp-event-translator.test.js.map +1 -1
  129. package/dist/src/backend/services/session/service/acp/acp-process-handle.d.ts +2 -0
  130. package/dist/src/backend/services/session/service/acp/acp-process-handle.d.ts.map +1 -1
  131. package/dist/src/backend/services/session/service/acp/acp-process-handle.js +12 -0
  132. package/dist/src/backend/services/session/service/acp/acp-process-handle.js.map +1 -1
  133. package/dist/src/backend/services/session/service/acp/acp-process-handle.test.d.ts +2 -0
  134. package/dist/src/backend/services/session/service/acp/acp-process-handle.test.d.ts.map +1 -0
  135. package/dist/src/backend/services/session/service/acp/acp-process-handle.test.js +66 -0
  136. package/dist/src/backend/services/session/service/acp/acp-process-handle.test.js.map +1 -0
  137. package/dist/src/backend/services/session/service/acp/acp-runtime-events.d.ts +7 -1
  138. package/dist/src/backend/services/session/service/acp/acp-runtime-events.d.ts.map +1 -1
  139. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.d.ts +19 -1
  140. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.d.ts.map +1 -1
  141. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js +240 -54
  142. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js.map +1 -1
  143. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test.js +320 -22
  144. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test.js.map +1 -1
  145. package/dist/src/backend/services/session/service/acp/acp-session-config-options.d.ts +1 -0
  146. package/dist/src/backend/services/session/service/acp/acp-session-config-options.d.ts.map +1 -1
  147. package/dist/src/backend/services/session/service/acp/acp-session-config-options.js +4 -17
  148. package/dist/src/backend/services/session/service/acp/acp-session-config-options.js.map +1 -1
  149. package/dist/src/backend/services/session/service/acp/acp-session-config-options.test.d.ts +2 -0
  150. package/dist/src/backend/services/session/service/acp/acp-session-config-options.test.d.ts.map +1 -0
  151. package/dist/src/backend/services/session/service/acp/acp-session-config-options.test.js +121 -0
  152. package/dist/src/backend/services/session/service/acp/acp-session-config-options.test.js.map +1 -0
  153. package/dist/src/backend/services/session/service/acp/acp-session-negotiation.integration.test.js +1 -1
  154. package/dist/src/backend/services/session/service/acp/acp-session-negotiation.integration.test.js.map +1 -1
  155. package/dist/src/backend/services/session/service/acp/claude-model-catalog-loader.d.ts +7 -0
  156. package/dist/src/backend/services/session/service/acp/claude-model-catalog-loader.d.ts.map +1 -0
  157. package/dist/src/backend/services/session/service/acp/claude-model-catalog-loader.js +160 -0
  158. package/dist/src/backend/services/session/service/acp/claude-model-catalog-loader.js.map +1 -0
  159. package/dist/src/backend/services/session/service/acp/claude-model-catalog-loader.test.d.ts +2 -0
  160. package/dist/src/backend/services/session/service/acp/claude-model-catalog-loader.test.d.ts.map +1 -0
  161. package/dist/src/backend/services/session/service/acp/claude-model-catalog-loader.test.js +260 -0
  162. package/dist/src/backend/services/session/service/acp/claude-model-catalog-loader.test.js.map +1 -0
  163. package/dist/src/backend/services/session/service/acp/claude-model-options.d.ts +5 -0
  164. package/dist/src/backend/services/session/service/acp/claude-model-options.d.ts.map +1 -0
  165. package/dist/src/backend/services/session/service/acp/claude-model-options.js +25 -0
  166. package/dist/src/backend/services/session/service/acp/claude-model-options.js.map +1 -0
  167. package/dist/src/backend/services/session/service/acp/claude-model-options.test.d.ts +2 -0
  168. package/dist/src/backend/services/session/service/acp/claude-model-options.test.d.ts.map +1 -0
  169. package/dist/src/backend/services/session/service/acp/claude-model-options.test.js +49 -0
  170. package/dist/src/backend/services/session/service/acp/claude-model-options.test.js.map +1 -0
  171. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/adapter-state.d.ts +2 -0
  172. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/adapter-state.d.ts.map +1 -1
  173. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.d.ts +2 -0
  174. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.d.ts.map +1 -1
  175. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.js +64 -1
  176. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.js.map +1 -1
  177. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.manual.integration.test.js +169 -0
  178. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.manual.integration.test.js.map +1 -1
  179. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.js +251 -0
  180. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.js.map +1 -1
  181. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.d.ts +38 -0
  182. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.d.ts.map +1 -0
  183. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.js +287 -0
  184. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.js.map +1 -0
  185. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.test.d.ts +2 -0
  186. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.test.d.ts.map +1 -0
  187. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.test.js +648 -0
  188. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.test.js.map +1 -0
  189. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.d.ts +12 -0
  190. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.d.ts.map +1 -0
  191. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.js +51 -0
  192. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.js.map +1 -0
  193. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.test.d.ts +2 -0
  194. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.test.d.ts.map +1 -0
  195. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.test.js +85 -0
  196. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-mapper.test.js.map +1 -0
  197. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.d.ts +154 -19
  198. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.d.ts.map +1 -1
  199. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.js +73 -4
  200. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.js.map +1 -1
  201. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.test.js +86 -1
  202. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.test.js.map +1 -1
  203. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.d.ts +7 -0
  204. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.d.ts.map +1 -1
  205. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.js +85 -16
  206. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.js.map +1 -1
  207. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.test.js +356 -0
  208. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.test.js.map +1 -1
  209. package/dist/src/backend/services/session/service/acp/index.d.ts +2 -1
  210. package/dist/src/backend/services/session/service/acp/index.d.ts.map +1 -1
  211. package/dist/src/backend/services/session/service/acp/index.js +1 -0
  212. package/dist/src/backend/services/session/service/acp/index.js.map +1 -1
  213. package/dist/src/backend/services/session/service/acp/types.d.ts +1 -0
  214. package/dist/src/backend/services/session/service/acp/types.d.ts.map +1 -1
  215. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.d.ts +3 -0
  216. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.d.ts.map +1 -1
  217. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.js +44 -2
  218. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.js.map +1 -1
  219. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.test.d.ts +2 -0
  220. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.test.d.ts.map +1 -0
  221. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.test.js +108 -0
  222. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.test.js.map +1 -0
  223. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.d.ts.map +1 -1
  224. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.js +4 -0
  225. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.js.map +1 -1
  226. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.test.js +24 -0
  227. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.test.js.map +1 -1
  228. package/dist/src/backend/services/session/service/chat/chat-message-handlers/utils.d.ts.map +1 -1
  229. package/dist/src/backend/services/session/service/chat/chat-message-handlers/utils.js +1 -0
  230. package/dist/src/backend/services/session/service/chat/chat-message-handlers/utils.js.map +1 -1
  231. package/dist/src/backend/services/session/service/chat/chat-message-handlers/utils.test.js +17 -0
  232. package/dist/src/backend/services/session/service/chat/chat-message-handlers/utils.test.js.map +1 -1
  233. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.d.ts +2 -0
  234. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.d.ts.map +1 -1
  235. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.js +40 -11
  236. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.js.map +1 -1
  237. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.test.js +131 -2
  238. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.test.js.map +1 -1
  239. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.test.js +6 -0
  240. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.test.js.map +1 -1
  241. package/dist/src/backend/services/session/service/index.d.ts +4 -3
  242. package/dist/src/backend/services/session/service/index.d.ts.map +1 -1
  243. package/dist/src/backend/services/session/service/index.js +3 -2
  244. package/dist/src/backend/services/session/service/index.js.map +1 -1
  245. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.d.ts +1 -0
  246. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.d.ts.map +1 -1
  247. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.js +36 -26
  248. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.js.map +1 -1
  249. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.subagents.test.d.ts +2 -0
  250. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.subagents.test.d.ts.map +1 -0
  251. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.subagents.test.js +70 -0
  252. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.subagents.test.js.map +1 -0
  253. package/dist/src/backend/services/session/service/lifecycle/session.config.service.d.ts.map +1 -1
  254. package/dist/src/backend/services/session/service/lifecycle/session.config.service.js +8 -4
  255. package/dist/src/backend/services/session/service/lifecycle/session.config.service.js.map +1 -1
  256. package/dist/src/backend/services/session/service/lifecycle/session.config.service.test.js +58 -5
  257. package/dist/src/backend/services/session/service/lifecycle/session.config.service.test.js.map +1 -1
  258. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts +4 -0
  259. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts.map +1 -1
  260. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js +154 -53
  261. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js.map +1 -1
  262. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.test.js +220 -8
  263. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.test.js.map +1 -1
  264. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js +45 -7
  265. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js.map +1 -1
  266. package/dist/src/backend/services/session/service/session-domain.service.d.ts.map +1 -1
  267. package/dist/src/backend/services/session/service/session-domain.service.js +1 -0
  268. package/dist/src/backend/services/session/service/session-domain.service.js.map +1 -1
  269. package/dist/src/backend/services/session/service/store/session-store.types.d.ts +1 -1
  270. package/dist/src/backend/services/session/service/store/session-store.types.d.ts.map +1 -1
  271. package/dist/src/backend/services/session/service/voice/voice-mode-instructions.d.ts +2 -0
  272. package/dist/src/backend/services/session/service/voice/voice-mode-instructions.d.ts.map +1 -0
  273. package/dist/src/backend/services/session/service/voice/voice-mode-instructions.js +5 -0
  274. package/dist/src/backend/services/session/service/voice/voice-mode-instructions.js.map +1 -0
  275. package/dist/src/backend/services/session/service/voice/voice-narration.service.d.ts +28 -0
  276. package/dist/src/backend/services/session/service/voice/voice-narration.service.d.ts.map +1 -0
  277. package/dist/src/backend/services/session/service/voice/voice-narration.service.js +431 -0
  278. package/dist/src/backend/services/session/service/voice/voice-narration.service.js.map +1 -0
  279. package/dist/src/backend/services/session/service/voice/voice-narration.service.test.d.ts +2 -0
  280. package/dist/src/backend/services/session/service/voice/voice-narration.service.test.d.ts.map +1 -0
  281. package/dist/src/backend/services/session/service/voice/voice-narration.service.test.js +536 -0
  282. package/dist/src/backend/services/session/service/voice/voice-narration.service.test.js.map +1 -0
  283. package/dist/src/backend/services/settings/resources/user-settings.accessor.d.ts +6 -0
  284. package/dist/src/backend/services/settings/resources/user-settings.accessor.d.ts.map +1 -1
  285. package/dist/src/backend/services/settings/resources/user-settings.accessor.js +46 -17
  286. package/dist/src/backend/services/settings/resources/user-settings.accessor.js.map +1 -1
  287. package/dist/src/backend/services/settings/service/user-settings.service.d.ts +6 -0
  288. package/dist/src/backend/services/settings/service/user-settings.service.d.ts.map +1 -1
  289. package/dist/src/backend/services/settings/service/user-settings.service.js.map +1 -1
  290. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js +12 -0
  291. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js.map +1 -1
  292. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.d.ts.map +1 -1
  293. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.js +9 -12
  294. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.js.map +1 -1
  295. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.test.js +5 -4
  296. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.test.js.map +1 -1
  297. package/dist/src/backend/trpc/admin.trpc.d.ts +10 -0
  298. package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
  299. package/dist/src/backend/trpc/index.d.ts +631 -4
  300. package/dist/src/backend/trpc/index.d.ts.map +1 -1
  301. package/dist/src/backend/trpc/index.js +2 -0
  302. package/dist/src/backend/trpc/index.js.map +1 -1
  303. package/dist/src/backend/trpc/session.router.test.js +193 -2
  304. package/dist/src/backend/trpc/session.router.test.js.map +1 -1
  305. package/dist/src/backend/trpc/session.trpc.d.ts +539 -0
  306. package/dist/src/backend/trpc/session.trpc.d.ts.map +1 -1
  307. package/dist/src/backend/trpc/session.trpc.js +53 -0
  308. package/dist/src/backend/trpc/session.trpc.js.map +1 -1
  309. package/dist/src/backend/trpc/user-settings.router.test.js +117 -6
  310. package/dist/src/backend/trpc/user-settings.router.test.js.map +1 -1
  311. package/dist/src/backend/trpc/user-settings.trpc.d.ts +16 -4
  312. package/dist/src/backend/trpc/user-settings.trpc.d.ts.map +1 -1
  313. package/dist/src/backend/trpc/user-settings.trpc.js +25 -2
  314. package/dist/src/backend/trpc/user-settings.trpc.js.map +1 -1
  315. package/dist/src/backend/trpc/voice.trpc.d.ts +67 -0
  316. package/dist/src/backend/trpc/voice.trpc.d.ts.map +1 -0
  317. package/dist/src/backend/trpc/voice.trpc.js +156 -0
  318. package/dist/src/backend/trpc/voice.trpc.js.map +1 -0
  319. package/dist/src/backend/trpc/voice.trpc.test.d.ts +2 -0
  320. package/dist/src/backend/trpc/voice.trpc.test.d.ts.map +1 -0
  321. package/dist/src/backend/trpc/voice.trpc.test.js +259 -0
  322. package/dist/src/backend/trpc/voice.trpc.test.js.map +1 -0
  323. package/dist/src/shared/acp-protocol/index.d.ts +2 -0
  324. package/dist/src/shared/acp-protocol/index.d.ts.map +1 -1
  325. package/dist/src/shared/acp-protocol/index.js +2 -0
  326. package/dist/src/shared/acp-protocol/index.js.map +1 -1
  327. package/dist/src/shared/acp-protocol/protocol/queued.d.ts +1 -0
  328. package/dist/src/shared/acp-protocol/protocol/queued.d.ts.map +1 -1
  329. package/dist/src/shared/acp-protocol/protocol/websocket.d.ts +7 -0
  330. package/dist/src/shared/acp-protocol/protocol/websocket.d.ts.map +1 -1
  331. package/dist/src/shared/acp-protocol/protocol/websocket.js +1 -0
  332. package/dist/src/shared/acp-protocol/protocol/websocket.js.map +1 -1
  333. package/dist/src/shared/acp-protocol/session-update-translator.d.ts +39 -0
  334. package/dist/src/shared/acp-protocol/session-update-translator.d.ts.map +1 -0
  335. package/dist/src/shared/acp-protocol/session-update-translator.js +356 -0
  336. package/dist/src/shared/acp-protocol/session-update-translator.js.map +1 -0
  337. package/dist/src/shared/acp-protocol/subagents.d.ts +1175 -0
  338. package/dist/src/shared/acp-protocol/subagents.d.ts.map +1 -0
  339. package/dist/src/shared/acp-protocol/subagents.js +259 -0
  340. package/dist/src/shared/acp-protocol/subagents.js.map +1 -0
  341. package/dist/src/shared/core/enums.d.ts +1 -0
  342. package/dist/src/shared/core/enums.d.ts.map +1 -1
  343. package/dist/src/shared/core/enums.js +1 -0
  344. package/dist/src/shared/core/enums.js.map +1 -1
  345. package/dist/src/shared/deepgram-voices.d.ts +12 -0
  346. package/dist/src/shared/deepgram-voices.d.ts.map +1 -0
  347. package/dist/src/shared/deepgram-voices.js +51 -0
  348. package/dist/src/shared/deepgram-voices.js.map +1 -0
  349. package/dist/src/shared/schemas/export-data.schema.d.ts +10 -0
  350. package/dist/src/shared/schemas/export-data.schema.d.ts.map +1 -1
  351. package/dist/src/shared/schemas/export-data.schema.js +19 -0
  352. package/dist/src/shared/schemas/export-data.schema.js.map +1 -1
  353. package/dist/src/shared/voice-vad.d.ts +11 -0
  354. package/dist/src/shared/voice-vad.d.ts.map +1 -0
  355. package/dist/src/shared/voice-vad.js +19 -0
  356. package/dist/src/shared/voice-vad.js.map +1 -0
  357. package/dist/src/shared/websocket/chat-message.schema.d.ts +1 -0
  358. package/dist/src/shared/websocket/chat-message.schema.d.ts.map +1 -1
  359. package/dist/src/shared/websocket/chat-message.schema.js +1 -0
  360. package/dist/src/shared/websocket/chat-message.schema.js.map +1 -1
  361. package/dist/src/shared/websocket/voice-message.schema.d.ts +25 -0
  362. package/dist/src/shared/websocket/voice-message.schema.d.ts.map +1 -0
  363. package/dist/src/shared/websocket/voice-message.schema.js +14 -0
  364. package/dist/src/shared/websocket/voice-message.schema.js.map +1 -0
  365. package/dist/src/shared/workspace-snapshot.d.ts +5 -5
  366. package/dist/src/test-utils/application-graph.d.ts.map +1 -1
  367. package/dist/src/test-utils/application-graph.js +7 -1
  368. package/dist/src/test-utils/application-graph.js.map +1 -1
  369. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  370. package/package.json +6 -6
  371. package/prisma/migrations/20260802152257_add_voice_mode_settings/migration.sql +34 -0
  372. package/prisma/migrations/20260802200414_add_voice_tts_model_and_speed/migration.sql +36 -0
  373. package/prisma/migrations/20260807222320_voice_vad_aggressiveness_settings/migration.sql +38 -0
  374. package/prisma/schema.prisma +9 -0
  375. package/dist/client/assets/architectureDiagram-ZJ3FMSHR-BZgeaNrI.js +0 -36
  376. package/dist/client/assets/channel-zAL33ya-.js +0 -1
  377. package/dist/client/assets/classDiagram-OUVF2IWQ-Dksz7rAA.js +0 -1
  378. package/dist/client/assets/classDiagram-v2-EOCWNBFH-Dksz7rAA.js +0 -1
  379. package/dist/client/assets/diagram-WEI45ONY-up5rQ6My.js +0 -41
  380. package/dist/client/assets/index-BZQlu-dZ.js +0 -694
  381. package/dist/client/assets/index-CwfNzqG5.css +0 -1
  382. package/dist/client/assets/stateDiagram-v2-6OUMAXLB-DA02HYvU.js +0 -1
  383. package/dist/client/assets/swimlanesDiagram-G3AALYLV-CbfcpXpQ.js +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.types.d.ts","sourceRoot":"","sources":["../../../../../../../src/backend/services/session/service/store/session-store.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC;IACpD,WAAW,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC,GAAG;QACxE,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,OAAO,GAAG,cAAc,GAAG,MAAM,CAAC;IAC3D,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,gBAAgB,EAAE,sBAAsB,EAAE,CAAC;IAC3C,yBAAyB,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC5D,OAAO,EAAE,mBAAmB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,SAAS,GACT,uBAAuB,GACvB,SAAS,GACT,SAAS,GACT,qBAAqB,GACrB,2BAA2B,GAC3B,qBAAqB,GACrB,yBAAyB,GACzB,oBAAoB,GACpB,eAAe,GACf,aAAa,GACb,qBAAqB,CAAC"}
1
+ {"version":3,"file":"session-store.types.d.ts","sourceRoot":"","sources":["../../../../../../../src/backend/services/session/service/store/session-store.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC;IACpD,WAAW,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW,GAAG,aAAa,GAAG,WAAW,CAAC,GAAG;QACtF,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,OAAO,GAAG,cAAc,GAAG,MAAM,CAAC;IAC3D,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,gBAAgB,EAAE,sBAAsB,EAAE,CAAC;IAC3C,yBAAyB,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC5D,OAAO,EAAE,mBAAmB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,SAAS,GACT,uBAAuB,GACvB,SAAS,GACT,SAAS,GACT,qBAAqB,GACrB,2BAA2B,GAC3B,qBAAqB,GACrB,yBAAyB,GACzB,oBAAoB,GACpB,eAAe,GACf,aAAa,GACb,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const VOICE_MODE_BREVITY_INSTRUCTION: string;
2
+ //# sourceMappingURL=voice-mode-instructions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-mode-instructions.d.ts","sourceRoot":"","sources":["../../../../../../../src/backend/services/session/service/voice/voice-mode-instructions.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,8BAA8B,QAIkC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export const VOICE_MODE_BREVITY_INSTRUCTION = 'The user is speaking to you by voice and will hear this reply read aloud via text-to-speech, ' +
2
+ 'not read it on screen. Keep the reply to 2-4 short sentences for a straightforward answer. ' +
3
+ 'Avoid headers, bullet/numbered lists, tables, and code blocks unless the content genuinely ' +
4
+ "can't be conveyed without them — describe steps in flowing prose instead.";
5
+ //# sourceMappingURL=voice-mode-instructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-mode-instructions.js","sourceRoot":"","sources":["../../../../../../../src/backend/services/session/service/voice/voice-mode-instructions.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,8BAA8B,GACzC,+FAA+F;IAC/F,6FAA6F;IAC7F,6FAA6F;IAC7F,2EAA2E,CAAC"}
@@ -0,0 +1,28 @@
1
+ import WebSocket from 'ws';
2
+ declare class VoiceNarrationService {
3
+ private readonly connections;
4
+ private readonly turns;
5
+ private busListenerAttached;
6
+ registerConnection(sessionId: string, ws: WebSocket): void;
7
+ unregisterConnection(sessionId: string, ws: WebSocket): void;
8
+ isCurrentConnection(sessionId: string, ws: WebSocket): boolean;
9
+ hasActiveConnection(sessionId: string): boolean;
10
+ cancelNarration(sessionId: string): void;
11
+ private resetTurnNarration;
12
+ private attachBusListener;
13
+ private handleEvent;
14
+ private handleRuntimeUpdate;
15
+ private handleFinalTextDelta;
16
+ private maybeStartNextFinalClause;
17
+ private handleThinkingDelta;
18
+ private startNarration;
19
+ private clearActiveNarration;
20
+ private settleNarration;
21
+ private speakClause;
22
+ private handleTtsControlMessage;
23
+ private parseControlMessage;
24
+ private forwardAudioChunk;
25
+ }
26
+ export declare const voiceNarrationService: VoiceNarrationService;
27
+ export {};
28
+ //# sourceMappingURL=voice-narration.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-narration.service.d.ts","sourceRoot":"","sources":["../../../../../../../src/backend/services/session/service/voice/voice-narration.service.ts"],"names":[],"mappings":"AAkCA,OAAO,SAAS,MAAM,IAAI,CAAC;AAkK3B,cAAM,qBAAqB;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,mBAAmB,CAAS;IAEpC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI;IAuB1D,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI;IAsB5D,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO;IAY9D,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAa/C,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAgBxC,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,mBAAmB;IAuD3B,OAAO,CAAC,oBAAoB;IA8C5B,OAAO,CAAC,yBAAyB;IAWjC,OAAO,CAAC,mBAAmB;IAmC3B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,eAAe;YAYT,WAAW;IAgJzB,OAAO,CAAC,uBAAuB;IAkB/B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,iBAAiB;CAsB1B;AAED,eAAO,MAAM,qBAAqB,uBAA8B,CAAC"}
@@ -0,0 +1,431 @@
1
+ import WebSocket from 'ws';
2
+ import { safeSend, sendStreamOutput } from '../../../../../backend/lib/websocket-send.js';
3
+ import { cryptoService } from '../../../../../backend/services/crypto.service.js';
4
+ import { createLogger } from '../../../../../backend/services/logger.service.js';
5
+ import { SESSION_OUTBOUND_EVENT, sessionEventBus, } from '../../../../../backend/services/session/service/session-event-bus.js';
6
+ import { userSettingsService } from '../../../../../backend/services/settings/index.js';
7
+ const logger = createLogger('voice-narration');
8
+ const DEEPGRAM_TTS_URL = 'wss://api.deepgram.com/v1/speak';
9
+ const TTS_ENCODING = 'linear16';
10
+ const TTS_SAMPLE_RATE = 24_000;
11
+ const CLAUSE_BOUNDARY_PATTERN = /[.!?](?:\s|$)/;
12
+ const MAX_CLAUSE_LENGTH = 220;
13
+ const MIN_CLAUSE_LENGTH = 12;
14
+ function createTurnState() {
15
+ return {
16
+ finalTextBuffer: '',
17
+ finalClauseQueue: [],
18
+ thinkingBuffer: '',
19
+ suppressThinking: false,
20
+ activeTts: null,
21
+ voiceSettings: null,
22
+ generation: 0,
23
+ stopped: false,
24
+ };
25
+ }
26
+ function extractClause(buffer) {
27
+ let searchFrom = 0;
28
+ while (true) {
29
+ const match = buffer.slice(searchFrom).match(CLAUSE_BOUNDARY_PATTERN);
30
+ if (match?.index === undefined) {
31
+ break;
32
+ }
33
+ const end = searchFrom + match.index + match[0].length;
34
+ const clause = buffer.slice(0, end).trim();
35
+ if (clause.length >= MIN_CLAUSE_LENGTH) {
36
+ return { clause, remainder: buffer.slice(end) };
37
+ }
38
+ searchFrom = end;
39
+ }
40
+ if (buffer.length >= MAX_CLAUSE_LENGTH) {
41
+ const lastSpace = buffer.lastIndexOf(' ', MAX_CLAUSE_LENGTH);
42
+ const end = lastSpace > MIN_CLAUSE_LENGTH ? lastSpace : MAX_CLAUSE_LENGTH;
43
+ return { clause: buffer.slice(0, end).trim(), remainder: buffer.slice(end) };
44
+ }
45
+ return null;
46
+ }
47
+ function stripMarkdownForSpeech(text) {
48
+ return text
49
+ .replace(/```[\w-]*\n?/g, '')
50
+ .replace(/`([^`]+)`/g, '$1')
51
+ .replace(/!\[([^\]]*)\]\([^)]*\)/g, '$1')
52
+ .replace(/\[([^\]]+)\]\([^)]*\)/g, '$1')
53
+ .replace(/(\*\*\*|___)(.+?)\1/g, '$2')
54
+ .replace(/(\*\*|__)(.+?)\1/g, '$2')
55
+ .replace(/(?<![\w*])\*(?!\s)([^*\n]*[^\s*\n])\*(?!\w)/g, '$1')
56
+ .replace(/(?<![\w_])_([^_\n]+)_(?!\w)/g, '$1')
57
+ .replace(/~~(.+?)~~/g, '$1')
58
+ .replace(/^#{1,6}\s+/gm, '')
59
+ .replace(/^>\s?/gm, '')
60
+ .replace(/^\s*[-*+]\s+/gm, '')
61
+ .replace(/^\s*\d+\.\s+/gm, '')
62
+ .replace(/^\s*([-*_])\1{2,}\s*$/gm, '')
63
+ .replace(/[ \t]{2,}/g, ' ')
64
+ .trim();
65
+ }
66
+ function extractThinkingDelta(payload) {
67
+ if (payload.type !== 'session_delta' || payload.data.type !== 'agent_message') {
68
+ return null;
69
+ }
70
+ const inner = payload.data.data;
71
+ if (inner.type !== 'stream_event') {
72
+ return null;
73
+ }
74
+ const streamEvent = inner.event;
75
+ if (!streamEvent || streamEvent.type !== 'content_block_delta') {
76
+ return null;
77
+ }
78
+ const { delta } = streamEvent;
79
+ return delta.type === 'thinking_delta' ? delta.thinking : null;
80
+ }
81
+ class VoiceNarrationService {
82
+ connections = new Map();
83
+ turns = new Map();
84
+ busListenerAttached = false;
85
+ registerConnection(sessionId, ws) {
86
+ const previousTurn = this.turns.get(sessionId);
87
+ if (previousTurn) {
88
+ this.resetTurnNarration(sessionId, previousTurn);
89
+ }
90
+ this.connections.set(sessionId, ws);
91
+ this.turns.set(sessionId, createTurnState());
92
+ this.attachBusListener();
93
+ }
94
+ unregisterConnection(sessionId, ws) {
95
+ if (this.connections.get(sessionId) !== ws) {
96
+ return;
97
+ }
98
+ this.connections.delete(sessionId);
99
+ const turn = this.turns.get(sessionId);
100
+ if (turn) {
101
+ this.resetTurnNarration(sessionId, turn);
102
+ }
103
+ this.turns.delete(sessionId);
104
+ }
105
+ isCurrentConnection(sessionId, ws) {
106
+ return this.connections.get(sessionId) === ws;
107
+ }
108
+ hasActiveConnection(sessionId) {
109
+ return this.connections.has(sessionId);
110
+ }
111
+ cancelNarration(sessionId) {
112
+ const turn = this.turns.get(sessionId);
113
+ if (!turn) {
114
+ return;
115
+ }
116
+ turn.stopped = true;
117
+ this.resetTurnNarration(sessionId, turn);
118
+ const ws = this.connections.get(sessionId);
119
+ if (ws) {
120
+ const clearMessage = { type: 'clear_playback' };
121
+ safeSend(ws, JSON.stringify(clearMessage), logger, 'voice clear_playback');
122
+ }
123
+ }
124
+ resetTurnNarration(sessionId, turn) {
125
+ turn.finalClauseQueue = [];
126
+ turn.finalTextBuffer = '';
127
+ turn.thinkingBuffer = '';
128
+ if (turn.activeTts) {
129
+ this.clearActiveNarration(sessionId, turn.activeTts);
130
+ }
131
+ }
132
+ attachBusListener() {
133
+ if (this.busListenerAttached) {
134
+ return;
135
+ }
136
+ this.busListenerAttached = true;
137
+ sessionEventBus.on(SESSION_OUTBOUND_EVENT, (event) => {
138
+ try {
139
+ this.handleEvent(event);
140
+ }
141
+ catch (error) {
142
+ logger.error('Voice narration handler failed; chat delivery is unaffected', {
143
+ error: error instanceof Error ? error.message : String(error),
144
+ });
145
+ }
146
+ });
147
+ }
148
+ handleEvent(event) {
149
+ const ws = this.connections.get(event.sessionId);
150
+ if (!ws) {
151
+ return;
152
+ }
153
+ const turn = this.turns.get(event.sessionId);
154
+ if (!turn) {
155
+ return;
156
+ }
157
+ const { payload } = event;
158
+ if (payload.type === 'session_delta' && payload.data.type === 'assistant_text_delta') {
159
+ this.handleFinalTextDelta(event.sessionId, ws, turn, payload.data.text);
160
+ return;
161
+ }
162
+ const thinkingText = extractThinkingDelta(payload);
163
+ if (thinkingText !== null) {
164
+ this.handleThinkingDelta(event.sessionId, ws, turn, thinkingText);
165
+ return;
166
+ }
167
+ if (payload.type === 'session_delta' && payload.data.type === 'session_runtime_updated') {
168
+ this.handleRuntimeUpdate(event.sessionId, ws, turn, payload.data.sessionRuntime.activity);
169
+ }
170
+ }
171
+ handleRuntimeUpdate(sessionId, ws, turn, activity) {
172
+ if (activity === 'WORKING') {
173
+ if (turn.activeTts) {
174
+ this.clearActiveNarration(sessionId, turn.activeTts);
175
+ const clearMessage = { type: 'clear_playback' };
176
+ safeSend(ws, JSON.stringify(clearMessage), logger, 'voice clear_playback');
177
+ }
178
+ turn.finalTextBuffer = '';
179
+ turn.finalClauseQueue = [];
180
+ turn.thinkingBuffer = '';
181
+ turn.suppressThinking = false;
182
+ turn.voiceSettings = null;
183
+ turn.generation += 1;
184
+ turn.stopped = false;
185
+ return;
186
+ }
187
+ if (turn.stopped) {
188
+ logger.info('Turn complete after cancellation — nothing to speak', { sessionId });
189
+ return;
190
+ }
191
+ const trailing = turn.finalTextBuffer.trim();
192
+ if (trailing.length > 0) {
193
+ turn.finalClauseQueue.push(trailing);
194
+ turn.finalTextBuffer = '';
195
+ }
196
+ if (turn.finalClauseQueue.length > 0) {
197
+ logger.info('Turn complete, draining remaining final clauses', {
198
+ sessionId,
199
+ queueLength: turn.finalClauseQueue.length,
200
+ });
201
+ this.maybeStartNextFinalClause(sessionId, ws, turn);
202
+ }
203
+ else {
204
+ logger.info('Turn complete with no remaining text — nothing to speak', { sessionId });
205
+ }
206
+ }
207
+ handleFinalTextDelta(sessionId, ws, turn, text) {
208
+ if (turn.stopped) {
209
+ return;
210
+ }
211
+ if (!turn.suppressThinking) {
212
+ turn.suppressThinking = true;
213
+ turn.thinkingBuffer = '';
214
+ if (turn.activeTts?.kind === 'thinking') {
215
+ this.clearActiveNarration(sessionId, turn.activeTts);
216
+ const clearMessage = { type: 'clear_playback' };
217
+ safeSend(ws, JSON.stringify(clearMessage), logger, 'voice clear_playback');
218
+ }
219
+ }
220
+ turn.finalTextBuffer += text;
221
+ let extracted = extractClause(turn.finalTextBuffer);
222
+ while (extracted) {
223
+ turn.finalClauseQueue.push(extracted.clause);
224
+ turn.finalTextBuffer = extracted.remainder;
225
+ extracted = extractClause(turn.finalTextBuffer);
226
+ }
227
+ this.maybeStartNextFinalClause(sessionId, ws, turn);
228
+ }
229
+ maybeStartNextFinalClause(sessionId, ws, turn) {
230
+ if (turn.activeTts) {
231
+ return;
232
+ }
233
+ const next = turn.finalClauseQueue.shift();
234
+ if (next === undefined) {
235
+ return;
236
+ }
237
+ this.startNarration(sessionId, ws, turn, next, 'final');
238
+ }
239
+ handleThinkingDelta(sessionId, ws, turn, deltaText) {
240
+ if (turn.stopped) {
241
+ return;
242
+ }
243
+ if (turn.suppressThinking || turn.activeTts) {
244
+ return;
245
+ }
246
+ turn.thinkingBuffer += deltaText;
247
+ const extracted = extractClause(turn.thinkingBuffer);
248
+ if (!extracted) {
249
+ return;
250
+ }
251
+ turn.thinkingBuffer = '';
252
+ this.startNarration(sessionId, ws, turn, extracted.clause, 'thinking');
253
+ }
254
+ startNarration(sessionId, ws, turn, rawText, kind) {
255
+ const active = { socket: null, kind, cancelled: false };
256
+ turn.activeTts = active;
257
+ void this.speakClause(sessionId, ws, turn, rawText, active);
258
+ }
259
+ clearActiveNarration(sessionId, active) {
260
+ active.cancelled = true;
261
+ if (!active.socket) {
262
+ return;
263
+ }
264
+ try {
265
+ if (active.socket.readyState === WebSocket.OPEN) {
266
+ active.socket.send(JSON.stringify({ type: 'Clear' }));
267
+ }
268
+ }
269
+ catch (error) {
270
+ logger.error('Failed to clear in-flight Deepgram TTS narration', {
271
+ error: error instanceof Error ? error.message : String(error),
272
+ sessionId,
273
+ });
274
+ }
275
+ }
276
+ settleNarration(sessionId, ws, turn, active) {
277
+ if (turn.activeTts === active) {
278
+ turn.activeTts = null;
279
+ }
280
+ this.maybeStartNextFinalClause(sessionId, ws, turn);
281
+ }
282
+ async speakClause(sessionId, ws, turn, rawText, active) {
283
+ try {
284
+ let cached = turn.voiceSettings;
285
+ if (!cached) {
286
+ const generation = turn.generation;
287
+ const settings = await userSettingsService.get();
288
+ if (active.cancelled) {
289
+ this.settleNarration(sessionId, ws, turn, active);
290
+ return;
291
+ }
292
+ if (!(settings.voiceModeEnabled && settings.deepgramApiKeyEncrypted)) {
293
+ logger.info('Skipping narration — voice mode disabled or no key configured', {
294
+ sessionId,
295
+ voiceModeEnabled: settings.voiceModeEnabled,
296
+ hasApiKey: Boolean(settings.deepgramApiKeyEncrypted),
297
+ });
298
+ this.settleNarration(sessionId, ws, turn, active);
299
+ return;
300
+ }
301
+ cached = { settings, apiKey: cryptoService.decrypt(settings.deepgramApiKeyEncrypted) };
302
+ if (turn.generation === generation) {
303
+ turn.voiceSettings = cached;
304
+ }
305
+ }
306
+ const { settings, apiKey } = cached;
307
+ const text = stripMarkdownForSpeech(rawText);
308
+ if (!text) {
309
+ this.settleNarration(sessionId, ws, turn, active);
310
+ return;
311
+ }
312
+ const params = new URLSearchParams({
313
+ model: settings.voiceTtsModel,
314
+ encoding: TTS_ENCODING,
315
+ sample_rate: String(TTS_SAMPLE_RATE),
316
+ speed: String(settings.voiceTtsSpeed),
317
+ });
318
+ logger.info('Opening Deepgram TTS connection', {
319
+ sessionId,
320
+ kind: active.kind,
321
+ textLength: text.length,
322
+ model: settings.voiceTtsModel,
323
+ speed: settings.voiceTtsSpeed,
324
+ });
325
+ const ttsSocket = new WebSocket(`${DEEPGRAM_TTS_URL}?${params.toString()}`, {
326
+ headers: { Authorization: `Token ${apiKey}` },
327
+ });
328
+ active.socket = ttsSocket;
329
+ let chunkCount = 0;
330
+ let byteCount = 0;
331
+ await new Promise((resolve) => {
332
+ const finish = () => {
333
+ logger.info('Finished Deepgram TTS narration', {
334
+ sessionId,
335
+ kind: active.kind,
336
+ chunkCount,
337
+ byteCount,
338
+ });
339
+ ttsSocket.removeAllListeners();
340
+ if (ttsSocket.readyState === WebSocket.OPEN ||
341
+ ttsSocket.readyState === WebSocket.CONNECTING) {
342
+ ttsSocket.close();
343
+ }
344
+ resolve();
345
+ this.settleNarration(sessionId, ws, turn, active);
346
+ };
347
+ ttsSocket.on('open', () => {
348
+ if (active.cancelled) {
349
+ finish();
350
+ return;
351
+ }
352
+ try {
353
+ ttsSocket.send(JSON.stringify({ type: 'Speak', text }));
354
+ ttsSocket.send(JSON.stringify({ type: 'Flush' }));
355
+ }
356
+ catch (error) {
357
+ logger.error('Failed to send text to Deepgram TTS', {
358
+ error: error instanceof Error ? error.message : String(error),
359
+ sessionId,
360
+ });
361
+ finish();
362
+ }
363
+ });
364
+ ttsSocket.on('message', (data, isBinary) => {
365
+ if (!this.connections.has(sessionId)) {
366
+ finish();
367
+ return;
368
+ }
369
+ if (isBinary) {
370
+ if (active.cancelled) {
371
+ return;
372
+ }
373
+ chunkCount += 1;
374
+ byteCount += data.length;
375
+ this.forwardAudioChunk(sessionId, ws, data);
376
+ return;
377
+ }
378
+ const message = this.parseControlMessage(data);
379
+ logger.info('Deepgram TTS control message', { sessionId, message });
380
+ this.handleTtsControlMessage(ttsSocket, message, finish);
381
+ });
382
+ ttsSocket.on('error', (error) => {
383
+ logger.error('Deepgram TTS connection error', { error: error.message, sessionId });
384
+ finish();
385
+ });
386
+ ttsSocket.on('close', finish);
387
+ });
388
+ }
389
+ catch (error) {
390
+ logger.error('Voice narration clause failed', {
391
+ sessionId,
392
+ kind: active.kind,
393
+ error: error instanceof Error ? error.message : String(error),
394
+ });
395
+ this.settleNarration(sessionId, ws, turn, active);
396
+ }
397
+ }
398
+ handleTtsControlMessage(ttsSocket, message, finish) {
399
+ if (message?.type === 'Flushed') {
400
+ try {
401
+ ttsSocket.send(JSON.stringify({ type: 'Close' }));
402
+ }
403
+ catch {
404
+ }
405
+ finish();
406
+ }
407
+ else if (message?.type === 'Cleared') {
408
+ finish();
409
+ }
410
+ }
411
+ parseControlMessage(data) {
412
+ try {
413
+ const parsed = JSON.parse(data.toString('utf8'));
414
+ return parsed && typeof parsed === 'object' && typeof parsed.type === 'string'
415
+ ? parsed
416
+ : null;
417
+ }
418
+ catch {
419
+ return null;
420
+ }
421
+ }
422
+ forwardAudioChunk(sessionId, ws, data) {
423
+ const message = {
424
+ type: 'audio_chunk',
425
+ data: data.toString('base64'),
426
+ };
427
+ sendStreamOutput(ws, JSON.stringify(message), logger, `voice audio chunk (session ${sessionId})`);
428
+ }
429
+ }
430
+ export const voiceNarrationService = new VoiceNarrationService();
431
+ //# sourceMappingURL=voice-narration.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-narration.service.js","sourceRoot":"","sources":["../../../../../../../src/backend/services/session/service/voice/voice-narration.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=voice-narration.service.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-narration.service.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/backend/services/session/service/voice/voice-narration.service.test.ts"],"names":[],"mappings":""}