crewly 1.6.5 → 1.8.0

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 (338) hide show
  1. package/config/constants.ts +2 -0
  2. package/config/roles/auditor/prompt.md +24 -0
  3. package/config/roles/developer/prompt.md +2 -1
  4. package/config/roles/orchestrator/prompt.md +118 -2
  5. package/config/roles/team-leader/prompt.md +6 -0
  6. package/config/skills/agent/core/create-request/SKILL.md +1 -1
  7. package/config/skills/agent/core/create-request/execute.sh +29 -2
  8. package/config/skills/agent/core/create-request/execute.test.sh +168 -0
  9. package/config/skills/agent/core/report-status/SKILL.md +8 -1
  10. package/config/skills/agent/core/report-status/execute.sh +23 -1
  11. package/config/skills/orchestrator/heartbeat/execute.sh +48 -6
  12. package/config/sops/common/mid-flight-milestone-surface.md +128 -0
  13. package/config/sops/common/owner-facing-communication.md +46 -2
  14. package/config/sops/developer/git-workflow.md +33 -0
  15. package/dist/backend/backend/src/constants.d.ts +13 -0
  16. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  17. package/dist/backend/backend/src/constants.js +12 -0
  18. package/dist/backend/backend/src/constants.js.map +1 -1
  19. package/dist/backend/backend/src/controllers/browser/browser.controller.js +2 -2
  20. package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
  21. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  22. package/dist/backend/backend/src/controllers/chat/chat.controller.js +6 -0
  23. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  24. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +73 -0
  25. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
  26. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +128 -0
  27. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
  28. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts +3 -0
  29. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts.map +1 -1
  30. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js +8 -0
  31. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js.map +1 -1
  32. package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
  33. package/dist/backend/backend/src/controllers/session/session.controller.js +50 -8
  34. package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
  35. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  36. package/dist/backend/backend/src/controllers/slack/slack.controller.js +215 -94
  37. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  38. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  39. package/dist/backend/backend/src/controllers/team/team.controller.js +27 -0
  40. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  41. package/dist/backend/backend/src/index.d.ts +1 -0
  42. package/dist/backend/backend/src/index.d.ts.map +1 -1
  43. package/dist/backend/backend/src/index.js +201 -37
  44. package/dist/backend/backend/src/index.js.map +1 -1
  45. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  46. package/dist/backend/backend/src/routes/api.routes.js +11 -1
  47. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  48. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +45 -3
  49. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  50. package/dist/backend/backend/src/services/agent/agent-registration.service.js +219 -7
  51. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  52. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +61 -1
  53. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +1 -1
  54. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +117 -9
  55. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +1 -1
  56. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +44 -0
  57. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  58. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +179 -10
  59. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  60. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts +6 -6
  61. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts.map +1 -1
  62. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js +3 -3
  63. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js.map +1 -1
  64. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +7 -1
  65. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  66. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  67. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts +33 -0
  68. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
  69. package/dist/backend/backend/src/services/agent/idle-detection.service.js +108 -4
  70. package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
  71. package/dist/backend/backend/src/services/agent/runtime-service.factory.js +4 -4
  72. package/dist/backend/backend/src/services/agent/runtime-service.factory.js.map +1 -1
  73. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +1 -1
  74. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -1
  75. package/dist/backend/backend/src/services/browser/browser-proxy.service.js +40 -2
  76. package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
  77. package/dist/backend/backend/src/services/chat/chat.service.d.ts +48 -331
  78. package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
  79. package/dist/backend/backend/src/services/chat/chat.service.js +261 -712
  80. package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
  81. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +82 -1
  82. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  83. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +120 -2
  84. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  85. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.d.ts +114 -0
  86. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.d.ts.map +1 -0
  87. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.js +182 -0
  88. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.js.map +1 -0
  89. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts +188 -0
  90. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts.map +1 -0
  91. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js +434 -0
  92. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js.map +1 -0
  93. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +401 -5
  94. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  95. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +619 -3
  96. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  97. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.d.ts +93 -0
  98. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.d.ts.map +1 -0
  99. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.js +138 -0
  100. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.js.map +1 -0
  101. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts +46 -0
  102. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -1
  103. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js +75 -0
  104. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -1
  105. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts +10 -2
  106. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -1
  107. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js +178 -10
  108. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -1
  109. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +37 -0
  110. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  111. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +71 -0
  112. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  113. package/dist/backend/backend/src/services/chat-v2/types.d.ts +33 -1
  114. package/dist/backend/backend/src/services/chat-v2/types.d.ts.map +1 -1
  115. package/dist/backend/backend/src/services/chat-v2/types.js +1 -1
  116. package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -1
  117. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +22 -0
  118. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  119. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +71 -1
  120. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  121. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +102 -1
  122. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  123. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js +61 -0
  124. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  125. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts +21 -3
  126. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts.map +1 -1
  127. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js +47 -13
  128. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js.map +1 -1
  129. package/dist/backend/backend/src/services/core/system-health.util.d.ts +25 -4
  130. package/dist/backend/backend/src/services/core/system-health.util.d.ts.map +1 -1
  131. package/dist/backend/backend/src/services/core/system-health.util.js +30 -5
  132. package/dist/backend/backend/src/services/core/system-health.util.js.map +1 -1
  133. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  134. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +22 -11
  135. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  136. package/dist/backend/backend/src/services/mcp-server.d.ts.map +1 -1
  137. package/dist/backend/backend/src/services/mcp-server.js +5 -0
  138. package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
  139. package/dist/backend/backend/src/services/mcp-tool-definitions.d.ts +4 -0
  140. package/dist/backend/backend/src/services/mcp-tool-definitions.d.ts.map +1 -1
  141. package/dist/backend/backend/src/services/mcp-tool-definitions.js +12 -1
  142. package/dist/backend/backend/src/services/mcp-tool-definitions.js.map +1 -1
  143. package/dist/backend/backend/src/services/memory/capability-inference.d.ts +73 -0
  144. package/dist/backend/backend/src/services/memory/capability-inference.d.ts.map +1 -0
  145. package/dist/backend/backend/src/services/memory/capability-inference.js +115 -0
  146. package/dist/backend/backend/src/services/memory/capability-inference.js.map +1 -0
  147. package/dist/backend/backend/src/services/memory/memory.service.d.ts +22 -1
  148. package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
  149. package/dist/backend/backend/src/services/memory/memory.service.js +81 -3
  150. package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
  151. package/dist/backend/backend/src/services/memory/project-memory.service.d.ts +25 -1
  152. package/dist/backend/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
  153. package/dist/backend/backend/src/services/memory/project-memory.service.js +43 -0
  154. package/dist/backend/backend/src/services/memory/project-memory.service.js.map +1 -1
  155. package/dist/backend/backend/src/services/memory/task-history-seeder.d.ts +47 -0
  156. package/dist/backend/backend/src/services/memory/task-history-seeder.d.ts.map +1 -0
  157. package/dist/backend/backend/src/services/memory/task-history-seeder.js +89 -0
  158. package/dist/backend/backend/src/services/memory/task-history-seeder.js.map +1 -0
  159. package/dist/backend/backend/src/services/memory/task-history.subscriber.d.ts +76 -0
  160. package/dist/backend/backend/src/services/memory/task-history.subscriber.d.ts.map +1 -0
  161. package/dist/backend/backend/src/services/memory/task-history.subscriber.js +199 -0
  162. package/dist/backend/backend/src/services/memory/task-history.subscriber.js.map +1 -0
  163. package/dist/backend/backend/src/services/messaging/message-replay.service.d.ts +2 -4
  164. package/dist/backend/backend/src/services/messaging/message-replay.service.d.ts.map +1 -1
  165. package/dist/backend/backend/src/services/messaging/message-replay.service.js +22 -12
  166. package/dist/backend/backend/src/services/messaging/message-replay.service.js.map +1 -1
  167. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  168. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +25 -5
  169. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  170. package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.d.ts.map +1 -1
  171. package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.js +13 -3
  172. package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.js.map +1 -1
  173. package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.d.ts +99 -0
  174. package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.d.ts.map +1 -0
  175. package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.js +225 -0
  176. package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.js.map +1 -0
  177. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +39 -18
  178. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  179. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +60 -32
  180. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  181. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +134 -0
  182. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  183. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +416 -13
  184. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  185. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
  186. package/dist/backend/backend/src/services/reconciler/reconciler.service.js +73 -7
  187. package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
  188. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  189. package/dist/backend/backend/src/services/session/session-handoff.service.js +30 -4
  190. package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
  191. package/dist/backend/backend/src/services/skill/skill-executor.service.d.ts.map +1 -1
  192. package/dist/backend/backend/src/services/skill/skill-executor.service.js +13 -1
  193. package/dist/backend/backend/src/services/skill/skill-executor.service.js.map +1 -1
  194. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.d.ts.map +1 -1
  195. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js +9 -6
  196. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js.map +1 -1
  197. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +21 -2
  198. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  199. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +120 -46
  200. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  201. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  202. package/dist/backend/backend/src/services/slack/slack.service.js +49 -0
  203. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  204. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +33 -2
  205. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  206. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +160 -8
  207. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  208. package/dist/backend/backend/src/services/v3/cascade-request-status.d.ts.map +1 -1
  209. package/dist/backend/backend/src/services/v3/cascade-request-status.js +55 -2
  210. package/dist/backend/backend/src/services/v3/cascade-request-status.js.map +1 -1
  211. package/dist/backend/backend/src/services/v3/mission-executor.service.d.ts.map +1 -1
  212. package/dist/backend/backend/src/services/v3/mission-executor.service.js +9 -1
  213. package/dist/backend/backend/src/services/v3/mission-executor.service.js.map +1 -1
  214. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -1
  215. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +28 -3
  216. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -1
  217. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  218. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +5 -2
  219. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  220. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.d.ts.map +1 -1
  221. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js +57 -15
  222. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js.map +1 -1
  223. package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts +39 -0
  224. package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts.map +1 -1
  225. package/dist/backend/backend/src/services/v3/trigger-engine.service.js +81 -0
  226. package/dist/backend/backend/src/services/v3/trigger-engine.service.js.map +1 -1
  227. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +17 -1
  228. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  229. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +22 -3
  230. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  231. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts +1 -1
  232. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts.map +1 -1
  233. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js +26 -10
  234. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js.map +1 -1
  235. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
  236. package/dist/backend/backend/src/services/workflow/cron-task.service.js +68 -5
  237. package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
  238. package/dist/backend/backend/src/services/workflow/team-identifier-resolver.d.ts +44 -0
  239. package/dist/backend/backend/src/services/workflow/team-identifier-resolver.d.ts.map +1 -0
  240. package/dist/backend/backend/src/services/workflow/team-identifier-resolver.js +57 -0
  241. package/dist/backend/backend/src/services/workflow/team-identifier-resolver.js.map +1 -0
  242. package/dist/backend/backend/src/types/credential.types.d.ts +17 -1
  243. package/dist/backend/backend/src/types/credential.types.d.ts.map +1 -1
  244. package/dist/backend/backend/src/types/credential.types.js +15 -5
  245. package/dist/backend/backend/src/types/credential.types.js.map +1 -1
  246. package/dist/backend/backend/src/types/cron-task.types.d.ts +17 -0
  247. package/dist/backend/backend/src/types/cron-task.types.d.ts.map +1 -1
  248. package/dist/backend/backend/src/types/event-bus.types.d.ts +1 -1
  249. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  250. package/dist/backend/backend/src/types/event-bus.types.js +12 -0
  251. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  252. package/dist/backend/backend/src/types/intent-task.types.d.ts +10 -13
  253. package/dist/backend/backend/src/types/intent-task.types.d.ts.map +1 -1
  254. package/dist/backend/backend/src/types/intent-task.types.js +4 -1
  255. package/dist/backend/backend/src/types/intent-task.types.js.map +1 -1
  256. package/dist/backend/backend/src/types/memory.types.d.ts +94 -1
  257. package/dist/backend/backend/src/types/memory.types.d.ts.map +1 -1
  258. package/dist/backend/backend/src/types/memory.types.js.map +1 -1
  259. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +23 -0
  260. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  261. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  262. package/dist/backend/backend/src/utils/team.utils.d.ts +3 -1
  263. package/dist/backend/backend/src/utils/team.utils.d.ts.map +1 -1
  264. package/dist/backend/backend/src/utils/team.utils.js +26 -5
  265. package/dist/backend/backend/src/utils/team.utils.js.map +1 -1
  266. package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts +23 -0
  267. package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts.map +1 -1
  268. package/dist/backend/backend/src/websocket/chat-v2.gateway.js +56 -7
  269. package/dist/backend/backend/src/websocket/chat-v2.gateway.js.map +1 -1
  270. package/dist/backend/backend/src/websocket/chat.gateway.d.ts +19 -4
  271. package/dist/backend/backend/src/websocket/chat.gateway.d.ts.map +1 -1
  272. package/dist/backend/backend/src/websocket/chat.gateway.js +78 -63
  273. package/dist/backend/backend/src/websocket/chat.gateway.js.map +1 -1
  274. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  275. package/dist/backend/backend/src/websocket/terminal.gateway.js +10 -2
  276. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  277. package/dist/backend/config/constants.d.ts +2 -0
  278. package/dist/backend/config/constants.d.ts.map +1 -1
  279. package/dist/backend/config/constants.js +2 -0
  280. package/dist/backend/config/constants.js.map +1 -1
  281. package/dist/backend/config/index.d.ts +1 -0
  282. package/dist/backend/config/index.d.ts.map +1 -1
  283. package/dist/cli/backend/src/constants.d.ts +13 -0
  284. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  285. package/dist/cli/backend/src/constants.js +12 -0
  286. package/dist/cli/backend/src/constants.js.map +1 -1
  287. package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  288. package/dist/cli/backend/src/services/event-bus/event-bus.service.js +22 -11
  289. package/dist/cli/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  290. package/dist/cli/backend/src/services/mcp-server.d.ts.map +1 -1
  291. package/dist/cli/backend/src/services/mcp-server.js +5 -0
  292. package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
  293. package/dist/cli/backend/src/services/mcp-tool-definitions.d.ts +4 -0
  294. package/dist/cli/backend/src/services/mcp-tool-definitions.d.ts.map +1 -1
  295. package/dist/cli/backend/src/services/mcp-tool-definitions.js +12 -1
  296. package/dist/cli/backend/src/services/mcp-tool-definitions.js.map +1 -1
  297. package/dist/cli/backend/src/services/memory/memory.service.d.ts +22 -1
  298. package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
  299. package/dist/cli/backend/src/services/memory/memory.service.js +81 -3
  300. package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
  301. package/dist/cli/backend/src/services/memory/project-memory.service.d.ts +25 -1
  302. package/dist/cli/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
  303. package/dist/cli/backend/src/services/memory/project-memory.service.js +43 -0
  304. package/dist/cli/backend/src/services/memory/project-memory.service.js.map +1 -1
  305. package/dist/cli/backend/src/services/skill/skill-executor.service.d.ts.map +1 -1
  306. package/dist/cli/backend/src/services/skill/skill-executor.service.js +13 -1
  307. package/dist/cli/backend/src/services/skill/skill-executor.service.js.map +1 -1
  308. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +33 -2
  309. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  310. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +160 -8
  311. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  312. package/dist/cli/backend/src/types/credential.types.d.ts +17 -1
  313. package/dist/cli/backend/src/types/credential.types.d.ts.map +1 -1
  314. package/dist/cli/backend/src/types/credential.types.js +15 -5
  315. package/dist/cli/backend/src/types/credential.types.js.map +1 -1
  316. package/dist/cli/backend/src/types/event-bus.types.d.ts +1 -1
  317. package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
  318. package/dist/cli/backend/src/types/event-bus.types.js +12 -0
  319. package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
  320. package/dist/cli/backend/src/types/memory.types.d.ts +94 -1
  321. package/dist/cli/backend/src/types/memory.types.d.ts.map +1 -1
  322. package/dist/cli/backend/src/types/memory.types.js.map +1 -1
  323. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +23 -0
  324. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  325. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  326. package/dist/cli/cli/src/commands/start.js +73 -12
  327. package/dist/cli/cli/src/commands/start.js.map +1 -1
  328. package/dist/cli/config/constants.d.ts +2 -0
  329. package/dist/cli/config/constants.d.ts.map +1 -1
  330. package/dist/cli/config/constants.js +2 -0
  331. package/dist/cli/config/constants.js.map +1 -1
  332. package/dist/cli/config/index.d.ts +1 -0
  333. package/dist/cli/config/index.d.ts.map +1 -1
  334. package/frontend/dist/assets/index-b279da34.js +4926 -0
  335. package/frontend/dist/assets/{index-b7e59b2b.css → index-c07e04c0.css} +2 -2
  336. package/frontend/dist/index.html +2 -2
  337. package/package.json +1 -1
  338. package/frontend/dist/assets/index-698305f3.js +0 -5228
