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,182 +0,0 @@
1
- #!/bin/bash
2
- # Test agent registration flow - monitors what happens during spawn
3
- # This tests the critical registration step that's timing out for cursor
4
- #
5
- # Usage: ./test-registration.sh <cli> [timeout_seconds]
6
- # Example: ./test-registration.sh cursor 60
7
- # DEBUG_SPAWN=1 ./test-registration.sh cursor
8
-
9
- set -e
10
-
11
- CLI=${1:-cursor}
12
- TIMEOUT_SEC=${2:-60}
13
-
14
- # Map CLI name to actual command
15
- CLI_CMD="$CLI"
16
- if [ "$CLI" = "cursor" ]; then
17
- CLI_CMD="agent"
18
- fi
19
-
20
- NAME="reg-test-${CLI}"
21
- SOCKET="/tmp/relay-pty-${NAME}.sock"
22
-
23
- # Test data directories (mimic real daemon structure)
24
- TEST_DATA_DIR="/tmp/relay-registration-test"
25
- AGENTS_FILE="$TEST_DATA_DIR/agents.json"
26
- CONNECTED_FILE="$TEST_DATA_DIR/connected-agents.json"
27
-
28
- # Create directories
29
- mkdir -p "$TEST_DATA_DIR"
30
-
31
- # Initialize empty registration files
32
- echo '{"agents":[],"updatedAt":'$(date +%s000)'}' > "$CONNECTED_FILE"
33
- echo '{}' > "$AGENTS_FILE"
34
-
35
- # Cleanup function
36
- cleanup() {
37
- echo ""
38
- echo "========================================"
39
- echo " Final State"
40
- echo "========================================"
41
- echo ""
42
- echo "Connected agents file ($CONNECTED_FILE):"
43
- cat "$CONNECTED_FILE" 2>/dev/null | jq . 2>/dev/null || cat "$CONNECTED_FILE" 2>/dev/null || echo " (empty/missing)"
44
- echo ""
45
- echo "Agents registry file ($AGENTS_FILE):"
46
- cat "$AGENTS_FILE" 2>/dev/null | jq . 2>/dev/null || cat "$AGENTS_FILE" 2>/dev/null || echo " (empty/missing)"
47
- echo ""
48
- echo "Cleaning up processes..."
49
- rm -f "$SOCKET"
50
- pkill -f "relay-pty.*${NAME}" 2>/dev/null || true
51
- }
52
- trap cleanup EXIT
53
-
54
- # Remove stale socket
55
- rm -f "$SOCKET"
56
-
57
- echo "========================================"
58
- echo " Registration Flow Test: $CLI"
59
- echo "========================================"
60
- echo ""
61
- echo "This test monitors the registration files that the spawner polls."
62
- echo "When the spawner times out, it's because these files don't show"
63
- echo "the agent as registered within 30 seconds."
64
- echo ""
65
- echo "Test config:"
66
- echo " CLI: $CLI_CMD"
67
- echo " Name: $NAME"
68
- echo " Socket: $SOCKET"
69
- echo " Timeout: ${TIMEOUT_SEC}s"
70
- echo " Connected file: $CONNECTED_FILE"
71
- echo " Agents file: $AGENTS_FILE"
72
- echo ""
73
-
74
- # Build CLI arguments
75
- CLI_ARGS=()
76
- case $CLI in
77
- claude)
78
- CLI_ARGS+=(--dangerously-skip-permissions)
79
- ;;
80
- cursor)
81
- CLI_ARGS+=(--force)
82
- ;;
83
- esac
84
-
85
- echo "Command: $CLI_CMD ${CLI_ARGS[*]}"
86
- echo ""
87
- echo "========================================"
88
- echo " Phase 1: Starting CLI"
89
- echo "========================================"
90
- echo ""
91
-
92
- # Start relay-pty in background
93
- RELAY_ARGS=(
94
- --name "$NAME"
95
- --socket "$SOCKET"
96
- --idle-timeout 300
97
- --json-output
98
- )
99
-
100
- if [ ${#CLI_ARGS[@]} -gt 0 ]; then
101
- relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD" "${CLI_ARGS[@]}" 2>&1 &
102
- else
103
- relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD" 2>&1 &
104
- fi
105
-
106
- PTY_PID=$!
107
- echo "[$(date +%T)] Started relay-pty (PID: $PTY_PID)"
108
-
109
- # Give it a moment to start
110
- sleep 1
111
-
112
- # Check if process is still running
113
- if ! kill -0 $PTY_PID 2>/dev/null; then
114
- echo "[$(date +%T)] ERROR: relay-pty exited immediately"
115
- wait $PTY_PID || true
116
- exit 1
117
- fi
118
-
119
- echo "[$(date +%T)] relay-pty is running"
120
- echo ""
121
-
122
- echo "========================================"
123
- echo " Phase 2: Monitoring Registration"
124
- echo "========================================"
125
- echo ""
126
- echo "Polling for agent registration (timeout: ${TIMEOUT_SEC}s)..."
127
- echo "In a real spawn, the daemon would update these files."
128
- echo ""
129
-
130
- # Poll for registration (simulating what spawner does)
131
- START_TIME=$(date +%s)
132
- POLL_COUNT=0
133
-
134
- while true; do
135
- POLL_COUNT=$((POLL_COUNT + 1))
136
- CURRENT_TIME=$(date +%s)
137
- ELAPSED=$((CURRENT_TIME - START_TIME))
138
-
139
- # Check if process is still running
140
- if ! kill -0 $PTY_PID 2>/dev/null; then
141
- echo ""
142
- echo "[$(date +%T)] ERROR: relay-pty exited after ${ELAPSED}s"
143
- echo ""
144
- echo "This is likely the issue - the CLI crashed or exited before registration."
145
- echo "Check the output above for error messages."
146
- wait $PTY_PID || true
147
- exit 1
148
- fi
149
-
150
- # Check socket exists
151
- if [ -S "$SOCKET" ]; then
152
- # Try to get status from socket
153
- STATUS=$(echo '{"type":"status"}' | timeout 2 nc -U "$SOCKET" 2>/dev/null || echo "timeout")
154
- if [ "$STATUS" != "timeout" ]; then
155
- echo "[$(date +%T)] Poll #$POLL_COUNT: Socket active, status: $(echo "$STATUS" | head -c 100)..."
156
- else
157
- echo "[$(date +%T)] Poll #$POLL_COUNT: Socket exists but no response"
158
- fi
159
- else
160
- echo "[$(date +%T)] Poll #$POLL_COUNT: Socket not yet created"
161
- fi
162
-
163
- # Check timeout
164
- if [ $ELAPSED -ge $TIMEOUT_SEC ]; then
165
- echo ""
166
- echo "========================================"
167
- echo " TIMEOUT after ${ELAPSED}s"
168
- echo "========================================"
169
- echo ""
170
- echo "This simulates what happens when the spawner times out."
171
- echo "In a real scenario, the daemon would need to see this agent"
172
- echo "and update the registration files within 30 seconds."
173
- echo ""
174
- echo "To debug further:"
175
- echo " 1. Check if the CLI started correctly (auth issues?)"
176
- echo " 2. Check if relay-pty connected to the daemon"
177
- echo " 3. Check daemon logs for this agent name"
178
- exit 1
179
- fi
180
-
181
- sleep 1
182
- done
@@ -1,202 +0,0 @@
1
- #!/bin/bash
2
- # Test the EXACT setup terminal flow used for provider onboarding
3
- # This replicates what TerminalProviderSetup.tsx does when you click "Connect"
4
- #
5
- # The setup flow:
6
- # 1. Frontend calls POST /api/workspaces/{id}/agents with { name, provider, interactive: true }
7
- # 2. Spawner runs: relay-pty --name __setup__cursor-xxx -- agent (NO --force flag!)
8
- # 3. Spawner waits up to 30s for agent to register with daemon
9
- # 4. If timeout, spawn fails with "Agent registration timeout"
10
- #
11
- # Usage: ./test-setup-flow.sh <cli> [timeout_seconds]
12
- # Example: ./test-setup-flow.sh cursor 60
13
- # DEBUG=1 ./test-setup-flow.sh cursor
14
-
15
- set -e
16
-
17
- CLI=${1:-cursor}
18
- TIMEOUT_SEC=${2:-60}
19
-
20
- # Generate setup agent name like frontend does
21
- TIMESTAMP=$(date +%s | tail -c 8)
22
- RANDOM_SUFFIX=$(head /dev/urandom | tr -dc 'a-z0-9' | head -c 4)
23
- NAME="__setup__${CLI}-${TIMESTAMP}${RANDOM_SUFFIX}"
24
-
25
- # Map CLI to command
26
- CLI_CMD="$CLI"
27
- if [ "$CLI" = "cursor" ]; then
28
- CLI_CMD="agent"
29
- fi
30
-
31
- SOCKET="/tmp/relay-pty-${NAME}.sock"
32
-
33
- echo "========================================"
34
- echo " Setup Terminal Flow Test: $CLI"
35
- echo "========================================"
36
- echo ""
37
- echo "This test replicates the EXACT flow from TerminalProviderSetup.tsx"
38
- echo ""
39
- echo "Key difference from test-spawn.sh:"
40
- echo " - interactive=true means NO auto-accept flags (--force, etc.)"
41
- echo " - This is how setup terminals work - user must respond to prompts"
42
- echo ""
43
- echo "Configuration:"
44
- echo " CLI: $CLI_CMD"
45
- echo " Agent name: $NAME"
46
- echo " Socket: $SOCKET"
47
- echo " Interactive: true (no --force, no --dangerously-skip-permissions)"
48
- echo " Timeout: ${TIMEOUT_SEC}s"
49
- echo ""
50
-
51
- # Interactive mode - no auto-accept flags, but some CLIs need auth subcommands
52
- CLI_ARGS=()
53
- case $CLI in
54
- copilot)
55
- CLI_ARGS+=(auth login)
56
- ;;
57
- opencode)
58
- CLI_ARGS+=(auth login)
59
- ;;
60
- droid)
61
- CLI_ARGS+=(--login)
62
- ;;
63
- codex)
64
- CLI_ARGS+=(login)
65
- ;;
66
- esac
67
-
68
- if [ ${#CLI_ARGS[@]} -gt 0 ]; then
69
- echo "Command: relay-pty --name $NAME -- $CLI_CMD ${CLI_ARGS[*]}"
70
- else
71
- echo "Command: relay-pty --name $NAME -- $CLI_CMD"
72
- fi
73
- echo " (no auto-accept flags because interactive=true)"
74
- echo ""
75
-
76
- # Cleanup
77
- cleanup() {
78
- echo ""
79
- echo "Cleaning up..."
80
- rm -f "$SOCKET"
81
- if [ -n "$PTY_PID" ]; then
82
- kill $PTY_PID 2>/dev/null || true
83
- fi
84
- }
85
- trap cleanup EXIT
86
-
87
- # Remove stale socket
88
- rm -f "$SOCKET"
89
-
90
- echo "========================================"
91
- echo " Starting Setup Terminal"
92
- echo "========================================"
93
- echo ""
94
-
95
- # Build relay-pty args
96
- RELAY_ARGS=(
97
- --name "$NAME"
98
- --socket "$SOCKET"
99
- --idle-timeout 300
100
- )
101
-
102
- # Add verbose output
103
- if [ -n "$DEBUG" ]; then
104
- RELAY_ARGS+=(--json-output)
105
- echo "[DEBUG] JSON output enabled"
106
- echo ""
107
- fi
108
-
109
- # Start in background so we can monitor
110
- if [ ${#CLI_ARGS[@]} -gt 0 ]; then
111
- relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD" "${CLI_ARGS[@]}" 2>&1 &
112
- else
113
- relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD" 2>&1 &
114
- fi
115
- PTY_PID=$!
116
-
117
- echo "[$(date +%T)] Started relay-pty (PID: $PTY_PID)"
118
- echo ""
119
- echo "The CLI is now running. In a real setup flow, you would see"
120
- echo "the terminal output in the browser and respond to prompts there."
121
- echo ""
122
- echo "Watch for:"
123
- echo " - Trust prompts (workspace trust, etc.)"
124
- echo " - Auth URL being printed"
125
- echo " - Any errors or crashes"
126
- echo ""
127
-
128
- # Give it a moment
129
- sleep 2
130
-
131
- # Check if still running
132
- if ! kill -0 $PTY_PID 2>/dev/null; then
133
- echo "[$(date +%T)] ERROR: relay-pty exited immediately!"
134
- echo ""
135
- echo "This means the CLI crashed on startup."
136
- echo "Common causes:"
137
- echo " - CLI not installed"
138
- echo " - Missing dependencies"
139
- echo " - Permission issues"
140
- exit 1
141
- fi
142
-
143
- echo "========================================"
144
- echo " Monitoring (${TIMEOUT_SEC}s timeout)"
145
- echo "========================================"
146
- echo ""
147
- echo "In a real spawn, the spawner would poll registration files here."
148
- echo "The timeout you're seeing is because this polling fails."
149
- echo ""
150
- echo "Press Ctrl+C to stop, or wait for timeout."
151
- echo ""
152
-
153
- START_TIME=$(date +%s)
154
-
155
- while true; do
156
- CURRENT_TIME=$(date +%s)
157
- ELAPSED=$((CURRENT_TIME - START_TIME))
158
-
159
- # Check process
160
- if ! kill -0 $PTY_PID 2>/dev/null; then
161
- echo ""
162
- echo "[$(date +%T)] CLI exited after ${ELAPSED}s"
163
- echo ""
164
- echo "If this was unexpected, check the output above for errors."
165
- echo "If the CLI authenticated and exited normally, that's OK."
166
- exit 0
167
- fi
168
-
169
- # Check socket
170
- if [ -S "$SOCKET" ]; then
171
- STATUS=$(echo '{"type":"status"}' | timeout 2 nc -U "$SOCKET" 2>/dev/null | head -1 || echo "")
172
- if [ -n "$STATUS" ]; then
173
- IDLE=$(echo "$STATUS" | grep -o '"agent_idle":[^,}]*' | cut -d: -f2 || echo "unknown")
174
- echo "[$(date +%T)] +${ELAPSED}s: Socket OK, idle=$IDLE"
175
- else
176
- echo "[$(date +%T)] +${ELAPSED}s: Socket exists, no status response"
177
- fi
178
- else
179
- echo "[$(date +%T)] +${ELAPSED}s: Waiting for socket..."
180
- fi
181
-
182
- # Timeout check
183
- if [ $ELAPSED -ge $TIMEOUT_SEC ]; then
184
- echo ""
185
- echo "========================================"
186
- echo " Test Complete (${TIMEOUT_SEC}s elapsed)"
187
- echo "========================================"
188
- echo ""
189
- echo "The CLI ran for ${TIMEOUT_SEC}s without exiting."
190
- echo ""
191
- echo "If this were a real spawn:"
192
- echo " - The spawner would have timed out at 30s"
193
- echo " - You'd see 'Agent registration timeout' error"
194
- echo ""
195
- echo "To continue interacting with the CLI, the process"
196
- echo "is still running. Press Enter to stop it."
197
- read -r
198
- exit 0
199
- fi
200
-
201
- sleep 3
202
- done
@@ -1,140 +0,0 @@
1
- #!/bin/bash
2
- # Test CLI spawn flow - simulates real spawner behavior
3
- # This is a more realistic test that mimics what AgentSpawner does
4
- #
5
- # Usage: ./test-spawn.sh <cli> [--interactive]
6
- # Example: ./test-spawn.sh cursor
7
- # ./test-spawn.sh cursor --interactive
8
- # DEBUG_SPAWN=1 ./test-spawn.sh cursor
9
-
10
- set -e
11
-
12
- CLI=${1:-cursor}
13
- INTERACTIVE=""
14
- if [ "$2" = "--interactive" ]; then
15
- INTERACTIVE="1"
16
- fi
17
-
18
- # Map CLI name to actual command (cursor installs as 'agent')
19
- CLI_CMD="$CLI"
20
- if [ "$CLI" = "cursor" ]; then
21
- CLI_CMD="agent"
22
- fi
23
-
24
- NAME="spawn-test-${CLI}"
25
- SOCKET="/tmp/relay-pty-${NAME}.sock"
26
- RELAY_DATA_DIR="/tmp/relay-test-data"
27
-
28
- # Create test data directories
29
- mkdir -p "$RELAY_DATA_DIR"
30
-
31
- # Cleanup function
32
- cleanup() {
33
- echo ""
34
- echo "Cleaning up..."
35
- rm -f "$SOCKET"
36
- pkill -f "relay-pty.*${NAME}" 2>/dev/null || true
37
- }
38
- trap cleanup EXIT
39
-
40
- # Remove stale socket if exists
41
- rm -f "$SOCKET"
42
-
43
- echo "========================================"
44
- echo " Spawn Flow Test: $CLI"
45
- echo "========================================"
46
- echo ""
47
- echo "This test simulates what AgentSpawner.spawn() does:"
48
- echo " 1. Builds command with appropriate flags"
49
- echo " 2. Starts relay-pty with the CLI"
50
- echo " 3. Monitors for daemon registration"
51
- echo ""
52
- echo "Session name: $NAME"
53
- echo "Socket path: $SOCKET"
54
- echo "Data dir: $RELAY_DATA_DIR"
55
- echo ""
56
-
57
- # Build CLI arguments exactly like spawner does
58
- CLI_ARGS=()
59
-
60
- # Add args based on CLI type
61
- case $CLI in
62
- claude)
63
- # Claude: add --dangerously-skip-permissions in non-interactive mode
64
- if [ -z "$INTERACTIVE" ]; then
65
- CLI_ARGS+=(--dangerously-skip-permissions)
66
- echo "[spawn] Adding --dangerously-skip-permissions (non-interactive mode)"
67
- fi
68
- ;;
69
- cursor)
70
- # Cursor: add --force in non-interactive mode
71
- if [ -z "$INTERACTIVE" ]; then
72
- CLI_ARGS+=(--force)
73
- echo "[spawn] Adding --force (non-interactive mode)"
74
- fi
75
- ;;
76
- codex)
77
- # Codex: supports device flow for headless
78
- if [ -z "$INTERACTIVE" ]; then
79
- CLI_ARGS+=(login --device-auth)
80
- echo "[spawn] Adding login --device-auth (non-interactive mode)"
81
- fi
82
- ;;
83
- copilot)
84
- # Copilot: needs auth login command, device flow for headless
85
- if [ -z "$INTERACTIVE" ]; then
86
- CLI_ARGS+=(auth login --device)
87
- echo "[spawn] Adding auth login --device (non-interactive mode)"
88
- else
89
- CLI_ARGS+=(auth login)
90
- echo "[spawn] Adding auth login (interactive mode)"
91
- fi
92
- ;;
93
- opencode)
94
- # OpenCode: needs auth login command
95
- CLI_ARGS+=(auth login)
96
- echo "[spawn] Adding auth login"
97
- ;;
98
- droid)
99
- # Droid: needs --login flag
100
- CLI_ARGS+=(--login)
101
- echo "[spawn] Adding --login"
102
- ;;
103
- esac
104
-
105
- echo ""
106
- echo "Command: $CLI_CMD ${CLI_ARGS[*]}"
107
- echo ""
108
-
109
- # Build relay-pty args
110
- RELAY_ARGS=(
111
- --name "$NAME"
112
- --socket "$SOCKET"
113
- --idle-timeout 300
114
- )
115
-
116
- # Enable JSON output for debugging
117
- if [ -n "$DEBUG_SPAWN" ] || [ -n "$DEBUG" ]; then
118
- RELAY_ARGS+=(--json-output)
119
- echo "[debug] JSON output enabled"
120
- fi
121
-
122
- echo "========================================"
123
- echo " Starting CLI with relay-pty"
124
- echo "========================================"
125
- echo ""
126
- echo "Press Ctrl+C to stop."
127
- echo ""
128
- echo "In another terminal, you can:"
129
- echo " - Check socket status: echo '{\"type\":\"status\"}' | nc -U $SOCKET"
130
- echo " - Inject message: echo '{\"type\":\"inject\",\"body\":\"test\"}' | nc -U $SOCKET"
131
- echo " - Monitor registration: watch -n1 'cat $RELAY_DATA_DIR/*.json 2>/dev/null || echo no files'"
132
- echo ""
133
-
134
- # Start the CLI with relay-pty
135
- # In a real spawn, this would be done via AgentSpawner which handles registration waiting
136
- if [ ${#CLI_ARGS[@]} -gt 0 ]; then
137
- exec relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD" "${CLI_ARGS[@]}"
138
- else
139
- exec relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD"
140
- fi