@getpaseo/server 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. package/.env.example +20 -0
  2. package/README.md +107 -0
  3. package/agent-prompt.md +339 -0
  4. package/dist/scripts/daemon-runner.js +32 -0
  5. package/dist/scripts/daemon-runner.js.map +1 -0
  6. package/dist/scripts/dev-runner.js +19 -0
  7. package/dist/scripts/dev-runner.js.map +1 -0
  8. package/dist/scripts/mcp-stdio-socket-bridge-cli.mjs +62 -0
  9. package/dist/scripts/supervisor.js +95 -0
  10. package/dist/scripts/supervisor.js.map +1 -0
  11. package/dist/server/client/daemon-client.d.ts +383 -0
  12. package/dist/server/client/daemon-client.d.ts.map +1 -0
  13. package/dist/server/client/daemon-client.js +2443 -0
  14. package/dist/server/client/daemon-client.js.map +1 -0
  15. package/dist/server/server/agent/activity-curator.d.ts +8 -0
  16. package/dist/server/server/agent/activity-curator.d.ts.map +1 -0
  17. package/dist/server/server/agent/activity-curator.js +228 -0
  18. package/dist/server/server/agent/activity-curator.js.map +1 -0
  19. package/dist/server/server/agent/agent-management-mcp.d.ts +34 -0
  20. package/dist/server/server/agent/agent-management-mcp.d.ts.map +1 -0
  21. package/dist/server/server/agent/agent-management-mcp.js +619 -0
  22. package/dist/server/server/agent/agent-management-mcp.js.map +1 -0
  23. package/dist/server/server/agent/agent-manager.d.ts +182 -0
  24. package/dist/server/server/agent/agent-manager.d.ts.map +1 -0
  25. package/dist/server/server/agent/agent-manager.js +1066 -0
  26. package/dist/server/server/agent/agent-manager.js.map +1 -0
  27. package/dist/server/server/agent/agent-metadata-generator.d.ts +29 -0
  28. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -0
  29. package/dist/server/server/agent/agent-metadata-generator.js +157 -0
  30. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -0
  31. package/dist/server/server/agent/agent-projections.d.ts +12 -0
  32. package/dist/server/server/agent/agent-projections.d.ts.map +1 -0
  33. package/dist/server/server/agent/agent-projections.js +238 -0
  34. package/dist/server/server/agent/agent-projections.js.map +1 -0
  35. package/dist/server/server/agent/agent-response-loop.d.ts +32 -0
  36. package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -0
  37. package/dist/server/server/agent/agent-response-loop.js +224 -0
  38. package/dist/server/server/agent/agent-response-loop.js.map +1 -0
  39. package/dist/server/server/agent/agent-sdk-types.d.ts +360 -0
  40. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -0
  41. package/dist/server/server/agent/agent-sdk-types.js +2 -0
  42. package/dist/server/server/agent/agent-sdk-types.js.map +1 -0
  43. package/dist/server/server/agent/agent-storage.d.ts +187 -0
  44. package/dist/server/server/agent/agent-storage.d.ts.map +1 -0
  45. package/dist/server/server/agent/agent-storage.js +328 -0
  46. package/dist/server/server/agent/agent-storage.js.map +1 -0
  47. package/dist/server/server/agent/audio-utils.d.ts +3 -0
  48. package/dist/server/server/agent/audio-utils.d.ts.map +1 -0
  49. package/dist/server/server/agent/audio-utils.js +19 -0
  50. package/dist/server/server/agent/audio-utils.js.map +1 -0
  51. package/dist/server/server/agent/dictation-debug.d.ts +13 -0
  52. package/dist/server/server/agent/dictation-debug.d.ts.map +1 -0
  53. package/dist/server/server/agent/dictation-debug.js +50 -0
  54. package/dist/server/server/agent/dictation-debug.js.map +1 -0
  55. package/dist/server/server/agent/llm-openai.d.ts +7 -0
  56. package/dist/server/server/agent/llm-openai.d.ts.map +1 -0
  57. package/dist/server/server/agent/llm-openai.js +8 -0
  58. package/dist/server/server/agent/llm-openai.js.map +1 -0
  59. package/dist/server/server/agent/mcp-server.d.ts +26 -0
  60. package/dist/server/server/agent/mcp-server.d.ts.map +1 -0
  61. package/dist/server/server/agent/mcp-server.js +762 -0
  62. package/dist/server/server/agent/mcp-server.js.map +1 -0
  63. package/dist/server/server/agent/model-resolver.d.ts +11 -0
  64. package/dist/server/server/agent/model-resolver.d.ts.map +1 -0
  65. package/dist/server/server/agent/model-resolver.js +21 -0
  66. package/dist/server/server/agent/model-resolver.js.map +1 -0
  67. package/dist/server/server/agent/orchestrator-instructions.d.ts +7 -0
  68. package/dist/server/server/agent/orchestrator-instructions.d.ts.map +1 -0
  69. package/dist/server/server/agent/orchestrator-instructions.js +51 -0
  70. package/dist/server/server/agent/orchestrator-instructions.js.map +1 -0
  71. package/dist/server/server/agent/orchestrator.d.ts +12 -0
  72. package/dist/server/server/agent/orchestrator.d.ts.map +1 -0
  73. package/dist/server/server/agent/orchestrator.js +12 -0
  74. package/dist/server/server/agent/orchestrator.js.map +1 -0
  75. package/dist/server/server/agent/pcm16-resampler.d.ts +14 -0
  76. package/dist/server/server/agent/pcm16-resampler.d.ts.map +1 -0
  77. package/dist/server/server/agent/pcm16-resampler.js +63 -0
  78. package/dist/server/server/agent/pcm16-resampler.js.map +1 -0
  79. package/dist/server/server/agent/provider-launch-config.d.ts +139 -0
  80. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -0
  81. package/dist/server/server/agent/provider-launch-config.js +83 -0
  82. package/dist/server/server/agent/provider-launch-config.js.map +1 -0
  83. package/dist/server/server/agent/provider-manifest.d.ts +20 -0
  84. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -0
  85. package/dist/server/server/agent/provider-manifest.js +97 -0
  86. package/dist/server/server/agent/provider-manifest.js.map +1 -0
  87. package/dist/server/server/agent/provider-registry.d.ts +18 -0
  88. package/dist/server/server/agent/provider-registry.d.ts.map +1 -0
  89. package/dist/server/server/agent/provider-registry.js +45 -0
  90. package/dist/server/server/agent/provider-registry.js.map +1 -0
  91. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.d.ts +3 -0
  92. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.d.ts.map +1 -0
  93. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js +42 -0
  94. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js.map +1 -0
  95. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts +16 -0
  96. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts.map +1 -0
  97. package/dist/server/server/agent/providers/claude/tool-call-mapper.js +73 -0
  98. package/dist/server/server/agent/providers/claude/tool-call-mapper.js.map +1 -0
  99. package/dist/server/server/agent/providers/claude-agent.d.ts +35 -0
  100. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -0
  101. package/dist/server/server/agent/providers/claude-agent.js +2056 -0
  102. package/dist/server/server/agent/providers/claude-agent.js.map +1 -0
  103. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.d.ts +13 -0
  104. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.d.ts.map +1 -0
  105. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js +67 -0
  106. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js.map +1 -0
  107. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts +15 -0
  108. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -0
  109. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +640 -0
  110. package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -0
  111. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +34 -0
  112. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -0
  113. package/dist/server/server/agent/providers/codex-app-server-agent.js +2476 -0
  114. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -0
  115. package/dist/server/server/agent/providers/codex-rollout-timeline.d.ts +9 -0
  116. package/dist/server/server/agent/providers/codex-rollout-timeline.d.ts.map +1 -0
  117. package/dist/server/server/agent/providers/codex-rollout-timeline.js +486 -0
  118. package/dist/server/server/agent/providers/codex-rollout-timeline.js.map +1 -0
  119. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts +3 -0
  120. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts.map +1 -0
  121. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js +33 -0
  122. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js.map +1 -0
  123. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts +13 -0
  124. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts.map +1 -0
  125. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js +75 -0
  126. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js.map +1 -0
  127. package/dist/server/server/agent/providers/opencode-agent.d.ts +37 -0
  128. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -0
  129. package/dist/server/server/agent/providers/opencode-agent.js +822 -0
  130. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -0
  131. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +1363 -0
  132. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -0
  133. package/dist/server/server/agent/providers/tool-call-detail-primitives.js +534 -0
  134. package/dist/server/server/agent/providers/tool-call-detail-primitives.js.map +1 -0
  135. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts +18 -0
  136. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts.map +1 -0
  137. package/dist/server/server/agent/providers/tool-call-mapper-utils.js +119 -0
  138. package/dist/server/server/agent/providers/tool-call-mapper-utils.js.map +1 -0
  139. package/dist/server/server/agent/recordings-debug.d.ts +3 -0
  140. package/dist/server/server/agent/recordings-debug.d.ts.map +1 -0
  141. package/dist/server/server/agent/recordings-debug.js +19 -0
  142. package/dist/server/server/agent/recordings-debug.js.map +1 -0
  143. package/dist/server/server/agent/stt-debug.d.ts +10 -0
  144. package/dist/server/server/agent/stt-debug.d.ts.map +1 -0
  145. package/dist/server/server/agent/stt-debug.js +33 -0
  146. package/dist/server/server/agent/stt-debug.js.map +1 -0
  147. package/dist/server/server/agent/stt-manager.d.ts +32 -0
  148. package/dist/server/server/agent/stt-manager.d.ts.map +1 -0
  149. package/dist/server/server/agent/stt-manager.js +231 -0
  150. package/dist/server/server/agent/stt-manager.js.map +1 -0
  151. package/dist/server/server/agent/system-prompt.d.ts +3 -0
  152. package/dist/server/server/agent/system-prompt.d.ts.map +1 -0
  153. package/dist/server/server/agent/system-prompt.js +19 -0
  154. package/dist/server/server/agent/system-prompt.js.map +1 -0
  155. package/dist/server/server/agent/tool-name-normalization.d.ts +7 -0
  156. package/dist/server/server/agent/tool-name-normalization.d.ts.map +1 -0
  157. package/dist/server/server/agent/tool-name-normalization.js +45 -0
  158. package/dist/server/server/agent/tool-name-normalization.js.map +1 -0
  159. package/dist/server/server/agent/tts-debug.d.ts +8 -0
  160. package/dist/server/server/agent/tts-debug.d.ts.map +1 -0
  161. package/dist/server/server/agent/tts-debug.js +24 -0
  162. package/dist/server/server/agent/tts-debug.js.map +1 -0
  163. package/dist/server/server/agent/tts-manager.d.ts +33 -0
  164. package/dist/server/server/agent/tts-manager.d.ts.map +1 -0
  165. package/dist/server/server/agent/tts-manager.js +261 -0
  166. package/dist/server/server/agent/tts-manager.js.map +1 -0
  167. package/dist/server/server/agent/wait-for-agent-tracker.d.ts +15 -0
  168. package/dist/server/server/agent/wait-for-agent-tracker.d.ts.map +1 -0
  169. package/dist/server/server/agent/wait-for-agent-tracker.js +53 -0
  170. package/dist/server/server/agent/wait-for-agent-tracker.js.map +1 -0
  171. package/dist/server/server/allowed-hosts.d.ts +13 -0
  172. package/dist/server/server/allowed-hosts.d.ts.map +1 -0
  173. package/dist/server/server/allowed-hosts.js +94 -0
  174. package/dist/server/server/allowed-hosts.js.map +1 -0
  175. package/dist/server/server/bootstrap.d.ts +49 -0
  176. package/dist/server/server/bootstrap.d.ts.map +1 -0
  177. package/dist/server/server/bootstrap.js +483 -0
  178. package/dist/server/server/bootstrap.js.map +1 -0
  179. package/dist/server/server/config.d.ts +13 -0
  180. package/dist/server/server/config.d.ts.map +1 -0
  181. package/dist/server/server/config.js +84 -0
  182. package/dist/server/server/config.js.map +1 -0
  183. package/dist/server/server/connection-offer.d.ts +19 -0
  184. package/dist/server/server/connection-offer.d.ts.map +1 -0
  185. package/dist/server/server/connection-offer.js +60 -0
  186. package/dist/server/server/connection-offer.js.map +1 -0
  187. package/dist/server/server/daemon-keypair.d.ts +8 -0
  188. package/dist/server/server/daemon-keypair.d.ts.map +1 -0
  189. package/dist/server/server/daemon-keypair.js +40 -0
  190. package/dist/server/server/daemon-keypair.js.map +1 -0
  191. package/dist/server/server/dictation/dictation-stream-manager.d.ts +76 -0
  192. package/dist/server/server/dictation/dictation-stream-manager.d.ts.map +1 -0
  193. package/dist/server/server/dictation/dictation-stream-manager.js +481 -0
  194. package/dist/server/server/dictation/dictation-stream-manager.js.map +1 -0
  195. package/dist/server/server/exports.d.ts +11 -0
  196. package/dist/server/server/exports.d.ts.map +1 -0
  197. package/dist/server/server/exports.js +11 -0
  198. package/dist/server/server/exports.js.map +1 -0
  199. package/dist/server/server/file-download/token-store.d.ts +25 -0
  200. package/dist/server/server/file-download/token-store.d.ts.map +1 -0
  201. package/dist/server/server/file-download/token-store.js +40 -0
  202. package/dist/server/server/file-download/token-store.js.map +1 -0
  203. package/dist/server/server/file-explorer/service.d.ts +41 -0
  204. package/dist/server/server/file-explorer/service.d.ts.map +1 -0
  205. package/dist/server/server/file-explorer/service.js +163 -0
  206. package/dist/server/server/file-explorer/service.js.map +1 -0
  207. package/dist/server/server/index.d.ts +2 -0
  208. package/dist/server/server/index.d.ts.map +1 -0
  209. package/dist/server/server/index.js +90 -0
  210. package/dist/server/server/index.js.map +1 -0
  211. package/dist/server/server/json-utils.d.ts +11 -0
  212. package/dist/server/server/json-utils.d.ts.map +1 -0
  213. package/dist/server/server/json-utils.js +45 -0
  214. package/dist/server/server/json-utils.js.map +1 -0
  215. package/dist/server/server/logger.d.ts +12 -0
  216. package/dist/server/server/logger.d.ts.map +1 -0
  217. package/dist/server/server/logger.js +29 -0
  218. package/dist/server/server/logger.js.map +1 -0
  219. package/dist/server/server/messages.d.ts +9 -0
  220. package/dist/server/server/messages.d.ts.map +1 -0
  221. package/dist/server/server/messages.js +29 -0
  222. package/dist/server/server/messages.js.map +1 -0
  223. package/dist/server/server/pairing-offer.d.ts +16 -0
  224. package/dist/server/server/pairing-offer.d.ts.map +1 -0
  225. package/dist/server/server/pairing-offer.js +45 -0
  226. package/dist/server/server/pairing-offer.js.map +1 -0
  227. package/dist/server/server/pairing-qr.d.ts +7 -0
  228. package/dist/server/server/pairing-qr.d.ts.map +1 -0
  229. package/dist/server/server/pairing-qr.js +45 -0
  230. package/dist/server/server/pairing-qr.js.map +1 -0
  231. package/dist/server/server/paseo-home.d.ts +2 -0
  232. package/dist/server/server/paseo-home.d.ts.map +1 -0
  233. package/dist/server/server/paseo-home.js +19 -0
  234. package/dist/server/server/paseo-home.js.map +1 -0
  235. package/dist/server/server/path-utils.d.ts +3 -0
  236. package/dist/server/server/path-utils.d.ts.map +1 -0
  237. package/dist/server/server/path-utils.js +20 -0
  238. package/dist/server/server/path-utils.js.map +1 -0
  239. package/dist/server/server/persisted-config.d.ts +500 -0
  240. package/dist/server/server/persisted-config.d.ts.map +1 -0
  241. package/dist/server/server/persisted-config.js +212 -0
  242. package/dist/server/server/persisted-config.js.map +1 -0
  243. package/dist/server/server/persistence-hooks.d.ts +24 -0
  244. package/dist/server/server/persistence-hooks.d.ts.map +1 -0
  245. package/dist/server/server/persistence-hooks.js +60 -0
  246. package/dist/server/server/persistence-hooks.js.map +1 -0
  247. package/dist/server/server/pid-lock.d.ts +19 -0
  248. package/dist/server/server/pid-lock.d.ts.map +1 -0
  249. package/dist/server/server/pid-lock.js +115 -0
  250. package/dist/server/server/pid-lock.js.map +1 -0
  251. package/dist/server/server/push/push-service.d.ts +21 -0
  252. package/dist/server/server/push/push-service.d.ts.map +1 -0
  253. package/dist/server/server/push/push-service.js +68 -0
  254. package/dist/server/server/push/push-service.js.map +1 -0
  255. package/dist/server/server/push/token-store.d.ts +18 -0
  256. package/dist/server/server/push/token-store.d.ts.map +1 -0
  257. package/dist/server/server/push/token-store.js +70 -0
  258. package/dist/server/server/push/token-store.js.map +1 -0
  259. package/dist/server/server/relay-transport.d.ts +22 -0
  260. package/dist/server/server/relay-transport.d.ts.map +1 -0
  261. package/dist/server/server/relay-transport.js +374 -0
  262. package/dist/server/server/relay-transport.js.map +1 -0
  263. package/dist/server/server/server-id.d.ts +17 -0
  264. package/dist/server/server/server-id.d.ts.map +1 -0
  265. package/dist/server/server/server-id.js +63 -0
  266. package/dist/server/server/server-id.js.map +1 -0
  267. package/dist/server/server/session.d.ts +360 -0
  268. package/dist/server/server/session.d.ts.map +1 -0
  269. package/dist/server/server/session.js +4615 -0
  270. package/dist/server/server/session.js.map +1 -0
  271. package/dist/server/server/speech/audio.d.ts +10 -0
  272. package/dist/server/server/speech/audio.d.ts.map +1 -0
  273. package/dist/server/server/speech/audio.js +101 -0
  274. package/dist/server/server/speech/audio.js.map +1 -0
  275. package/dist/server/server/speech/providers/local/config.d.ts +26 -0
  276. package/dist/server/server/speech/providers/local/config.d.ts.map +1 -0
  277. package/dist/server/server/speech/providers/local/config.js +93 -0
  278. package/dist/server/server/speech/providers/local/config.js.map +1 -0
  279. package/dist/server/server/speech/providers/local/models.d.ts +12 -0
  280. package/dist/server/server/speech/providers/local/models.d.ts.map +1 -0
  281. package/dist/server/server/speech/providers/local/models.js +18 -0
  282. package/dist/server/server/speech/providers/local/models.js.map +1 -0
  283. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.d.ts +24 -0
  284. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.d.ts.map +1 -0
  285. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js +422 -0
  286. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js.map +1 -0
  287. package/dist/server/server/speech/providers/local/runtime.d.ts +30 -0
  288. package/dist/server/server/speech/providers/local/runtime.d.ts.map +1 -0
  289. package/dist/server/server/speech/providers/local/runtime.js +254 -0
  290. package/dist/server/server/speech/providers/local/runtime.js.map +1 -0
  291. package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts +117 -0
  292. package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts.map +1 -0
  293. package/dist/server/server/speech/providers/local/sherpa/model-catalog.js +166 -0
  294. package/dist/server/server/speech/providers/local/sherpa/model-catalog.js.map +1 -0
  295. package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts +17 -0
  296. package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts.map +1 -0
  297. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js +151 -0
  298. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js.map +1 -0
  299. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts +28 -0
  300. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts.map +1 -0
  301. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js +68 -0
  302. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js.map +1 -0
  303. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.d.ts +37 -0
  304. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.d.ts.map +1 -0
  305. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.js +79 -0
  306. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.js.map +1 -0
  307. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.d.ts +7 -0
  308. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.d.ts.map +1 -0
  309. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.js +11 -0
  310. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.js.map +1 -0
  311. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.d.ts +7 -0
  312. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.d.ts.map +1 -0
  313. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js +44 -0
  314. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js.map +1 -0
  315. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts +28 -0
  316. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts.map +1 -0
  317. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js +131 -0
  318. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js.map +1 -0
  319. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts +21 -0
  320. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts.map +1 -0
  321. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js +132 -0
  322. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js.map +1 -0
  323. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.d.ts +23 -0
  324. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.d.ts.map +1 -0
  325. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js +112 -0
  326. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js.map +1 -0
  327. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.d.ts +23 -0
  328. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.d.ts.map +1 -0
  329. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js +140 -0
  330. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js.map +1 -0
  331. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts +21 -0
  332. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts.map +1 -0
  333. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js +95 -0
  334. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js.map +1 -0
  335. package/dist/server/server/speech/providers/openai/config.d.ts +22 -0
  336. package/dist/server/server/speech/providers/openai/config.d.ts.map +1 -0
  337. package/dist/server/server/speech/providers/openai/config.js +94 -0
  338. package/dist/server/server/speech/providers/openai/config.js.map +1 -0
  339. package/dist/server/server/speech/providers/openai/realtime-transcription-session.d.ts +42 -0
  340. package/dist/server/server/speech/providers/openai/realtime-transcription-session.d.ts.map +1 -0
  341. package/dist/server/server/speech/providers/openai/realtime-transcription-session.js +165 -0
  342. package/dist/server/server/speech/providers/openai/realtime-transcription-session.js.map +1 -0
  343. package/dist/server/server/speech/providers/openai/runtime.d.ts +27 -0
  344. package/dist/server/server/speech/providers/openai/runtime.d.ts.map +1 -0
  345. package/dist/server/server/speech/providers/openai/runtime.js +103 -0
  346. package/dist/server/server/speech/providers/openai/runtime.js.map +1 -0
  347. package/dist/server/server/speech/providers/openai/stt.d.ts +22 -0
  348. package/dist/server/server/speech/providers/openai/stt.d.ts.map +1 -0
  349. package/dist/server/server/speech/providers/openai/stt.js +208 -0
  350. package/dist/server/server/speech/providers/openai/stt.js.map +1 -0
  351. package/dist/server/server/speech/providers/openai/tts.d.ts +18 -0
  352. package/dist/server/server/speech/providers/openai/tts.d.ts.map +1 -0
  353. package/dist/server/server/speech/providers/openai/tts.js +46 -0
  354. package/dist/server/server/speech/providers/openai/tts.js.map +1 -0
  355. package/dist/server/server/speech/speech-config-resolver.d.ts +11 -0
  356. package/dist/server/server/speech/speech-config-resolver.d.ts.map +1 -0
  357. package/dist/server/server/speech/speech-config-resolver.js +64 -0
  358. package/dist/server/server/speech/speech-config-resolver.js.map +1 -0
  359. package/dist/server/server/speech/speech-provider.d.ts +59 -0
  360. package/dist/server/server/speech/speech-provider.d.ts.map +1 -0
  361. package/dist/server/server/speech/speech-provider.js +2 -0
  362. package/dist/server/server/speech/speech-provider.js.map +1 -0
  363. package/dist/server/server/speech/speech-runtime.d.ts +20 -0
  364. package/dist/server/server/speech/speech-runtime.d.ts.map +1 -0
  365. package/dist/server/server/speech/speech-runtime.js +119 -0
  366. package/dist/server/server/speech/speech-runtime.js.map +1 -0
  367. package/dist/server/server/speech/speech-types.d.ts +20 -0
  368. package/dist/server/server/speech/speech-types.d.ts.map +1 -0
  369. package/dist/server/server/speech/speech-types.js +7 -0
  370. package/dist/server/server/speech/speech-types.js.map +1 -0
  371. package/dist/server/server/terminal-mcp/index.d.ts +4 -0
  372. package/dist/server/server/terminal-mcp/index.d.ts.map +1 -0
  373. package/dist/server/server/terminal-mcp/index.js +3 -0
  374. package/dist/server/server/terminal-mcp/index.js.map +1 -0
  375. package/dist/server/server/terminal-mcp/server.d.ts +10 -0
  376. package/dist/server/server/terminal-mcp/server.d.ts.map +1 -0
  377. package/dist/server/server/terminal-mcp/server.js +217 -0
  378. package/dist/server/server/terminal-mcp/server.js.map +1 -0
  379. package/dist/server/server/terminal-mcp/terminal-manager.d.ts +123 -0
  380. package/dist/server/server/terminal-mcp/terminal-manager.d.ts.map +1 -0
  381. package/dist/server/server/terminal-mcp/terminal-manager.js +351 -0
  382. package/dist/server/server/terminal-mcp/terminal-manager.js.map +1 -0
  383. package/dist/server/server/terminal-mcp/tmux.d.ts +207 -0
  384. package/dist/server/server/terminal-mcp/tmux.d.ts.map +1 -0
  385. package/dist/server/server/terminal-mcp/tmux.js +924 -0
  386. package/dist/server/server/terminal-mcp/tmux.js.map +1 -0
  387. package/dist/server/server/types.d.ts +5 -0
  388. package/dist/server/server/types.d.ts.map +1 -0
  389. package/dist/server/server/types.js +3 -0
  390. package/dist/server/server/types.js.map +1 -0
  391. package/dist/server/server/utils/diff-highlighter.d.ts +52 -0
  392. package/dist/server/server/utils/diff-highlighter.d.ts.map +1 -0
  393. package/dist/server/server/utils/diff-highlighter.js +244 -0
  394. package/dist/server/server/utils/diff-highlighter.js.map +1 -0
  395. package/dist/server/server/utils/syntax-highlighter.d.ts +10 -0
  396. package/dist/server/server/utils/syntax-highlighter.d.ts.map +1 -0
  397. package/dist/server/server/utils/syntax-highlighter.js +141 -0
  398. package/dist/server/server/utils/syntax-highlighter.js.map +1 -0
  399. package/dist/server/server/voice-config.d.ts +14 -0
  400. package/dist/server/server/voice-config.d.ts.map +1 -0
  401. package/dist/server/server/voice-config.js +51 -0
  402. package/dist/server/server/voice-config.js.map +1 -0
  403. package/dist/server/server/voice-mcp-bridge-command.d.ts +17 -0
  404. package/dist/server/server/voice-mcp-bridge-command.d.ts.map +1 -0
  405. package/dist/server/server/voice-mcp-bridge-command.js +31 -0
  406. package/dist/server/server/voice-mcp-bridge-command.js.map +1 -0
  407. package/dist/server/server/voice-mcp-bridge.d.ts +18 -0
  408. package/dist/server/server/voice-mcp-bridge.d.ts.map +1 -0
  409. package/dist/server/server/voice-mcp-bridge.js +109 -0
  410. package/dist/server/server/voice-mcp-bridge.js.map +1 -0
  411. package/dist/server/server/voice-permission-policy.d.ts +4 -0
  412. package/dist/server/server/voice-permission-policy.d.ts.map +1 -0
  413. package/dist/server/server/voice-permission-policy.js +13 -0
  414. package/dist/server/server/voice-permission-policy.js.map +1 -0
  415. package/dist/server/server/voice-types.d.ts +17 -0
  416. package/dist/server/server/voice-types.d.ts.map +1 -0
  417. package/dist/server/server/voice-types.js +2 -0
  418. package/dist/server/server/voice-types.js.map +1 -0
  419. package/dist/server/server/websocket-server.d.ts +80 -0
  420. package/dist/server/server/websocket-server.d.ts.map +1 -0
  421. package/dist/server/server/websocket-server.js +447 -0
  422. package/dist/server/server/websocket-server.js.map +1 -0
  423. package/dist/server/shared/agent-lifecycle.d.ts +3 -0
  424. package/dist/server/shared/agent-lifecycle.d.ts.map +1 -0
  425. package/dist/server/shared/agent-lifecycle.js +8 -0
  426. package/dist/server/shared/agent-lifecycle.js.map +1 -0
  427. package/dist/server/shared/connection-offer.d.ts +62 -0
  428. package/dist/server/shared/connection-offer.d.ts.map +1 -0
  429. package/dist/server/shared/connection-offer.js +17 -0
  430. package/dist/server/shared/connection-offer.js.map +1 -0
  431. package/dist/server/shared/daemon-endpoints.d.ts +19 -0
  432. package/dist/server/shared/daemon-endpoints.d.ts.map +1 -0
  433. package/dist/server/shared/daemon-endpoints.js +98 -0
  434. package/dist/server/shared/daemon-endpoints.js.map +1 -0
  435. package/dist/server/shared/messages.d.ts +36729 -0
  436. package/dist/server/shared/messages.d.ts.map +1 -0
  437. package/dist/server/shared/messages.js +1666 -0
  438. package/dist/server/shared/messages.js.map +1 -0
  439. package/dist/server/shared/path-utils.d.ts +2 -0
  440. package/dist/server/shared/path-utils.d.ts.map +1 -0
  441. package/dist/server/shared/path-utils.js +16 -0
  442. package/dist/server/shared/path-utils.js.map +1 -0
  443. package/dist/server/shared/tool-call-display.d.ts +11 -0
  444. package/dist/server/shared/tool-call-display.d.ts.map +1 -0
  445. package/dist/server/shared/tool-call-display.js +82 -0
  446. package/dist/server/shared/tool-call-display.js.map +1 -0
  447. package/dist/server/terminal/terminal-manager.d.ts +14 -0
  448. package/dist/server/terminal/terminal-manager.d.ts.map +1 -0
  449. package/dist/server/terminal/terminal-manager.js +67 -0
  450. package/dist/server/terminal/terminal-manager.js.map +1 -0
  451. package/dist/server/terminal/terminal.d.ts +67 -0
  452. package/dist/server/terminal/terminal.d.ts.map +1 -0
  453. package/dist/server/terminal/terminal.js +190 -0
  454. package/dist/server/terminal/terminal.js.map +1 -0
  455. package/dist/server/utils/checkout-git.d.ts +138 -0
  456. package/dist/server/utils/checkout-git.d.ts.map +1 -0
  457. package/dist/server/utils/checkout-git.js +1079 -0
  458. package/dist/server/utils/checkout-git.js.map +1 -0
  459. package/dist/server/utils/path.d.ts +5 -0
  460. package/dist/server/utils/path.d.ts.map +1 -0
  461. package/dist/server/utils/path.js +15 -0
  462. package/dist/server/utils/path.js.map +1 -0
  463. package/dist/server/utils/project-icon.d.ts +39 -0
  464. package/dist/server/utils/project-icon.d.ts.map +1 -0
  465. package/dist/server/utils/project-icon.js +391 -0
  466. package/dist/server/utils/project-icon.js.map +1 -0
  467. package/dist/server/utils/worktree-metadata.d.ts +21 -0
  468. package/dist/server/utils/worktree-metadata.d.ts.map +1 -0
  469. package/dist/server/utils/worktree-metadata.js +74 -0
  470. package/dist/server/utils/worktree-metadata.js.map +1 -0
  471. package/dist/server/utils/worktree.d.ts +95 -0
  472. package/dist/server/utils/worktree.d.ts.map +1 -0
  473. package/dist/server/utils/worktree.js +568 -0
  474. package/dist/server/utils/worktree.js.map +1 -0
  475. package/package.json +108 -0