@@ -0,0 +1,434 @@
1
+ /**
2
+ * ChatV2RelayAdapter — bridge between the local chat-v2 service and the
3
+ * Cloud relay queue.
4
+ *
5
+ * Two responsibilities:
6
+ *
7
+ * 1. **Inbound RPC** — when a `chat_request` message lands on the local
8
+ * inbound queue, dispatch the named method against ChatV2Service (with
9
+ * the supplied `directory` / `presence` providers for the OSS-only
10
+ * methods), then return a `chat_response` to the originating device.
11
+ *
12
+ * 2. **Outbound events** — register an `onBroadcast` listener on
13
+ * {@link ChatV2Gateway} so every local broadcast (user message + agent
14
+ * reply) is also forwarded as a `chat_event` to all *known Portal
15
+ * devices* (devices that have issued a `chat_request` to this OSS
16
+ * recently). That keeps Portal UI in lockstep with the local one
17
+ * without any additional polling on Portal beyond its existing
18
+ * `/queue/poll` loop.
19
+ *
20
+ * Design notes:
21
+ * - Closed-set method dispatch via the {@link CHAT_RPC_METHODS} table;
22
+ * unknown methods produce `unsupported_method` errors so Portal sees
23
+ * a structured response rather than a hang.
24
+ * - Portal-device tracking is in-memory with an idle TTL (10 min).
25
+ * A Portal that sits silent for >TTL stops receiving chat_events;
26
+ * its next chat_request re-registers it. Survives across local OSS
27
+ * restarts via re-registration on the first chat_request, no
28
+ * persistence required.
29
+ * - Errors from ChatV2Service (ChatError) propagate verbatim via the
30
+ * response envelope so Portal can render the same error UX as the
31
+ * local OSS UI does on the REST surface.
32
+ *
33
+ * @module services/chat-v2/chat-v2.relay-adapter.service
34
+ */
35
+ import { LoggerService } from '../core/logger.service.js';
36
+ import { formatError } from '../../utils/format-error.js';
37
+ import { CHAT_RPC_METHODS, isChatRequestPayload, } from '../cloud/cloud-sync.types.js';
38
+ import { ChatError, CHAT_ERROR_CODES, } from './types.js';
39
+ // ---------------------------------------------------------------------------
40
+ // Defaults
41
+ // ---------------------------------------------------------------------------
42
+ /** Portal heartbeat — if a Portal hasn't issued any chat_request within this window, drop it. */
43
+ const DEFAULT_PORTAL_IDLE_TTL_MS = 10 * 60 * 1000;
44
+ // ---------------------------------------------------------------------------
45
+ // Implementation
46
+ // ---------------------------------------------------------------------------
47
+ /**
48
+ * Wraps a ChatV2Service so it can be driven over the Cloud relay queue
49
+ * from Cloud Portal. Single instance per running OSS process; instantiated
50
+ * by `index.ts` once both the gateway and the cloud sync are ready.
51
+ */
52
+ export class ChatV2RelayAdapter {
53
+ service;
54
+ gateway;
55
+ cloudSync;
56
+ dispatcher;
57
+ directory;
58
+ presence;
59
+ portalIdleTtlMs;
60
+ logger;
61
+ now;
62
+ /** deviceId → last-seen ms timestamp; used for the portal-idle-TTL filter. */
63
+ knownPortals = new Map();
64
+ /** Cached unsubscribe hooks so {@link stop} can detach cleanly. */
65
+ unsubscribeMessage = null;
66
+ unsubscribeBroadcast = null;
67
+ constructor(options) {
68
+ this.service = options.service;
69
+ this.gateway = options.gateway;
70
+ this.cloudSync = options.cloudSync;
71
+ this.dispatcher = options.dispatcher;
72
+ this.directory = options.directory;
73
+ this.presence = options.presence;
74
+ this.portalIdleTtlMs = options.portalIdleTtlMs ?? DEFAULT_PORTAL_IDLE_TTL_MS;
75
+ this.logger =
76
+ options.logger ??
77
+ LoggerService.getInstance().createComponentLogger('ChatV2RelayAdapter');
78
+ this.now = options.now ?? Date.now;
79
+ }
80
+ /**
81
+ * Wire the adapter to the cloud-sync inbound stream and the gateway's
82
+ * broadcast hook. Idempotent — calling twice is a logged no-op so the
83
+ * server bootstrap can be safe under partial restart sequences.
84
+ */
85
+ start() {
86
+ if (this.unsubscribeMessage || this.unsubscribeBroadcast) {
87
+ this.logger.warn('ChatV2RelayAdapter.start called twice — ignoring');
88
+ return;
89
+ }
90
+ const messageHandler = (msg) => {
91
+ if (msg.type !== 'chat_request')
92
+ return;
93
+ // Fire-and-forget; errors are caught inside handleRequest.
94
+ void this.handleRequest(msg);
95
+ };
96
+ this.cloudSync.on('message', messageHandler);
97
+ this.unsubscribeMessage = () => {
98
+ this.cloudSync.off('message', messageHandler);
99
+ };
100
+ this.unsubscribeBroadcast = this.gateway.onBroadcast((channelId, event) => this.handleBroadcast(channelId, event));
101
+ this.logger.info('ChatV2RelayAdapter started', {
102
+ portalIdleTtlMs: this.portalIdleTtlMs,
103
+ });
104
+ }
105
+ /** Detach all listeners. Safe to call during shutdown. */
106
+ stop() {
107
+ if (this.unsubscribeMessage) {
108
+ this.unsubscribeMessage();
109
+ this.unsubscribeMessage = null;
110
+ }
111
+ if (this.unsubscribeBroadcast) {
112
+ this.unsubscribeBroadcast();
113
+ this.unsubscribeBroadcast = null;
114
+ }
115
+ this.knownPortals.clear();
116
+ this.logger.info('ChatV2RelayAdapter stopped');
117
+ }
118
+ /**
119
+ * Number of currently-tracked Portal devices. Exposed for tests and
120
+ * future observability dashboards (e.g. `/api/cloud/status`).
121
+ */
122
+ knownPortalCount() {
123
+ this.pruneExpiredPortals();
124
+ return this.knownPortals.size;
125
+ }
126
+ // -------------------------------------------------------------------------
127
+ // Inbound request handling
128
+ // -------------------------------------------------------------------------
129
+ /**
130
+ * Wrap {@link dispatchRpc} with the request-envelope unwrap and reply
131
+ * round-trip. Always resolves; any error is mapped to a structured
132
+ * `chat_response` so Portal never hangs on a missing reply.
133
+ *
134
+ * @param msg - Raw IncomingMessage from CloudSyncService
135
+ */
136
+ async handleRequest(msg) {
137
+ // The production relay's `/queue/poll` response only returns
138
+ // `{id, payload, createdAt}` — sender info is dropped. To route the
139
+ // `chat_response` back to Portal, we fall back to `msg.fromDeviceName`
140
+ // (preserved verbatim from the sender's wrapper), where Portal stamps
141
+ // its own queueId. See `relay-chat-client.ts:sendOverRelay`.
142
+ const fromDevice = msg.from || msg.fromDeviceName || '';
143
+ if (!fromDevice) {
144
+ this.logger.warn('chat_request missing sender id (from + fromDeviceName both empty) — dropping', {
145
+ msgId: msg.id,
146
+ });
147
+ return;
148
+ }
149
+ if (!isChatRequestPayload(msg.payload)) {
150
+ this.logger.warn('chat_request payload failed validation — dropping', {
151
+ fromDevice,
152
+ });
153
+ return;
154
+ }
155
+ const req = msg.payload;
156
+ // Register the sender as a known Portal so future broadcasts fan to it.
157
+ this.knownPortals.set(fromDevice, this.now());
158
+ let response;
159
+ try {
160
+ const result = await this.dispatchRpc(req.method, req.params, fromDevice);
161
+ response = { id: req.id, result };
162
+ }
163
+ catch (err) {
164
+ response = {
165
+ id: req.id,
166
+ error: this.errorEnvelope(err),
167
+ };
168
+ }
169
+ try {
170
+ // Prefer the queueId-direct path when available — Portal's deviceId
171
+ // == its relay queueId, and that bypasses CloudSyncService's stale
172
+ // 30s device cache (Portal may have registered moments ago, faster
173
+ // than the poll cadence).
174
+ if (typeof this.cloudSync.sendToPeerQueueId === 'function') {
175
+ await this.cloudSync.sendToPeerQueueId(fromDevice, 'chat_response', response);
176
+ }
177
+ else {
178
+ await this.cloudSync.sendMessage(fromDevice, 'chat_response', response);
179
+ }
180
+ }
181
+ catch (err) {
182
+ // If we can't reply, log it — Portal will retry the request on
183
+ // timeout. We can't surface the failure any other way (the
184
+ // originator is the relay, not a connected socket here).
185
+ this.logger.warn('Failed to send chat_response — Portal will retry on timeout', {
186
+ fromDevice,
187
+ method: req.method,
188
+ requestId: req.id,
189
+ error: formatError(err),
190
+ });
191
+ }
192
+ }
193
+ /**
194
+ * Dispatch one of the closed-set RPC methods. Each branch maps to the
195
+ * equivalent ChatV2Service / directory / presence call.
196
+ *
197
+ * Auth model: the originating Portal device shares an account with this
198
+ * OSS (the relay's `userId` check guarantees it), so we build a
199
+ * `ChatPrincipal` from the OSS's local owner id. Portal cannot
200
+ * impersonate other users — that's enforced at the relay layer.
201
+ *
202
+ * @param method - One of {@link CHAT_RPC_METHODS}
203
+ * @param params - Method-specific args
204
+ * @param fromDevice - The originating Portal device id (for audit)
205
+ * @returns The method-specific result (any JSON-serializable value)
206
+ */
207
+ async dispatchRpc(method, params, fromDevice) {
208
+ if (!CHAT_RPC_METHODS.includes(method)) {
209
+ throw new ChatError(CHAT_ERROR_CODES.VALIDATION, 400, `unsupported_method: ${method}`);
210
+ }
211
+ const principal = this.buildPrincipal();
212
+ const p = params ?? {};
213
+ switch (method) {
214
+ case 'listAgents': {
215
+ if (!this.directory) {
216
+ throw new ChatError(CHAT_ERROR_CODES.INTERNAL, 503, 'directory_unavailable');
217
+ }
218
+ const teams = await this.directory.getTeams();
219
+ const agents = [];
220
+ for (const team of teams) {
221
+ for (const member of team.members) {
222
+ agents.push({
223
+ agentSession: member.sessionName,
224
+ name: member.name,
225
+ role: member.role,
226
+ teamId: team.id,
227
+ teamName: team.name,
228
+ agentStatus: member.agentStatus,
229
+ workingStatus: member.workingStatus,
230
+ avatar: member.avatar,
231
+ });
232
+ }
233
+ }
234
+ return { agents };
235
+ }
236
+ case 'getAgentPresence': {
237
+ if (!this.presence) {
238
+ throw new ChatError(CHAT_ERROR_CODES.INTERNAL, 503, 'presence_unavailable');
239
+ }
240
+ const agentId = this.requireString(p, 'agentId');
241
+ return this.presence.getPresence(agentId);
242
+ }
243
+ case 'listChannels': {
244
+ const channels = this.service.listChannels({
245
+ principal,
246
+ includeArchived: p['includeArchived'] === true,
247
+ limit: this.optionalNumber(p, 'limit'),
248
+ type: p['type'],
249
+ teamId: this.optionalString(p, 'teamId'),
250
+ });
251
+ return { channels, nextCursor: null };
252
+ }
253
+ case 'ensureDmChannel': {
254
+ const result = this.service.ensureDmChannel({
255
+ agentSession: this.requireString(p, 'agentSession'),
256
+ name: this.optionalString(p, 'name'),
257
+ purpose: this.optionalString(p, 'purpose'),
258
+ principal,
259
+ });
260
+ return this.serializeChannel(result.channel);
261
+ }
262
+ case 'createChannel': {
263
+ const channel = this.service.createChannel({
264
+ agentSession: this.optionalString(p, 'agentSession'),
265
+ name: this.requireString(p, 'name'),
266
+ purpose: this.optionalString(p, 'purpose'),
267
+ principal,
268
+ type: p['type'],
269
+ teamId: this.optionalString(p, 'teamId'),
270
+ projectId: this.optionalString(p, 'projectId'),
271
+ targetMemberId: this.optionalString(p, 'targetMemberId'),
272
+ });
273
+ return this.serializeChannel(channel);
274
+ }
275
+ case 'createHuddle': {
276
+ const rawMembers = Array.isArray(p['memberSessions'])
277
+ ? p['memberSessions'].filter((m) => typeof m === 'string')
278
+ : [];
279
+ const channel = this.service.createHuddle({
280
+ name: this.requireString(p, 'name'),
281
+ purpose: this.optionalString(p, 'purpose'),
282
+ memberSessions: rawMembers,
283
+ principal,
284
+ });
285
+ return this.serializeChannel(channel);
286
+ }
287
+ case 'listHuddleMembers': {
288
+ const members = this.service.listHuddleMembers(this.requireString(p, 'channelId'), principal);
289
+ return { members };
290
+ }
291
+ case 'listMessages': {
292
+ const result = this.service.listMessages({
293
+ channelId: this.requireString(p, 'channelId'),
294
+ principal,
295
+ cursor: this.optionalString(p, 'cursor') ?? null,
296
+ limit: this.optionalNumber(p, 'limit'),
297
+ direction: p['direction'] === 'forward' ? 'forward' : 'backward',
298
+ });
299
+ return result;
300
+ }
301
+ case 'sendMessage': {
302
+ const message = this.service.sendMessage({
303
+ channelId: this.requireString(p, 'channelId'),
304
+ principal,
305
+ content: this.requireString(p, 'content'),
306
+ contentType: p['contentType'],
307
+ clientMessageId: this.optionalString(p, 'clientMessageId'),
308
+ attachments: [],
309
+ mentions: Array.isArray(p['mentions'])
310
+ ? p['mentions']
311
+ : undefined,
312
+ threadId: this.optionalString(p, 'threadId'),
313
+ });
314
+ // Fire-and-forget dispatch: mirror the HTTP controller's post-ack
315
+ // path so the bound agent's PTY receives a `[CHAT:<id>]` prompt.
316
+ // Without this, Portal-sent user messages persist but agents
317
+ // never react — the user sees nothing back.
318
+ if (this.dispatcher && message.senderType === 'user') {
319
+ try {
320
+ const channel = this.service.getChannel(message.channelId, principal);
321
+ void this.dispatcher
322
+ .dispatchMessage(channel, message)
323
+ .catch((err) => {
324
+ this.logger.warn('Portal-relay dispatch threw (non-fatal)', {
325
+ channelId: message.channelId,
326
+ error: formatError(err),
327
+ });
328
+ });
329
+ }
330
+ catch (err) {
331
+ this.logger.warn('Portal-relay dispatch — getChannel failed (non-fatal)', {
332
+ channelId: message.channelId,
333
+ error: formatError(err),
334
+ });
335
+ }
336
+ }
337
+ return this.serializeMessage(message, fromDevice);
338
+ }
339
+ default: {
340
+ // Unreachable given CHAT_RPC_METHODS check above, but TypeScript
341
+ // exhaustiveness check needs the explicit throw.
342
+ throw new ChatError(CHAT_ERROR_CODES.INTERNAL, 500, `unhandled_method: ${method}`);
343
+ }
344
+ }
345
+ }
346
+ // -------------------------------------------------------------------------
347
+ // Outbound event handling
348
+ // -------------------------------------------------------------------------
349
+ /**
350
+ * Fan a gateway broadcast out to every currently-known Portal device.
351
+ * Drops expired (idle > TTL) entries inline so the set self-cleans.
352
+ *
353
+ * @param channelId - The channel whose timeline changed
354
+ * @param event - The gateway wire event (typed `unknown` here so this
355
+ * module doesn't import the WS layer's types)
356
+ */
357
+ handleBroadcast(channelId, event) {
358
+ this.pruneExpiredPortals();
359
+ if (this.knownPortals.size === 0)
360
+ return;
361
+ const payload = { channelId, event };
362
+ // Prefer queueId-direct path for the same reason as `handleRequest`
363
+ // — Portal queueIds may not be in the 30s device-poll cache.
364
+ const send = typeof this.cloudSync.sendToPeerQueueId === 'function'
365
+ ? this.cloudSync.sendToPeerQueueId.bind(this.cloudSync)
366
+ : this.cloudSync.sendMessage.bind(this.cloudSync);
367
+ for (const deviceId of this.knownPortals.keys()) {
368
+ // Fire-and-forget — log on failure but keep going.
369
+ send(deviceId, 'chat_event', payload).catch((err) => {
370
+ this.logger.warn('Failed to forward chat_event to Portal', {
371
+ deviceId,
372
+ channelId,
373
+ error: formatError(err),
374
+ });
375
+ });
376
+ }
377
+ }
378
+ /** Evict Portal device entries whose last-seen is older than the TTL. */
379
+ pruneExpiredPortals() {
380
+ const cutoff = this.now() - this.portalIdleTtlMs;
381
+ for (const [deviceId, lastSeen] of this.knownPortals.entries()) {
382
+ if (lastSeen < cutoff) {
383
+ this.knownPortals.delete(deviceId);
384
+ }
385
+ }
386
+ }
387
+ // -------------------------------------------------------------------------
388
+ // Helpers
389
+ // -------------------------------------------------------------------------
390
+ buildPrincipal() {
391
+ // Mirror the dev-anonymous principal used by the REST surface when no
392
+ // JWT secret is configured. In production OSS, this will be the
393
+ // logged-in user's id; for now (single-user OSS) it's the stable
394
+ // dev fallback that owns every chat-v2 channel.
395
+ return { userId: 'dev-user-001', source: 'oss' };
396
+ }
397
+ requireString(params, key) {
398
+ const v = params[key];
399
+ if (typeof v !== 'string' || v.length === 0) {
400
+ throw new ChatError(CHAT_ERROR_CODES.VALIDATION, 400, `${key} is required`);
401
+ }
402
+ return v;
403
+ }
404
+ optionalString(params, key) {
405
+ const v = params[key];
406
+ return typeof v === 'string' && v.length > 0 ? v : undefined;
407
+ }
408
+ optionalNumber(params, key) {
409
+ const v = params[key];
410
+ return typeof v === 'number' && Number.isFinite(v) ? v : undefined;
411
+ }
412
+ serializeChannel(channel) {
413
+ // No transformation today, but we keep the indirection so future wire
414
+ // shape divergences (e.g. omitting server-internal fields) live here.
415
+ return channel;
416
+ }
417
+ serializeMessage(message, _fromDevice) {
418
+ return message;
419
+ }
420
+ errorEnvelope(err) {
421
+ if (err instanceof ChatError) {
422
+ return {
423
+ code: err.code,
424
+ message: err.message,
425
+ details: err.details,
426
+ };
427
+ }
428
+ return {
429
+ code: 'internal_error',
430
+ message: err instanceof Error ? err.message : String(err),
431
+ };
432
+ }
433
+ }
434
+ //# sourceMappingURL=chat-v2.relay-adapter.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-v2.relay-adapter.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/chat-v2.relay-adapter.service.ts"],"names":[],"mappings":"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"}