agent-relay 2.3.2 → 2.3.5

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 (334) hide show
  1. package/README.md +1 -1
  2. package/dist/index.cjs +1 -1
  3. package/dist/src/cli/index.js +124 -7
  4. package/dist/src/cli/index.js.map +1 -1
  5. package/package.json +20 -26
  6. package/packages/acp-bridge/package.json +2 -2
  7. package/packages/bridge/package.json +7 -7
  8. package/packages/config/dist/cloud-config.d.ts +1 -1
  9. package/packages/config/dist/cloud-config.d.ts.map +1 -1
  10. package/packages/config/dist/cloud-config.js.map +1 -1
  11. package/packages/config/dist/schemas.d.ts +5 -5
  12. package/packages/config/dist/schemas.js +1 -1
  13. package/packages/config/dist/schemas.js.map +1 -1
  14. package/packages/config/package.json +2 -2
  15. package/packages/config/src/cloud-config.ts +2 -2
  16. package/packages/config/src/schemas.test.ts +48 -0
  17. package/packages/config/src/schemas.ts +1 -1
  18. package/packages/continuity/package.json +2 -2
  19. package/packages/daemon/package.json +12 -12
  20. package/packages/hooks/package.json +4 -4
  21. package/packages/mcp/package.json +5 -5
  22. package/packages/memory/package.json +2 -2
  23. package/packages/policy/package.json +2 -2
  24. package/packages/protocol/package.json +1 -1
  25. package/packages/resiliency/package.json +1 -1
  26. package/packages/sdk/dist/index.d.ts +1 -29
  27. package/packages/sdk/dist/index.d.ts.map +1 -1
  28. package/packages/sdk/dist/index.js +1 -38
  29. package/packages/sdk/dist/index.js.map +1 -1
  30. package/packages/sdk/package.json +4 -25
  31. package/packages/sdk/src/index.ts +1 -69
  32. package/packages/sdk-py/README.md +56 -0
  33. package/packages/sdk-py/pyproject.toml +23 -0
  34. package/packages/sdk-py/src/agent_relay/__init__.py +27 -0
  35. package/packages/sdk-py/src/agent_relay/builder.py +367 -0
  36. package/packages/sdk-py/src/agent_relay/types.py +92 -0
  37. package/packages/sdk-py/tests/__init__.py +0 -0
  38. package/packages/sdk-py/tests/test_builder.py +101 -0
  39. package/packages/sdk-ts/dist/__tests__/facade.test.d.ts +2 -0
  40. package/packages/sdk-ts/dist/__tests__/facade.test.d.ts.map +1 -0
  41. package/packages/sdk-ts/dist/__tests__/facade.test.js +257 -0
  42. package/packages/sdk-ts/dist/__tests__/facade.test.js.map +1 -0
  43. package/packages/sdk-ts/dist/__tests__/unit.test.d.ts +2 -0
  44. package/packages/sdk-ts/dist/__tests__/unit.test.d.ts.map +1 -0
  45. package/packages/sdk-ts/dist/__tests__/unit.test.js +124 -0
  46. package/packages/sdk-ts/dist/__tests__/unit.test.js.map +1 -0
  47. package/packages/sdk-ts/dist/client.d.ts +2 -0
  48. package/packages/sdk-ts/dist/client.d.ts.map +1 -1
  49. package/packages/sdk-ts/dist/client.js +2 -0
  50. package/packages/sdk-ts/dist/client.js.map +1 -1
  51. package/packages/sdk-ts/dist/index.d.ts +1 -0
  52. package/packages/sdk-ts/dist/index.d.ts.map +1 -1
  53. package/packages/sdk-ts/dist/index.js +1 -0
  54. package/packages/sdk-ts/dist/index.js.map +1 -1
  55. package/packages/sdk-ts/dist/protocol.d.ts +1 -0
  56. package/packages/sdk-ts/dist/protocol.d.ts.map +1 -1
  57. package/packages/sdk-ts/dist/relay.d.ts +44 -0
  58. package/packages/sdk-ts/dist/relay.d.ts.map +1 -1
  59. package/packages/sdk-ts/dist/relay.js +89 -11
  60. package/packages/sdk-ts/dist/relay.js.map +1 -1
  61. package/packages/sdk-ts/dist/relaycast.js +2 -2
  62. package/packages/sdk-ts/dist/relaycast.js.map +1 -1
  63. package/packages/sdk-ts/dist/workflows/barrier.d.ts +72 -0
  64. package/packages/sdk-ts/dist/workflows/barrier.d.ts.map +1 -0
  65. package/packages/sdk-ts/dist/workflows/barrier.js +162 -0
  66. package/packages/sdk-ts/dist/workflows/barrier.js.map +1 -0
  67. package/packages/sdk-ts/dist/workflows/builder.d.ts +101 -0
  68. package/packages/sdk-ts/dist/workflows/builder.d.ts.map +1 -0
  69. package/packages/sdk-ts/dist/workflows/builder.js +179 -0
  70. package/packages/sdk-ts/dist/workflows/builder.js.map +1 -0
  71. package/packages/sdk-ts/dist/workflows/cli.d.ts +10 -0
  72. package/packages/sdk-ts/dist/workflows/cli.d.ts.map +1 -0
  73. package/packages/sdk-ts/dist/workflows/cli.js +82 -0
  74. package/packages/sdk-ts/dist/workflows/cli.js.map +1 -0
  75. package/packages/sdk-ts/dist/workflows/coordinator.d.ts +68 -0
  76. package/packages/sdk-ts/dist/workflows/coordinator.d.ts.map +1 -0
  77. package/packages/sdk-ts/dist/workflows/coordinator.js +353 -0
  78. package/packages/sdk-ts/dist/workflows/coordinator.js.map +1 -0
  79. package/packages/sdk-ts/dist/workflows/index.d.ts +10 -0
  80. package/packages/sdk-ts/dist/workflows/index.d.ts.map +1 -0
  81. package/packages/sdk-ts/dist/workflows/index.js +10 -0
  82. package/packages/sdk-ts/dist/workflows/index.js.map +1 -0
  83. package/packages/sdk-ts/dist/workflows/memory-db.d.ts +17 -0
  84. package/packages/sdk-ts/dist/workflows/memory-db.d.ts.map +1 -0
  85. package/packages/sdk-ts/dist/workflows/memory-db.js +33 -0
  86. package/packages/sdk-ts/dist/workflows/memory-db.js.map +1 -0
  87. package/packages/sdk-ts/dist/workflows/run.d.ts +31 -0
  88. package/packages/sdk-ts/dist/workflows/run.d.ts.map +1 -0
  89. package/packages/sdk-ts/dist/workflows/run.js +24 -0
  90. package/packages/sdk-ts/dist/workflows/run.js.map +1 -0
  91. package/packages/sdk-ts/dist/workflows/runner.d.ts +119 -0
  92. package/packages/sdk-ts/dist/workflows/runner.d.ts.map +1 -0
  93. package/packages/sdk-ts/dist/workflows/runner.js +650 -0
  94. package/packages/sdk-ts/dist/workflows/runner.js.map +1 -0
  95. package/packages/sdk-ts/dist/workflows/state.d.ts +77 -0
  96. package/packages/sdk-ts/dist/workflows/state.d.ts.map +1 -0
  97. package/packages/sdk-ts/dist/workflows/state.js +140 -0
  98. package/packages/sdk-ts/dist/workflows/state.js.map +1 -0
  99. package/packages/sdk-ts/dist/workflows/templates.d.ts +47 -0
  100. package/packages/sdk-ts/dist/workflows/templates.d.ts.map +1 -0
  101. package/packages/sdk-ts/dist/workflows/templates.js +395 -0
  102. package/packages/sdk-ts/dist/workflows/templates.js.map +1 -0
  103. package/packages/sdk-ts/dist/workflows/types.d.ts +126 -0
  104. package/packages/sdk-ts/dist/workflows/types.d.ts.map +1 -0
  105. package/packages/sdk-ts/dist/workflows/types.js +8 -0
  106. package/packages/sdk-ts/dist/workflows/types.js.map +1 -0
  107. package/packages/sdk-ts/package.json +9 -3
  108. package/packages/sdk-ts/src/__tests__/error-scenarios.test.ts +682 -0
  109. package/packages/sdk-ts/src/__tests__/facade.test.ts +296 -0
  110. package/packages/sdk-ts/src/__tests__/swarm-coordinator.test.ts +416 -0
  111. package/packages/sdk-ts/src/__tests__/unit.test.ts +152 -0
  112. package/packages/sdk-ts/src/__tests__/workflow-runner.test.ts +333 -0
  113. package/packages/sdk-ts/src/client.ts +4 -0
  114. package/packages/sdk-ts/src/index.ts +1 -0
  115. package/packages/sdk-ts/src/protocol.ts +1 -1
  116. package/packages/sdk-ts/src/relay.ts +112 -11
  117. package/packages/sdk-ts/src/relaycast.ts +2 -2
  118. package/packages/sdk-ts/src/workflows/README.md +450 -0
  119. package/packages/sdk-ts/src/workflows/barrier.ts +254 -0
  120. package/packages/sdk-ts/src/workflows/builder.ts +241 -0
  121. package/packages/sdk-ts/src/workflows/builtin-templates/bug-fix.yaml +75 -0
  122. package/packages/sdk-ts/src/workflows/builtin-templates/code-review.yaml +82 -0
  123. package/packages/sdk-ts/src/workflows/builtin-templates/documentation.yaml +70 -0
  124. package/packages/sdk-ts/src/workflows/builtin-templates/feature-dev.yaml +76 -0
  125. package/packages/sdk-ts/src/workflows/builtin-templates/refactor.yaml +82 -0
  126. package/packages/sdk-ts/src/workflows/builtin-templates/security-audit.yaml +84 -0
  127. package/packages/sdk-ts/src/workflows/cli.ts +93 -0
  128. package/packages/sdk-ts/src/workflows/coordinator.ts +520 -0
  129. package/packages/sdk-ts/src/workflows/index.ts +9 -0
  130. package/packages/sdk-ts/src/workflows/memory-db.ts +39 -0
  131. package/packages/sdk-ts/src/workflows/run.ts +47 -0
  132. package/packages/sdk-ts/src/workflows/runner.ts +873 -0
  133. package/packages/sdk-ts/src/workflows/schema.json +321 -0
  134. package/packages/sdk-ts/src/workflows/state.ts +279 -0
  135. package/packages/sdk-ts/src/workflows/templates.ts +544 -0
  136. package/packages/sdk-ts/src/workflows/types.ts +178 -0
  137. package/packages/sdk-ts/tsconfig.json +6 -1
  138. package/packages/spawner/package.json +1 -1
  139. package/packages/state/package.json +1 -1
  140. package/packages/storage/package.json +2 -2
  141. package/packages/telemetry/package.json +1 -1
  142. package/packages/trajectory/package.json +2 -2
  143. package/packages/user-directory/package.json +2 -2
  144. package/packages/utils/package.json +3 -3
  145. package/packages/wrapper/package.json +5 -6
  146. package/scripts/postinstall.js +106 -2
  147. package/packages/api-types/.trajectories/active/traj_xbsvuzogscey.json +0 -15
  148. package/packages/api-types/.trajectories/index.json +0 -12
  149. package/packages/api-types/dist/index.d.ts +0 -21
  150. package/packages/api-types/dist/index.d.ts.map +0 -1
  151. package/packages/api-types/dist/index.js +0 -22
  152. package/packages/api-types/dist/index.js.map +0 -1
  153. package/packages/api-types/dist/schemas/agent.d.ts +0 -259
  154. package/packages/api-types/dist/schemas/agent.d.ts.map +0 -1
  155. package/packages/api-types/dist/schemas/agent.js +0 -102
  156. package/packages/api-types/dist/schemas/agent.js.map +0 -1
  157. package/packages/api-types/dist/schemas/api.d.ts +0 -290
  158. package/packages/api-types/dist/schemas/api.d.ts.map +0 -1
  159. package/packages/api-types/dist/schemas/api.js +0 -162
  160. package/packages/api-types/dist/schemas/api.js.map +0 -1
  161. package/packages/api-types/dist/schemas/decision.d.ts +0 -230
  162. package/packages/api-types/dist/schemas/decision.d.ts.map +0 -1
  163. package/packages/api-types/dist/schemas/decision.js +0 -104
  164. package/packages/api-types/dist/schemas/decision.js.map +0 -1
  165. package/packages/api-types/dist/schemas/fleet.d.ts +0 -615
  166. package/packages/api-types/dist/schemas/fleet.d.ts.map +0 -1
  167. package/packages/api-types/dist/schemas/fleet.js +0 -71
  168. package/packages/api-types/dist/schemas/fleet.js.map +0 -1
  169. package/packages/api-types/dist/schemas/history.d.ts +0 -180
  170. package/packages/api-types/dist/schemas/history.d.ts.map +0 -1
  171. package/packages/api-types/dist/schemas/history.js +0 -72
  172. package/packages/api-types/dist/schemas/history.js.map +0 -1
  173. package/packages/api-types/dist/schemas/index.d.ts +0 -14
  174. package/packages/api-types/dist/schemas/index.d.ts.map +0 -1
  175. package/packages/api-types/dist/schemas/index.js +0 -22
  176. package/packages/api-types/dist/schemas/index.js.map +0 -1
  177. package/packages/api-types/dist/schemas/message.d.ts +0 -456
  178. package/packages/api-types/dist/schemas/message.d.ts.map +0 -1
  179. package/packages/api-types/dist/schemas/message.js +0 -88
  180. package/packages/api-types/dist/schemas/message.js.map +0 -1
  181. package/packages/api-types/dist/schemas/session.d.ts +0 -60
  182. package/packages/api-types/dist/schemas/session.d.ts.map +0 -1
  183. package/packages/api-types/dist/schemas/session.js +0 -36
  184. package/packages/api-types/dist/schemas/session.js.map +0 -1
  185. package/packages/api-types/dist/schemas/task.d.ts +0 -111
  186. package/packages/api-types/dist/schemas/task.d.ts.map +0 -1
  187. package/packages/api-types/dist/schemas/task.js +0 -64
  188. package/packages/api-types/dist/schemas/task.js.map +0 -1
  189. package/packages/api-types/package.json +0 -61
  190. package/packages/api-types/scripts/generate-openapi.ts +0 -106
  191. package/packages/api-types/src/index.ts +0 -22
  192. package/packages/api-types/src/schemas/agent.test.ts +0 -164
  193. package/packages/api-types/src/schemas/agent.ts +0 -110
  194. package/packages/api-types/src/schemas/api.test.ts +0 -372
  195. package/packages/api-types/src/schemas/api.ts +0 -194
  196. package/packages/api-types/src/schemas/decision.test.ts +0 -324
  197. package/packages/api-types/src/schemas/decision.ts +0 -136
  198. package/packages/api-types/src/schemas/fleet.test.ts +0 -212
  199. package/packages/api-types/src/schemas/fleet.ts +0 -83
  200. package/packages/api-types/src/schemas/history.test.ts +0 -242
  201. package/packages/api-types/src/schemas/history.ts +0 -84
  202. package/packages/api-types/src/schemas/index.ts +0 -148
  203. package/packages/api-types/src/schemas/message.test.ts +0 -192
  204. package/packages/api-types/src/schemas/message.ts +0 -98
  205. package/packages/api-types/src/schemas/session.test.ts +0 -104
  206. package/packages/api-types/src/schemas/session.ts +0 -40
  207. package/packages/api-types/src/schemas/task.test.ts +0 -192
  208. package/packages/api-types/src/schemas/task.ts +0 -78
  209. package/packages/api-types/tsconfig.json +0 -19
  210. package/packages/api-types/vitest.config.ts +0 -9
  211. package/packages/benchmark/README.md +0 -200
  212. package/packages/benchmark/datasets/coding-tasks.yaml +0 -127
  213. package/packages/benchmark/datasets/coordination-tasks.yaml +0 -122
  214. package/packages/benchmark/datasets/quick-test.yaml +0 -20
  215. package/packages/benchmark/dist/benchmark.d.ts +0 -47
  216. package/packages/benchmark/dist/benchmark.d.ts.map +0 -1
  217. package/packages/benchmark/dist/benchmark.js +0 -224
  218. package/packages/benchmark/dist/benchmark.js.map +0 -1
  219. package/packages/benchmark/dist/cli.d.ts +0 -8
  220. package/packages/benchmark/dist/cli.d.ts.map +0 -1
  221. package/packages/benchmark/dist/cli.js +0 -185
  222. package/packages/benchmark/dist/cli.js.map +0 -1
  223. package/packages/benchmark/dist/harbor.d.ts +0 -53
  224. package/packages/benchmark/dist/harbor.d.ts.map +0 -1
  225. package/packages/benchmark/dist/harbor.js +0 -127
  226. package/packages/benchmark/dist/harbor.js.map +0 -1
  227. package/packages/benchmark/dist/index.d.ts +0 -48
  228. package/packages/benchmark/dist/index.d.ts.map +0 -1
  229. package/packages/benchmark/dist/index.js +0 -50
  230. package/packages/benchmark/dist/index.js.map +0 -1
  231. package/packages/benchmark/dist/runners/base.d.ts +0 -63
  232. package/packages/benchmark/dist/runners/base.d.ts.map +0 -1
  233. package/packages/benchmark/dist/runners/base.js +0 -156
  234. package/packages/benchmark/dist/runners/base.js.map +0 -1
  235. package/packages/benchmark/dist/runners/index.d.ts +0 -10
  236. package/packages/benchmark/dist/runners/index.d.ts.map +0 -1
  237. package/packages/benchmark/dist/runners/index.js +0 -10
  238. package/packages/benchmark/dist/runners/index.js.map +0 -1
  239. package/packages/benchmark/dist/runners/single.d.ts +0 -19
  240. package/packages/benchmark/dist/runners/single.d.ts.map +0 -1
  241. package/packages/benchmark/dist/runners/single.js +0 -111
  242. package/packages/benchmark/dist/runners/single.js.map +0 -1
  243. package/packages/benchmark/dist/runners/subagent.d.ts +0 -32
  244. package/packages/benchmark/dist/runners/subagent.d.ts.map +0 -1
  245. package/packages/benchmark/dist/runners/subagent.js +0 -212
  246. package/packages/benchmark/dist/runners/subagent.js.map +0 -1
  247. package/packages/benchmark/dist/runners/swarm.d.ts +0 -36
  248. package/packages/benchmark/dist/runners/swarm.d.ts.map +0 -1
  249. package/packages/benchmark/dist/runners/swarm.js +0 -273
  250. package/packages/benchmark/dist/runners/swarm.js.map +0 -1
  251. package/packages/benchmark/dist/types.d.ts +0 -178
  252. package/packages/benchmark/dist/types.d.ts.map +0 -1
  253. package/packages/benchmark/dist/types.js +0 -16
  254. package/packages/benchmark/dist/types.js.map +0 -1
  255. package/packages/benchmark/package.json +0 -80
  256. package/packages/benchmark/src/benchmark.ts +0 -298
  257. package/packages/benchmark/src/cli.ts +0 -240
  258. package/packages/benchmark/src/harbor.ts +0 -170
  259. package/packages/benchmark/src/index.ts +0 -73
  260. package/packages/benchmark/src/runners/base.ts +0 -205
  261. package/packages/benchmark/src/runners/index.ts +0 -10
  262. package/packages/benchmark/src/runners/single.ts +0 -121
  263. package/packages/benchmark/src/runners/subagent.ts +0 -240
  264. package/packages/benchmark/src/runners/swarm.ts +0 -326
  265. package/packages/benchmark/src/types.ts +0 -205
  266. package/packages/benchmark/tsconfig.json +0 -20
  267. package/packages/cli-tester/README.md +0 -277
  268. package/packages/cli-tester/dist/index.d.ts +0 -21
  269. package/packages/cli-tester/dist/index.d.ts.map +0 -1
  270. package/packages/cli-tester/dist/index.js +0 -21
  271. package/packages/cli-tester/dist/index.js.map +0 -1
  272. package/packages/cli-tester/dist/utils/credential-check.d.ts +0 -56
  273. package/packages/cli-tester/dist/utils/credential-check.d.ts.map +0 -1
  274. package/packages/cli-tester/dist/utils/credential-check.js +0 -230
  275. package/packages/cli-tester/dist/utils/credential-check.js.map +0 -1
  276. package/packages/cli-tester/dist/utils/socket-client.d.ts +0 -76
  277. package/packages/cli-tester/dist/utils/socket-client.d.ts.map +0 -1
  278. package/packages/cli-tester/dist/utils/socket-client.js +0 -153
  279. package/packages/cli-tester/dist/utils/socket-client.js.map +0 -1
  280. package/packages/cli-tester/docker/Dockerfile +0 -61
  281. package/packages/cli-tester/docker/docker-compose.yml +0 -71
  282. package/packages/cli-tester/docker/entrypoint.sh +0 -58
  283. package/packages/cli-tester/package.json +0 -32
  284. package/packages/cli-tester/scripts/clear-auth.sh +0 -101
  285. package/packages/cli-tester/scripts/inject-message.sh +0 -42
  286. package/packages/cli-tester/scripts/start.sh +0 -71
  287. package/packages/cli-tester/scripts/test-cli.sh +0 -56
  288. package/packages/cli-tester/scripts/test-full-spawn.sh +0 -238
  289. package/packages/cli-tester/scripts/test-registration.sh +0 -182
  290. package/packages/cli-tester/scripts/test-setup-flow.sh +0 -202
  291. package/packages/cli-tester/scripts/test-spawn.sh +0 -140
  292. package/packages/cli-tester/scripts/test-with-daemon.sh +0 -247
  293. package/packages/cli-tester/scripts/verify-auth.sh +0 -112
  294. package/packages/cli-tester/src/index.ts +0 -40
  295. package/packages/cli-tester/src/utils/credential-check.ts +0 -284
  296. package/packages/cli-tester/src/utils/socket-client.ts +0 -211
  297. package/packages/cli-tester/tests/credential-check.test.ts +0 -56
  298. package/packages/cli-tester/tsconfig.json +0 -11
  299. package/packages/sdk/dist/browser-client.d.ts +0 -212
  300. package/packages/sdk/dist/browser-client.d.ts.map +0 -1
  301. package/packages/sdk/dist/browser-client.js +0 -750
  302. package/packages/sdk/dist/browser-client.js.map +0 -1
  303. package/packages/sdk/dist/browser-framing.d.ts +0 -46
  304. package/packages/sdk/dist/browser-framing.d.ts.map +0 -1
  305. package/packages/sdk/dist/browser-framing.js +0 -122
  306. package/packages/sdk/dist/browser-framing.js.map +0 -1
  307. package/packages/sdk/dist/standalone.d.ts +0 -89
  308. package/packages/sdk/dist/standalone.d.ts.map +0 -1
  309. package/packages/sdk/dist/standalone.js +0 -131
  310. package/packages/sdk/dist/standalone.js.map +0 -1
  311. package/packages/sdk/dist/transports/index.d.ts +0 -92
  312. package/packages/sdk/dist/transports/index.d.ts.map +0 -1
  313. package/packages/sdk/dist/transports/index.js +0 -129
  314. package/packages/sdk/dist/transports/index.js.map +0 -1
  315. package/packages/sdk/dist/transports/socket-transport.d.ts +0 -30
  316. package/packages/sdk/dist/transports/socket-transport.d.ts.map +0 -1
  317. package/packages/sdk/dist/transports/socket-transport.js +0 -94
  318. package/packages/sdk/dist/transports/socket-transport.js.map +0 -1
  319. package/packages/sdk/dist/transports/types.d.ts +0 -69
  320. package/packages/sdk/dist/transports/types.d.ts.map +0 -1
  321. package/packages/sdk/dist/transports/types.js +0 -10
  322. package/packages/sdk/dist/transports/types.js.map +0 -1
  323. package/packages/sdk/dist/transports/websocket-transport.d.ts +0 -55
  324. package/packages/sdk/dist/transports/websocket-transport.d.ts.map +0 -1
  325. package/packages/sdk/dist/transports/websocket-transport.js +0 -180
  326. package/packages/sdk/dist/transports/websocket-transport.js.map +0 -1
  327. package/packages/sdk/src/browser-client.ts +0 -985
  328. package/packages/sdk/src/browser-framing.test.ts +0 -115
  329. package/packages/sdk/src/browser-framing.ts +0 -150
  330. package/packages/sdk/src/standalone.ts +0 -183
  331. package/packages/sdk/src/transports/index.ts +0 -197
  332. package/packages/sdk/src/transports/socket-transport.ts +0 -115
  333. package/packages/sdk/src/transports/types.ts +0 -77
  334. package/packages/sdk/src/transports/websocket-transport.ts +0 -245