@@ -0,0 +1,447 @@
1
+ import { WebSocketServer } from "ws";
2
+ import { join } from "path";
3
+ import { hostname as getHostname } from "node:os";
4
+ import { WSInboundMessageSchema, wrapSessionMessage, } from "./messages.js";
5
+ import { isHostAllowed } from "./allowed-hosts.js";
6
+ import { Session } from "./session.js";
7
+ import { PushTokenStore } from "./push/token-store.js";
8
+ import { PushService } from "./push/push-service.js";
9
+ function bufferFromWsData(data) {
10
+ if (typeof data === "string")
11
+ return Buffer.from(data, "utf8");
12
+ if (Array.isArray(data)) {
13
+ return Buffer.concat(data.map((item) => Buffer.isBuffer(item) ? item : Buffer.from(item)));
14
+ }
15
+ if (Buffer.isBuffer(data))
16
+ return data;
17
+ return Buffer.from(data);
18
+ }
19
+ /**
20
+ * WebSocket server that only accepts sockets + parses/forwards messages to the session layer.
21
+ */
22
+ export class VoiceAssistantWebSocketServer {
23
+ constructor(server, logger, serverId, agentManager, agentStorage, downloadTokenStore, paseoHome, createAgentMcpTransport, wsConfig, speech, terminalManager, voice, dictation, agentProviderRuntimeSettings) {
24
+ this.sessions = new Map();
25
+ this.clientIdCounter = 0;
26
+ this.voiceSpeakHandlers = new Map();
27
+ this.voiceCallerContexts = new Map();
28
+ this.ACTIVITY_THRESHOLD_MS = 120000;
29
+ this.logger = logger.child({ module: "websocket-server" });
30
+ this.serverId = serverId;
31
+ this.agentManager = agentManager;
32
+ this.agentStorage = agentStorage;
33
+ this.downloadTokenStore = downloadTokenStore;
34
+ this.paseoHome = paseoHome;
35
+ this.createAgentMcpTransport = createAgentMcpTransport;
36
+ this.stt = speech?.stt ?? null;
37
+ this.tts = speech?.tts ?? null;
38
+ this.terminalManager = terminalManager ?? null;
39
+ this.voice = voice ?? null;
40
+ this.dictation = dictation ?? null;
41
+ this.agentProviderRuntimeSettings = agentProviderRuntimeSettings;
42
+ const pushLogger = this.logger.child({ module: "push" });
43
+ this.pushTokenStore = new PushTokenStore(pushLogger, join(paseoHome, "push-tokens.json"));
44
+ this.pushService = new PushService(pushLogger, this.pushTokenStore);
45
+ this.agentManager.setAgentAttentionCallback((params) => {
46
+ this.broadcastAgentAttention(params);
47
+ });
48
+ const { allowedOrigins, allowedHosts } = wsConfig;
49
+ this.wss = new WebSocketServer({
50
+ server,
51
+ path: "/ws",
52
+ verifyClient: ({ req }, callback) => {
53
+ const origin = req.headers.origin;
54
+ const requestHost = typeof req.headers.host === "string" ? req.headers.host : null;
55
+ if (requestHost && !isHostAllowed(requestHost, allowedHosts)) {
56
+ this.logger.warn({ host: requestHost }, "Rejected connection from disallowed host");
57
+ callback(false, 403, "Host not allowed");
58
+ return;
59
+ }
60
+ const sameOrigin = !!origin &&
61
+ !!requestHost &&
62
+ (origin === `http://${requestHost}` || origin === `https://${requestHost}`);
63
+ if (!origin || allowedOrigins.has(origin) || sameOrigin) {
64
+ callback(true);
65
+ }
66
+ else {
67
+ this.logger.warn({ origin }, "Rejected connection from origin");
68
+ callback(false, 403, "Origin not allowed");
69
+ }
70
+ },
71
+ });
72
+ this.wss.on("connection", (ws, request) => {
73
+ void this.attachSocket(ws, request);
74
+ });
75
+ this.logger.info("WebSocket server initialized on /ws");
76
+ }
77
+ broadcast(message) {
78
+ const payload = JSON.stringify(message);
79
+ for (const ws of this.sessions.keys()) {
80
+ // WebSocket.OPEN = 1
81
+ if (ws.readyState === 1) {
82
+ ws.send(payload);
83
+ }
84
+ }
85
+ }
86
+ async attachExternalSocket(ws) {
87
+ await this.attachSocket(ws);
88
+ }
89
+ async close() {
90
+ const cleanupPromises = [];
91
+ for (const [ws, session] of this.sessions) {
92
+ cleanupPromises.push(session.cleanup());
93
+ cleanupPromises.push(new Promise((resolve) => {
94
+ // WebSocket.CLOSED = 3
95
+ if (ws.readyState === 3) {
96
+ resolve();
97
+ return;
98
+ }
99
+ ws.once("close", () => resolve());
100
+ ws.close();
101
+ }));
102
+ }
103
+ await Promise.all(cleanupPromises);
104
+ this.sessions.clear();
105
+ this.wss.close();
106
+ }
107
+ sendToClient(ws, message) {
108
+ // WebSocket.OPEN = 1
109
+ if (ws.readyState === 1) {
110
+ ws.send(JSON.stringify(message));
111
+ }
112
+ }
113
+ async attachSocket(ws, _request) {
114
+ const clientId = `client-${++this.clientIdCounter}`;
115
+ const connectionLogger = this.logger.child({ clientId });
116
+ const session = new Session({
117
+ clientId,
118
+ onMessage: (msg) => {
119
+ this.sendToClient(ws, wrapSessionMessage(msg));
120
+ },
121
+ logger: connectionLogger.child({ module: "session" }),
122
+ downloadTokenStore: this.downloadTokenStore,
123
+ pushTokenStore: this.pushTokenStore,
124
+ paseoHome: this.paseoHome,
125
+ agentManager: this.agentManager,
126
+ agentStorage: this.agentStorage,
127
+ createAgentMcpTransport: this.createAgentMcpTransport,
128
+ stt: this.stt,
129
+ tts: this.tts,
130
+ terminalManager: this.terminalManager,
131
+ voice: this.voice ?? undefined,
132
+ voiceBridge: {
133
+ registerVoiceSpeakHandler: (agentId, handler) => {
134
+ this.voiceSpeakHandlers.set(agentId, handler);
135
+ },
136
+ unregisterVoiceSpeakHandler: (agentId) => {
137
+ this.voiceSpeakHandlers.delete(agentId);
138
+ },
139
+ registerVoiceCallerContext: (agentId, context) => {
140
+ this.voiceCallerContexts.set(agentId, context);
141
+ },
142
+ unregisterVoiceCallerContext: (agentId) => {
143
+ this.voiceCallerContexts.delete(agentId);
144
+ },
145
+ ensureVoiceMcpSocketForAgent: this.voice?.ensureVoiceMcpSocketForAgent,
146
+ removeVoiceMcpSocketForAgent: this.voice?.removeVoiceMcpSocketForAgent,
147
+ },
148
+ dictation: this.dictation ?? undefined,
149
+ agentProviderRuntimeSettings: this.agentProviderRuntimeSettings,
150
+ });
151
+ this.sessions.set(ws, session);
152
+ // Advertise stable server identity immediately on connect (used for URL/shareable IDs).
153
+ this.sendToClient(ws, wrapSessionMessage({
154
+ type: "status",
155
+ payload: {
156
+ status: "server_info",
157
+ serverId: this.serverId,
158
+ hostname: getHostname(),
159
+ },
160
+ }));
161
+ connectionLogger.info({ clientId, totalSessions: this.sessions.size }, "Client connected");
162
+ ws.on("message", (data) => {
163
+ void this.handleRawMessage(ws, data);
164
+ });
165
+ ws.on("close", async () => {
166
+ await this.detachSocket(ws, connectionLogger, clientId);
167
+ });
168
+ ws.on("error", async (error) => {
169
+ const err = error instanceof Error ? error : new Error(String(error));
170
+ connectionLogger.error({ err }, "Client error");
171
+ await this.detachSocket(ws, connectionLogger, clientId);
172
+ });
173
+ }
174
+ resolveVoiceSpeakHandler(callerAgentId) {
175
+ return this.voiceSpeakHandlers.get(callerAgentId) ?? null;
176
+ }
177
+ resolveVoiceCallerContext(callerAgentId) {
178
+ return this.voiceCallerContexts.get(callerAgentId) ?? null;
179
+ }
180
+ async detachSocket(ws, connectionLogger, clientId) {
181
+ const session = this.sessions.get(ws);
182
+ if (!session)
183
+ return;
184
+ connectionLogger.info({ clientId, totalSessions: this.sessions.size - 1 }, "Client disconnected");
185
+ await session.cleanup();
186
+ this.sessions.delete(ws);
187
+ }
188
+ async handleRawMessage(ws, data) {
189
+ try {
190
+ const buffer = bufferFromWsData(data);
191
+ const parsed = JSON.parse(buffer.toString());
192
+ const parsedMessage = WSInboundMessageSchema.safeParse(parsed);
193
+ if (!parsedMessage.success) {
194
+ const requestInfo = extractRequestInfoFromUnknownWsInbound(parsed);
195
+ const isUnknownSchema = requestInfo?.requestId != null &&
196
+ typeof parsed === "object" &&
197
+ parsed != null &&
198
+ "type" in parsed &&
199
+ parsed.type === "session";
200
+ this.logger.warn({
201
+ requestId: requestInfo?.requestId,
202
+ requestType: requestInfo?.requestType,
203
+ error: parsedMessage.error.message,
204
+ }, "WS inbound message validation failed");
205
+ if (requestInfo) {
206
+ this.sendToClient(ws, wrapSessionMessage({
207
+ type: "rpc_error",
208
+ payload: {
209
+ requestId: requestInfo.requestId,
210
+ requestType: requestInfo.requestType,
211
+ error: isUnknownSchema ? "Unknown request schema" : "Invalid message",
212
+ code: isUnknownSchema ? "unknown_schema" : "invalid_message",
213
+ },
214
+ }));
215
+ return;
216
+ }
217
+ const errorMessage = `Invalid message: ${parsedMessage.error.message}`;
218
+ this.sendToClient(ws, wrapSessionMessage({
219
+ type: "status",
220
+ payload: {
221
+ status: "error",
222
+ message: errorMessage,
223
+ },
224
+ }));
225
+ return;
226
+ }
227
+ const message = parsedMessage.data;
228
+ const messageSummary = {
229
+ type: message.type,
230
+ ...(message.type === "session" && message.message
231
+ ? { sessionMessageType: message.message.type }
232
+ : {}),
233
+ };
234
+ const isSessionNoise = message.type === "session" &&
235
+ (message.message.type === "client_heartbeat" ||
236
+ message.message.type === "voice_audio_chunk" ||
237
+ message.message.type === "dictation_stream_chunk");
238
+ if (!isSessionNoise) {
239
+ this.logger.debug(messageSummary, "Received message");
240
+ }
241
+ if (message.type === "ping") {
242
+ this.sendToClient(ws, { type: "pong" });
243
+ return;
244
+ }
245
+ if (message.type === "recording_state") {
246
+ this.logger.debug({ isRecording: message.isRecording }, "Recording state");
247
+ return;
248
+ }
249
+ const session = this.sessions.get(ws);
250
+ if (!session) {
251
+ this.logger.error("No session found for client");
252
+ return;
253
+ }
254
+ if (message.type === "session") {
255
+ if (message.message.type === "create_agent_request") {
256
+ this.logger.debug({
257
+ cwd: message.message.config.cwd,
258
+ initialMode: message.message.config.modeId,
259
+ worktreeName: message.message.worktreeName,
260
+ requestId: message.message.requestId,
261
+ }, "create_agent_request details");
262
+ }
263
+ await session.handleMessage(message.message);
264
+ }
265
+ }
266
+ catch (error) {
267
+ const err = error instanceof Error ? error : new Error(String(error));
268
+ let rawPayload = null;
269
+ let parsedPayload = null;
270
+ try {
271
+ const buffer = bufferFromWsData(data);
272
+ rawPayload = buffer.toString();
273
+ parsedPayload = JSON.parse(rawPayload);
274
+ }
275
+ catch (payloadError) {
276
+ rawPayload = rawPayload ?? "<unreadable>";
277
+ parsedPayload = parsedPayload ?? rawPayload;
278
+ const payloadErr = payloadError instanceof Error ? payloadError : new Error(String(payloadError));
279
+ this.logger.error({ err: payloadErr }, "Failed to decode raw payload");
280
+ }
281
+ const trimmedRawPayload = typeof rawPayload === "string" && rawPayload.length > 2000
282
+ ? `${rawPayload.slice(0, 2000)}... (truncated)`
283
+ : rawPayload;
284
+ this.logger.error({
285
+ err,
286
+ rawPayload: trimmedRawPayload,
287
+ parsedPayload,
288
+ }, "Failed to parse/handle message");
289
+ const requestInfo = extractRequestInfoFromUnknownWsInbound(parsedPayload);
290
+ if (requestInfo) {
291
+ this.sendToClient(ws, wrapSessionMessage({
292
+ type: "rpc_error",
293
+ payload: {
294
+ requestId: requestInfo.requestId,
295
+ requestType: requestInfo.requestType,
296
+ error: "Invalid message",
297
+ code: "invalid_message",
298
+ },
299
+ }));
300
+ return;
301
+ }
302
+ this.sendToClient(ws, wrapSessionMessage({
303
+ type: "status",
304
+ payload: {
305
+ status: "error",
306
+ message: `Invalid message: ${err.message}`,
307
+ },
308
+ }));
309
+ }
310
+ }
311
+ getClientActivityState(session) {
312
+ const activity = session.getClientActivity();
313
+ if (!activity) {
314
+ this.logger.debug("getClientActivityState: no activity for session");
315
+ return { deviceType: null, focusedAgentId: null, isStale: true, appVisible: false };
316
+ }
317
+ const now = Date.now();
318
+ const ageMs = now - activity.lastActivityAt.getTime();
319
+ const isStale = ageMs >= this.ACTIVITY_THRESHOLD_MS;
320
+ this.logger.debug({
321
+ deviceType: activity.deviceType,
322
+ focusedAgentId: activity.focusedAgentId,
323
+ lastActivityAt: activity.lastActivityAt.toISOString(),
324
+ ageMs,
325
+ isStale,
326
+ appVisible: activity.appVisible,
327
+ }, "getClientActivityState");
328
+ return {
329
+ deviceType: activity.deviceType,
330
+ focusedAgentId: activity.focusedAgentId,
331
+ isStale,
332
+ appVisible: activity.appVisible,
333
+ };
334
+ }
335
+ computeShouldNotifyForClient(clientState, allClientStates, agentId) {
336
+ const isAnyoneActiveOnAgent = allClientStates.some((state) => state.focusedAgentId === agentId && state.appVisible && !state.isStale);
337
+ if (isAnyoneActiveOnAgent) {
338
+ return false;
339
+ }
340
+ if (clientState.deviceType === null) {
341
+ return true;
342
+ }
343
+ if (!clientState.isStale && clientState.appVisible && clientState.focusedAgentId !== null) {
344
+ return true;
345
+ }
346
+ if (!clientState.isStale) {
347
+ return false;
348
+ }
349
+ const hasActiveWebClient = allClientStates.some((state) => state.deviceType === "web" && !state.isStale);
350
+ if (clientState.deviceType === "mobile") {
351
+ return !hasActiveWebClient;
352
+ }
353
+ if (clientState.deviceType === "web") {
354
+ const hasOtherClient = allClientStates.some((state) => state !== clientState && (state.deviceType === "mobile" || state.deviceType === null));
355
+ return !hasOtherClient;
356
+ }
357
+ return true;
358
+ }
359
+ broadcastAgentAttention(params) {
360
+ const clientEntries = [];
361
+ for (const [ws, session] of this.sessions) {
362
+ clientEntries.push({
363
+ ws,
364
+ state: this.getClientActivityState(session),
365
+ });
366
+ }
367
+ const allStates = clientEntries.map((e) => e.state);
368
+ this.logger.debug({
369
+ agentId: params.agentId,
370
+ reason: params.reason,
371
+ clientCount: clientEntries.length,
372
+ allStates,
373
+ }, "broadcastAgentAttention");
374
+ const hasActiveWebClient = allStates.some((state) => state.deviceType === "web" && !state.isStale);
375
+ const hasActiveMobileForegroundClient = allStates.some((state) => state.deviceType === "mobile" && state.appVisible && !state.isStale);
376
+ // Push is only a fallback when the user is away from their desktop/web.
377
+ // Also suppress push if they're actively using the mobile app.
378
+ const shouldSendPush = params.reason !== "error" &&
379
+ !hasActiveWebClient &&
380
+ !hasActiveMobileForegroundClient;
381
+ this.logger.debug({ hasActiveWebClient, hasActiveMobileForegroundClient, shouldSendPush }, "Push gating check");
382
+ if (shouldSendPush) {
383
+ const tokens = this.pushTokenStore.getAllTokens();
384
+ this.logger.info({ tokenCount: tokens.length }, "Sending push notification");
385
+ if (tokens.length > 0) {
386
+ const agent = this.agentManager.getAgent(params.agentId);
387
+ const agentTitle = agent?.config?.title ?? agent?.cwd ?? params.agentId;
388
+ const title = params.reason === "permission" ? "Agent needs permission" : "Agent finished";
389
+ const body = params.reason === "permission"
390
+ ? `Permission requested: ${agentTitle}`
391
+ : `Finished: ${agentTitle}`;
392
+ void this.pushService.sendPush(tokens, {
393
+ title,
394
+ body,
395
+ data: {
396
+ serverId: this.serverId,
397
+ agentId: params.agentId,
398
+ reason: params.reason,
399
+ },
400
+ });
401
+ }
402
+ }
403
+ for (const { ws, state } of clientEntries) {
404
+ const shouldNotify = this.computeShouldNotifyForClient(state, allStates, params.agentId);
405
+ const message = wrapSessionMessage({
406
+ type: "agent_stream",
407
+ payload: {
408
+ agentId: params.agentId,
409
+ event: {
410
+ type: "attention_required",
411
+ provider: params.provider,
412
+ reason: params.reason,
413
+ timestamp: new Date().toISOString(),
414
+ shouldNotify,
415
+ },
416
+ timestamp: new Date().toISOString(),
417
+ },
418
+ });
419
+ this.sendToClient(ws, message);
420
+ }
421
+ }
422
+ }
423
+ function extractRequestInfoFromUnknownWsInbound(payload) {
424
+ if (!payload || typeof payload !== "object") {
425
+ return null;
426
+ }
427
+ const record = payload;
428
+ // Session-wrapped messages
429
+ if (record.type === "session" && record.message && typeof record.message === "object") {
430
+ const msg = record.message;
431
+ if (typeof msg.requestId === "string") {
432
+ return {
433
+ requestId: msg.requestId,
434
+ ...(typeof msg.type === "string" ? { requestType: msg.type } : {}),
435
+ };
436
+ }
437
+ }
438
+ // Non-session messages (future-proof)
439
+ if (typeof record.requestId === "string") {
440
+ return {
441
+ requestId: record.requestId,
442
+ ...(typeof record.type === "string" ? { requestType: record.type } : {}),
443
+ };
444
+ }
445
+ return null;
446
+ }
447
+ //# sourceMappingURL=websocket-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-server.js","sourceRoot":"","sources":["../../../src/server/websocket-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const AGENT_LIFECYCLE_STATUSES: readonly ["initializing", "idle", "running", "error", "closed"];
2
+ export type AgentLifecycleStatus = (typeof AGENT_LIFECYCLE_STATUSES)[number];
3
+ //# sourceMappingURL=agent-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/shared/agent-lifecycle.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,iEAM3B,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAC9B,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export const AGENT_LIFECYCLE_STATUSES = [
2
+ "initializing",
3
+ "idle",
4
+ "running",
5
+ "error",
6
+ "closed",
7
+ ];
8
+ //# sourceMappingURL=agent-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-lifecycle.js","sourceRoot":"","sources":["../../../src/shared/agent-lifecycle.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,cAAc;IACd,MAAM;IACN,SAAS;IACT,OAAO;IACP,QAAQ;CACA,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Relay-only pairing offer.
4
+ *
5
+ * `serverId` is a stable daemon identifier scoped to `PASEO_HOME`, and is also
6
+ * used as the relay session identifier.
7
+ */
8
+ export declare const ConnectionOfferV2Schema: z.ZodObject<{
9
+ v: z.ZodLiteral<2>;
10
+ serverId: z.ZodString;
11
+ daemonPublicKeyB64: z.ZodString;
12
+ relay: z.ZodObject<{
13
+ endpoint: z.ZodString;
14
+ }, "strip", z.ZodTypeAny, {
15
+ endpoint: string;
16
+ }, {
17
+ endpoint: string;
18
+ }>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ serverId: string;
21
+ relay: {
22
+ endpoint: string;
23
+ };
24
+ v: 2;
25
+ daemonPublicKeyB64: string;
26
+ }, {
27
+ serverId: string;
28
+ relay: {
29
+ endpoint: string;
30
+ };
31
+ v: 2;
32
+ daemonPublicKeyB64: string;
33
+ }>;
34
+ export type ConnectionOfferV2 = z.infer<typeof ConnectionOfferV2Schema>;
35
+ export declare const ConnectionOfferSchema: z.ZodObject<{
36
+ v: z.ZodLiteral<2>;
37
+ serverId: z.ZodString;
38
+ daemonPublicKeyB64: z.ZodString;
39
+ relay: z.ZodObject<{
40
+ endpoint: z.ZodString;
41
+ }, "strip", z.ZodTypeAny, {
42
+ endpoint: string;
43
+ }, {
44
+ endpoint: string;
45
+ }>;
46
+ }, "strip", z.ZodTypeAny, {
47
+ serverId: string;
48
+ relay: {
49
+ endpoint: string;
50
+ };
51
+ v: 2;
52
+ daemonPublicKeyB64: string;
53
+ }, {
54
+ serverId: string;
55
+ relay: {
56
+ endpoint: string;
57
+ };
58
+ v: 2;
59
+ daemonPublicKeyB64: string;
60
+ }>;
61
+ export type ConnectionOffer = ConnectionOfferV2;
62
+ //# sourceMappingURL=connection-offer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-offer.d.ts","sourceRoot":"","sources":["../../../src/shared/connection-offer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;EAOlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;EAA0B,CAAC;AAC7D,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Relay-only pairing offer.
4
+ *
5
+ * `serverId` is a stable daemon identifier scoped to `PASEO_HOME`, and is also
6
+ * used as the relay session identifier.
7
+ */
8
+ export const ConnectionOfferV2Schema = z.object({
9
+ v: z.literal(2),
10
+ serverId: z.string().min(1),
11
+ daemonPublicKeyB64: z.string().min(1),
12
+ relay: z.object({
13
+ endpoint: z.string().min(1),
14
+ }),
15
+ });
16
+ export const ConnectionOfferSchema = ConnectionOfferV2Schema;
17
+ //# sourceMappingURL=connection-offer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-offer.js","sourceRoot":"","sources":["../../../src/shared/connection-offer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC5B,CAAC;CACH,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC"}
@@ -0,0 +1,19 @@
1
+ export type HostPortParts = {
2
+ host: string;
3
+ port: number;
4
+ isIpv6: boolean;
5
+ };
6
+ export type RelayRole = "server" | "client";
7
+ export declare function parseHostPort(input: string): HostPortParts;
8
+ export declare function normalizeHostPort(input: string): string;
9
+ export declare function deriveLabelFromEndpoint(endpoint: string): string;
10
+ export declare function buildDaemonWebSocketUrl(endpoint: string): string;
11
+ export declare function buildRelayWebSocketUrl(params: {
12
+ endpoint: string;
13
+ serverId: string;
14
+ role: RelayRole;
15
+ clientId?: string;
16
+ }): string;
17
+ export declare function extractHostPortFromWebSocketUrl(wsUrl: string): string;
18
+ export declare function isRelayClientWebSocketUrl(url: string): boolean;
19
+ //# sourceMappingURL=daemon-endpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-endpoints.d.ts","sourceRoot":"","sources":["../../../src/shared/daemon-endpoints.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAU5C,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CA0B1D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOhE;AAMD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAWT;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoBrE;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAU9D"}