@@ -1,129 +0,0 @@
1
- /**
2
- * Transport module for relay client communication.
3
- * @agent-relay/sdk
4
- *
5
- * Provides transport abstraction and implementations:
6
- * - SocketTransport: Unix/TCP sockets (Node.js only)
7
- * - WebSocketTransport: WebSocket connections (Node.js and Browser)
8
- *
9
- * Auto-detection selects the appropriate transport based on environment.
10
- */
11
- // Socket transport (Node.js)
12
- export { SocketTransport, createSocketTransport, } from './socket-transport.js';
13
- // WebSocket transport (Node.js and Browser)
14
- export { WebSocketTransport, createWebSocketTransport, socketPathToWsUrl, } from './websocket-transport.js';
15
- import { SocketTransport } from './socket-transport.js';
16
- import { WebSocketTransport, socketPathToWsUrl } from './websocket-transport.js';
17
- /**
18
- * Detect the current runtime environment.
19
- */
20
- export function detectEnvironment() {
21
- const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
22
- const isNode = typeof process !== 'undefined' &&
23
- process.versions != null &&
24
- process.versions.node != null;
25
- const hasWebSocket = typeof WebSocket !== 'undefined' || isNode; // 'ws' can provide WebSocket in Node
26
- const hasUnixSockets = isNode; // Only Node.js supports Unix sockets
27
- return {
28
- isBrowser,
29
- isNode,
30
- hasWebSocket,
31
- hasUnixSockets,
32
- };
33
- }
34
- /**
35
- * Create a transport automatically based on environment and options.
36
- *
37
- * In browser environments, WebSocket transport is always used.
38
- * In Node.js, Unix socket is preferred if socketPath is provided,
39
- * otherwise WebSocket is used if wsUrl or wsHost is provided.
40
- *
41
- * @param options - Transport configuration options
42
- * @returns Configured transport instance
43
- *
44
- * @example Browser usage
45
- * ```typescript
46
- * const transport = createAutoTransport({
47
- * wsUrl: 'wss://relay.example.com/ws'
48
- * });
49
- * ```
50
- *
51
- * @example Node.js with Unix socket
52
- * ```typescript
53
- * const transport = createAutoTransport({
54
- * socketPath: '/tmp/agent-relay.sock'
55
- * });
56
- * ```
57
- *
58
- * @example Node.js with WebSocket
59
- * ```typescript
60
- * const transport = createAutoTransport({
61
- * wsHost: 'localhost',
62
- * wsPort: 3888
63
- * });
64
- * ```
65
- */
66
- export function createAutoTransport(options) {
67
- const env = detectEnvironment();
68
- const { forceTransport, ...config } = options;
69
- // Forced transport type
70
- if (forceTransport === 'websocket') {
71
- return createWsTransportFromOptions(options);
72
- }
73
- if (forceTransport === 'socket') {
74
- if (!options.socketPath) {
75
- throw new Error('socketPath is required when forcing socket transport');
76
- }
77
- if (!env.hasUnixSockets) {
78
- throw new Error('Unix sockets are not available in this environment');
79
- }
80
- return new SocketTransport({
81
- socketPath: options.socketPath,
82
- connectTimeout: config.connectTimeout,
83
- });
84
- }
85
- // Auto-detect: Browser always uses WebSocket
86
- if (env.isBrowser) {
87
- return createWsTransportFromOptions(options);
88
- }
89
- // Node.js: prefer Unix socket if path is provided
90
- if (env.isNode && options.socketPath) {
91
- return new SocketTransport({
92
- socketPath: options.socketPath,
93
- connectTimeout: config.connectTimeout,
94
- });
95
- }
96
- // Fall back to WebSocket
97
- return createWsTransportFromOptions(options);
98
- }
99
- /**
100
- * Create WebSocket transport from options.
101
- */
102
- function createWsTransportFromOptions(options) {
103
- let url = options.wsUrl;
104
- if (!url) {
105
- // Construct URL from components
106
- const host = options.wsHost ?? 'localhost';
107
- const port = options.wsPort ?? 3888;
108
- const path = options.wsPath ?? '/ws';
109
- const secure = options.wsSecure ?? false;
110
- url = socketPathToWsUrl(host, port, path, secure);
111
- }
112
- return new WebSocketTransport({
113
- url,
114
- connectTimeout: options.connectTimeout,
115
- });
116
- }
117
- /**
118
- * Check if running in a browser environment.
119
- */
120
- export function isBrowser() {
121
- return detectEnvironment().isBrowser;
122
- }
123
- /**
124
- * Check if running in Node.js environment.
125
- */
126
- export function isNode() {
127
- return detectEnvironment().isNode;
128
- }
129
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- /**
2
- * Unix/TCP Socket Transport for Node.js environments.
3
- * @agent-relay/sdk
4
- */
5
- import type { Transport, TransportConfig, TransportEvents, TransportState } from './types.js';
6
- export interface SocketTransportConfig extends TransportConfig {
7
- /** Unix socket path or TCP host:port */
8
- socketPath: string;
9
- }
10
- /**
11
- * Socket-based transport for Unix sockets and TCP connections.
12
- * This is the default transport for Node.js environments.
13
- */
14
- export declare class SocketTransport implements Transport {
15
- private socket?;
16
- private config;
17
- private events;
18
- private _state;
19
- constructor(config: SocketTransportConfig);
20
- get state(): TransportState;
21
- setEvents(events: TransportEvents): void;
22
- connect(): Promise<void>;
23
- disconnect(): void;
24
- send(data: Uint8Array | Buffer): boolean;
25
- }
26
- /**
27
- * Create a socket transport for Unix/TCP connections.
28
- */
29
- export declare function createSocketTransport(socketPath: string, config?: TransportConfig): SocketTransport;
30
- //# sourceMappingURL=socket-transport.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"socket-transport.d.ts","sourceRoot":"","sources":["../../src/transports/socket-transport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9F,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC5D,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAC/C,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAkC;gBAEpC,MAAM,EAAE,qBAAqB;IAOzC,IAAI,KAAK,IAAI,cAAc,CAE1B;IAED,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAIxC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CxB,UAAU,IAAI,IAAI;IAWlB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO;CAczC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,eAAe,CAEnG"}
@@ -1,94 +0,0 @@
1
- /**
2
- * Unix/TCP Socket Transport for Node.js environments.
3
- * @agent-relay/sdk
4
- */
5
- import net from 'node:net';
6
- /**
7
- * Socket-based transport for Unix sockets and TCP connections.
8
- * This is the default transport for Node.js environments.
9
- */
10
- export class SocketTransport {
11
- socket;
12
- config;
13
- events = {};
14
- _state = 'disconnected';
15
- constructor(config) {
16
- this.config = {
17
- connectTimeout: 5000,
18
- ...config,
19
- };
20
- }
21
- get state() {
22
- return this._state;
23
- }
24
- setEvents(events) {
25
- this.events = events;
26
- }
27
- connect() {
28
- if (this._state !== 'disconnected') {
29
- return Promise.resolve();
30
- }
31
- return new Promise((resolve, reject) => {
32
- this._state = 'connecting';
33
- const timeout = setTimeout(() => {
34
- if (this._state === 'connecting') {
35
- this.socket?.destroy();
36
- this._state = 'disconnected';
37
- reject(new Error('Connection timeout'));
38
- }
39
- }, this.config.connectTimeout);
40
- this.socket = net.createConnection(this.config.socketPath, () => {
41
- clearTimeout(timeout);
42
- this._state = 'connected';
43
- this.events.onConnect?.();
44
- resolve();
45
- });
46
- this.socket.on('data', (data) => {
47
- // Convert Buffer to Uint8Array for consistent interface
48
- this.events.onData?.(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
49
- });
50
- this.socket.on('close', () => {
51
- this._state = 'disconnected';
52
- this.events.onClose?.();
53
- });
54
- this.socket.on('error', (err) => {
55
- clearTimeout(timeout);
56
- if (this._state === 'connecting') {
57
- this._state = 'disconnected';
58
- reject(err);
59
- }
60
- this.events.onError?.(err);
61
- });
62
- });
63
- }
64
- disconnect() {
65
- if (!this.socket || this._state === 'disconnected') {
66
- return;
67
- }
68
- this._state = 'closing';
69
- this.socket.end();
70
- this.socket = undefined;
71
- this._state = 'disconnected';
72
- }
73
- send(data) {
74
- if (!this.socket || this._state !== 'connected') {
75
- return false;
76
- }
77
- try {
78
- // Ensure we're sending a Buffer
79
- const buffer = data instanceof Buffer ? data : Buffer.from(data);
80
- this.socket.write(buffer);
81
- return true;
82
- }
83
- catch {
84
- return false;
85
- }
86
- }
87
- }
88
- /**
89
- * Create a socket transport for Unix/TCP connections.
90
- */
91
- export function createSocketTransport(socketPath, config) {
92
- return new SocketTransport({ socketPath, ...config });
93
- }
94
- //# sourceMappingURL=socket-transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"socket-transport.js","sourceRoot":"","sources":["../../src/transports/socket-transport.ts"],"names":[],"mappings":"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"}
@@ -1,69 +0,0 @@
1
- /**
2
- * Transport abstraction for relay client communication.
3
- * @agent-relay/sdk
4
- *
5
- * Defines the interface for different transport implementations:
6
- * - SocketTransport: Unix/TCP sockets (Node.js)
7
- * - WebSocketTransport: WebSocket connections (Node.js and Browser)
8
- */
9
- /**
10
- * Transport connection state.
11
- */
12
- export type TransportState = 'disconnected' | 'connecting' | 'connected' | 'closing';
13
- /**
14
- * Transport event handlers.
15
- */
16
- export interface TransportEvents {
17
- /** Called when transport connects successfully */
18
- onConnect?: () => void;
19
- /** Called when transport receives data */
20
- onData?: (data: Uint8Array) => void;
21
- /** Called when transport disconnects */
22
- onClose?: () => void;
23
- /** Called when transport encounters an error */
24
- onError?: (error: Error) => void;
25
- }
26
- /**
27
- * Transport configuration options.
28
- */
29
- export interface TransportConfig {
30
- /** Connection timeout in milliseconds */
31
- connectTimeout?: number;
32
- }
33
- /**
34
- * Transport interface for relay client communication.
35
- *
36
- * Implementations must handle:
37
- * - Connection lifecycle (connect, disconnect)
38
- * - Binary data transmission
39
- * - Event callbacks for state changes
40
- */
41
- export interface Transport {
42
- /** Current connection state */
43
- readonly state: TransportState;
44
- /**
45
- * Connect to the relay endpoint.
46
- * @throws Error if connection fails
47
- */
48
- connect(): Promise<void>;
49
- /**
50
- * Disconnect from the relay.
51
- */
52
- disconnect(): void;
53
- /**
54
- * Send binary data to the relay.
55
- * @param data - Data to send (Buffer or Uint8Array)
56
- * @returns true if data was queued for sending
57
- */
58
- send(data: Uint8Array | Buffer): boolean;
59
- /**
60
- * Set event handlers.
61
- * @param events - Event handler callbacks
62
- */
63
- setEvents(events: TransportEvents): void;
64
- }
65
- /**
66
- * Transport factory function type.
67
- */
68
- export type TransportFactory = (config?: TransportConfig) => Transport;
69
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transports/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,gDAAgD;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAE/B;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;OAEG;IACH,UAAU,IAAI,IAAI,CAAC;IAEnB;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;IAEzC;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,EAAE,eAAe,KAAK,SAAS,CAAC"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Transport abstraction for relay client communication.
3
- * @agent-relay/sdk
4
- *
5
- * Defines the interface for different transport implementations:
6
- * - SocketTransport: Unix/TCP sockets (Node.js)
7
- * - WebSocketTransport: WebSocket connections (Node.js and Browser)
8
- */
9
- export {};
10
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/transports/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -1,55 +0,0 @@
1
- /**
2
- * WebSocket Transport for browser and Node.js environments.
3
- * @agent-relay/sdk
4
- *
5
- * Uses native WebSocket in browsers and 'ws' package in Node.js.
6
- * The transport expects the daemon to have a WebSocket endpoint (e.g., /ws).
7
- */
8
- import type { Transport, TransportConfig, TransportEvents, TransportState } from './types.js';
9
- export interface WebSocketTransportConfig extends TransportConfig {
10
- /** WebSocket URL (e.g., ws://localhost:3888/ws) */
11
- url: string;
12
- /** Protocols to use in WebSocket handshake */
13
- protocols?: string | string[];
14
- }
15
- /**
16
- * WebSocket-based transport for browser and Node.js.
17
- *
18
- * In browsers, uses native WebSocket.
19
- * In Node.js, requires 'ws' package (optional dependency).
20
- */
21
- export declare class WebSocketTransport implements Transport {
22
- private ws?;
23
- private config;
24
- private events;
25
- private _state;
26
- private WebSocketImpl?;
27
- constructor(config: WebSocketTransportConfig);
28
- get state(): TransportState;
29
- setEvents(events: TransportEvents): void;
30
- /**
31
- * Get WebSocket implementation (native or 'ws' package).
32
- */
33
- private getWebSocketImpl;
34
- connect(): Promise<void>;
35
- disconnect(): void;
36
- send(data: Uint8Array | Buffer): boolean;
37
- }
38
- /**
39
- * Create a WebSocket transport.
40
- *
41
- * @param url - WebSocket URL (e.g., ws://localhost:3888/ws)
42
- * @param config - Additional configuration options
43
- */
44
- export declare function createWebSocketTransport(url: string, config?: Omit<WebSocketTransportConfig, 'url'>): WebSocketTransport;
45
- /**
46
- * Convert a socket path to WebSocket URL.
47
- * Useful when daemon provides both Unix socket and WebSocket endpoints.
48
- *
49
- * @param host - Host address (default: localhost)
50
- * @param port - Port number (default: 3888)
51
- * @param path - WebSocket path (default: /ws)
52
- * @param secure - Use wss:// instead of ws:// (default: false)
53
- */
54
- export declare function socketPathToWsUrl(host?: string, port?: number, path?: string, secure?: boolean): string;
55
- //# sourceMappingURL=websocket-transport.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"websocket-transport.d.ts","sourceRoot":"","sources":["../../src/transports/websocket-transport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9F,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC/B;AAiCD;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAClD,OAAO,CAAC,EAAE,CAAC,CAAgB;IAC3B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,aAAa,CAAC,CAAuB;gBAEjC,MAAM,EAAE,wBAAwB;IAO5C,IAAI,KAAK,IAAI,cAAc,CAE1B;IAED,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAIxC;;OAEG;YACW,gBAAgB;IA+BxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqE9B,UAAU,IAAI,IAAI;IAWlB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO;CAsBzC;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC,GAC7C,kBAAkB,CAEpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,SAAc,EAClB,IAAI,SAAO,EACX,IAAI,SAAQ,EACZ,MAAM,UAAQ,GACb,MAAM,CAGR"}
@@ -1,180 +0,0 @@
1
- /**
2
- * WebSocket Transport for browser and Node.js environments.
3
- * @agent-relay/sdk
4
- *
5
- * Uses native WebSocket in browsers and 'ws' package in Node.js.
6
- * The transport expects the daemon to have a WebSocket endpoint (e.g., /ws).
7
- */
8
- /**
9
- * WebSocket-based transport for browser and Node.js.
10
- *
11
- * In browsers, uses native WebSocket.
12
- * In Node.js, requires 'ws' package (optional dependency).
13
- */
14
- export class WebSocketTransport {
15
- ws;
16
- config;
17
- events = {};
18
- _state = 'disconnected';
19
- WebSocketImpl;
20
- constructor(config) {
21
- this.config = {
22
- connectTimeout: 5000,
23
- ...config,
24
- };
25
- }
26
- get state() {
27
- return this._state;
28
- }
29
- setEvents(events) {
30
- this.events = events;
31
- }
32
- /**
33
- * Get WebSocket implementation (native or 'ws' package).
34
- */
35
- async getWebSocketImpl() {
36
- if (this.WebSocketImpl) {
37
- return this.WebSocketImpl;
38
- }
39
- // Check for browser environment
40
- if (typeof globalThis !== 'undefined' && 'WebSocket' in globalThis) {
41
- this.WebSocketImpl = globalThis.WebSocket;
42
- return this.WebSocketImpl;
43
- }
44
- // Node.js environment - try to load 'ws' package
45
- try {
46
- // Dynamic import of 'ws' for Node.js
47
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
- const wsModule = await import('ws');
49
- const impl = wsModule.default || wsModule.WebSocket || wsModule;
50
- if (!impl) {
51
- throw new Error('ws module loaded but WebSocket constructor not found');
52
- }
53
- this.WebSocketImpl = impl;
54
- return this.WebSocketImpl;
55
- }
56
- catch {
57
- throw new Error('WebSocket not available. In Node.js, install the "ws" package:\n' +
58
- ' npm install ws\n\n' +
59
- 'In browsers, native WebSocket should be available.');
60
- }
61
- }
62
- async connect() {
63
- if (this._state !== 'disconnected') {
64
- return;
65
- }
66
- const WebSocketImpl = await this.getWebSocketImpl();
67
- return new Promise((resolve, reject) => {
68
- this._state = 'connecting';
69
- const timeout = setTimeout(() => {
70
- if (this._state === 'connecting') {
71
- this.ws?.close();
72
- this._state = 'disconnected';
73
- reject(new Error('Connection timeout'));
74
- }
75
- }, this.config.connectTimeout);
76
- try {
77
- this.ws = new WebSocketImpl(this.config.url, this.config.protocols);
78
- this.ws.binaryType = 'arraybuffer';
79
- this.ws.onopen = () => {
80
- clearTimeout(timeout);
81
- this._state = 'connected';
82
- this.events.onConnect?.();
83
- resolve();
84
- };
85
- this.ws.onmessage = (event) => {
86
- // Handle binary data
87
- if (event.data instanceof ArrayBuffer) {
88
- this.events.onData?.(new Uint8Array(event.data));
89
- }
90
- else if (typeof event.data === 'string') {
91
- // Convert string to Uint8Array (shouldn't happen with binaryType = 'arraybuffer')
92
- const encoder = new TextEncoder();
93
- this.events.onData?.(encoder.encode(event.data));
94
- }
95
- else if (event.data && typeof event.data.buffer !== 'undefined') {
96
- // Handle Node.js Buffer
97
- const buf = event.data;
98
- this.events.onData?.(new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength));
99
- }
100
- };
101
- this.ws.onclose = () => {
102
- clearTimeout(timeout);
103
- this._state = 'disconnected';
104
- this.events.onClose?.();
105
- };
106
- this.ws.onerror = (event) => {
107
- clearTimeout(timeout);
108
- const error = event instanceof Error
109
- ? event
110
- : new Error('WebSocket error');
111
- if (this._state === 'connecting') {
112
- this._state = 'disconnected';
113
- reject(error);
114
- }
115
- this.events.onError?.(error);
116
- };
117
- }
118
- catch (err) {
119
- clearTimeout(timeout);
120
- this._state = 'disconnected';
121
- reject(err instanceof Error ? err : new Error(String(err)));
122
- }
123
- });
124
- }
125
- disconnect() {
126
- if (!this.ws || this._state === 'disconnected') {
127
- return;
128
- }
129
- this._state = 'closing';
130
- this.ws.close();
131
- this.ws = undefined;
132
- this._state = 'disconnected';
133
- }
134
- send(data) {
135
- if (!this.ws || this._state !== 'connected') {
136
- return false;
137
- }
138
- try {
139
- // WebSocket send accepts ArrayBuffer or Uint8Array
140
- // Convert Buffer to Uint8Array for browser compatibility
141
- let bytes;
142
- if (data instanceof Uint8Array) {
143
- bytes = data;
144
- }
145
- else {
146
- // Handle Buffer (Node.js)
147
- const buf = data;
148
- bytes = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
149
- }
150
- this.ws.send(bytes);
151
- return true;
152
- }
153
- catch {
154
- return false;
155
- }
156
- }
157
- }
158
- /**
159
- * Create a WebSocket transport.
160
- *
161
- * @param url - WebSocket URL (e.g., ws://localhost:3888/ws)
162
- * @param config - Additional configuration options
163
- */
164
- export function createWebSocketTransport(url, config) {
165
- return new WebSocketTransport({ url, ...config });
166
- }
167
- /**
168
- * Convert a socket path to WebSocket URL.
169
- * Useful when daemon provides both Unix socket and WebSocket endpoints.
170
- *
171
- * @param host - Host address (default: localhost)
172
- * @param port - Port number (default: 3888)
173
- * @param path - WebSocket path (default: /ws)
174
- * @param secure - Use wss:// instead of ws:// (default: false)
175
- */
176
- export function socketPathToWsUrl(host = 'localhost', port = 3888, path = '/ws', secure = false) {
177
- const protocol = secure ? 'wss' : 'ws';
178
- return `${protocol}://${host}:${port}${path}`;
179
- }
180
- //# sourceMappingURL=websocket-transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"websocket-transport.js","sourceRoot":"","sources":["../../src/transports/websocket-transport.ts"],"names":[],"mappings":"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"}