agent-relay 2.3.13 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1421) hide show
  1. package/README.md +42 -176
  2. package/bin/agent-relay-broker-darwin-arm64 +0 -0
  3. package/bin/agent-relay-broker-darwin-x64 +0 -0
  4. package/bin/agent-relay-broker-linux-arm64 +0 -0
  5. package/bin/agent-relay-broker-linux-x64 +0 -0
  6. package/dist/index.cjs +50288 -63371
  7. package/dist/src/cli/bootstrap.d.ts +6 -0
  8. package/dist/src/cli/bootstrap.d.ts.map +1 -0
  9. package/dist/src/cli/bootstrap.js +109 -0
  10. package/dist/src/cli/bootstrap.js.map +1 -0
  11. package/dist/src/cli/commands/agent-management.d.ts +51 -0
  12. package/dist/src/cli/commands/agent-management.d.ts.map +1 -0
  13. package/dist/src/cli/commands/agent-management.js +290 -0
  14. package/dist/src/cli/commands/agent-management.js.map +1 -0
  15. package/dist/src/cli/commands/auth.d.ts +9 -0
  16. package/dist/src/cli/commands/auth.d.ts.map +1 -0
  17. package/dist/src/cli/commands/auth.js +33 -0
  18. package/dist/src/cli/commands/auth.js.map +1 -0
  19. package/dist/src/cli/commands/cloud.d.ts +18 -0
  20. package/dist/src/cli/commands/cloud.d.ts.map +1 -0
  21. package/dist/src/cli/commands/cloud.js +392 -0
  22. package/dist/src/cli/commands/cloud.js.map +1 -0
  23. package/dist/src/cli/commands/core.d.ts +107 -0
  24. package/dist/src/cli/commands/core.d.ts.map +1 -0
  25. package/dist/src/cli/commands/core.js +299 -0
  26. package/dist/src/cli/commands/core.js.map +1 -0
  27. package/dist/src/cli/commands/doctor.d.ts +1 -1
  28. package/dist/src/cli/commands/doctor.d.ts.map +1 -1
  29. package/dist/src/cli/commands/doctor.js +1 -485
  30. package/dist/src/cli/commands/doctor.js.map +1 -1
  31. package/dist/src/cli/commands/messaging.d.ts +61 -0
  32. package/dist/src/cli/commands/messaging.d.ts.map +1 -0
  33. package/dist/src/cli/commands/messaging.js +213 -0
  34. package/dist/src/cli/commands/messaging.js.map +1 -0
  35. package/dist/src/cli/commands/monitoring.d.ts +57 -0
  36. package/dist/src/cli/commands/monitoring.d.ts.map +1 -0
  37. package/dist/src/cli/commands/monitoring.js +350 -0
  38. package/dist/src/cli/commands/monitoring.js.map +1 -0
  39. package/dist/src/cli/commands/setup.d.ts +29 -0
  40. package/dist/src/cli/commands/setup.d.ts.map +1 -0
  41. package/dist/src/cli/commands/setup.js +324 -0
  42. package/dist/src/cli/commands/setup.js.map +1 -0
  43. package/dist/src/cli/commands/swarm.d.ts +3 -0
  44. package/dist/src/cli/commands/swarm.d.ts.map +1 -0
  45. package/dist/src/cli/commands/swarm.js +108 -0
  46. package/dist/src/cli/commands/swarm.js.map +1 -0
  47. package/dist/src/cli/index.d.ts +1 -28
  48. package/dist/src/cli/index.d.ts.map +1 -1
  49. package/dist/src/cli/index.js +4 -4936
  50. package/dist/src/cli/index.js.map +1 -1
  51. package/dist/src/cli/lib/agent-management-listing.d.ts +39 -0
  52. package/dist/src/cli/lib/agent-management-listing.d.ts.map +1 -0
  53. package/dist/src/cli/lib/agent-management-listing.js +253 -0
  54. package/dist/src/cli/lib/agent-management-listing.js.map +1 -0
  55. package/dist/src/cli/lib/auth-ssh.d.ts +48 -0
  56. package/dist/src/cli/lib/auth-ssh.d.ts.map +1 -0
  57. package/dist/src/cli/lib/auth-ssh.js +572 -0
  58. package/dist/src/cli/lib/auth-ssh.js.map +1 -0
  59. package/dist/src/cli/lib/bridge.d.ts +8 -0
  60. package/dist/src/cli/lib/bridge.d.ts.map +1 -0
  61. package/dist/src/cli/lib/bridge.js +100 -0
  62. package/dist/src/cli/lib/bridge.js.map +1 -0
  63. package/dist/src/cli/lib/broker-lifecycle.d.ts +20 -0
  64. package/dist/src/cli/lib/broker-lifecycle.d.ts.map +1 -0
  65. package/dist/src/cli/lib/broker-lifecycle.js +843 -0
  66. package/dist/src/cli/lib/broker-lifecycle.js.map +1 -0
  67. package/dist/src/cli/lib/client-factory.d.ts +24 -0
  68. package/dist/src/cli/lib/client-factory.d.ts.map +1 -0
  69. package/dist/src/cli/lib/client-factory.js +20 -0
  70. package/dist/src/cli/lib/client-factory.js.map +1 -0
  71. package/dist/src/cli/lib/cloud-client.d.ts +39 -0
  72. package/dist/src/cli/lib/cloud-client.d.ts.map +1 -0
  73. package/dist/src/cli/lib/cloud-client.js +120 -0
  74. package/dist/src/cli/lib/cloud-client.js.map +1 -0
  75. package/dist/src/cli/lib/core-maintenance.d.ts +13 -0
  76. package/dist/src/cli/lib/core-maintenance.d.ts.map +1 -0
  77. package/dist/src/cli/lib/core-maintenance.js +250 -0
  78. package/dist/src/cli/lib/core-maintenance.js.map +1 -0
  79. package/dist/src/cli/lib/doctor.d.ts +2 -0
  80. package/dist/src/cli/lib/doctor.d.ts.map +1 -0
  81. package/dist/src/cli/lib/doctor.js +484 -0
  82. package/dist/src/cli/lib/doctor.js.map +1 -0
  83. package/dist/src/cli/lib/formatting.d.ts +8 -0
  84. package/dist/src/cli/lib/formatting.d.ts.map +1 -0
  85. package/dist/src/cli/lib/formatting.js +48 -0
  86. package/dist/src/cli/lib/formatting.js.map +1 -0
  87. package/dist/src/cli/lib/index.d.ts +5 -0
  88. package/dist/src/cli/lib/index.d.ts.map +1 -0
  89. package/dist/src/cli/lib/index.js +5 -0
  90. package/dist/src/cli/lib/index.js.map +1 -0
  91. package/dist/src/cli/lib/jsonc.d.ts +8 -0
  92. package/dist/src/cli/lib/jsonc.d.ts.map +1 -0
  93. package/dist/src/cli/lib/jsonc.js +88 -0
  94. package/dist/src/cli/lib/jsonc.js.map +1 -0
  95. package/dist/src/cli/lib/monitoring-health.d.ts +32 -0
  96. package/dist/src/cli/lib/monitoring-health.d.ts.map +1 -0
  97. package/dist/src/cli/lib/monitoring-health.js +2 -0
  98. package/dist/src/cli/lib/monitoring-health.js.map +1 -0
  99. package/dist/src/cli/lib/paths.d.ts +2 -0
  100. package/dist/src/cli/lib/paths.d.ts.map +1 -0
  101. package/dist/src/cli/lib/paths.js +5 -0
  102. package/dist/src/cli/lib/paths.js.map +1 -0
  103. package/dist/src/index.d.ts +1 -5
  104. package/dist/src/index.d.ts.map +1 -1
  105. package/dist/src/index.js +1 -5
  106. package/dist/src/index.js.map +1 -1
  107. package/install.sh +0 -30
  108. package/package.json +84 -98
  109. package/packages/acp-bridge/README.md +8 -8
  110. package/packages/acp-bridge/dist/acp-agent.d.ts +8 -7
  111. package/packages/acp-bridge/dist/acp-agent.d.ts.map +1 -1
  112. package/packages/acp-bridge/dist/acp-agent.js +118 -143
  113. package/packages/acp-bridge/dist/acp-agent.js.map +1 -1
  114. package/packages/acp-bridge/dist/cli.d.ts +1 -1
  115. package/packages/acp-bridge/dist/cli.js +3 -3
  116. package/packages/acp-bridge/dist/index.d.ts +2 -2
  117. package/packages/acp-bridge/dist/index.d.ts.map +1 -1
  118. package/packages/acp-bridge/dist/index.js +1 -1
  119. package/packages/acp-bridge/dist/index.js.map +1 -1
  120. package/packages/acp-bridge/dist/types.d.ts +3 -3
  121. package/packages/acp-bridge/package.json +3 -3
  122. package/packages/acp-bridge/src/acp-agent.ts +123 -160
  123. package/packages/acp-bridge/src/cli.ts +3 -3
  124. package/packages/acp-bridge/src/index.ts +2 -2
  125. package/packages/acp-bridge/src/types.ts +3 -3
  126. package/packages/config/dist/bridge-config.d.ts +5 -5
  127. package/packages/config/dist/bridge-config.d.ts.map +1 -1
  128. package/packages/config/dist/bridge-config.js +16 -9
  129. package/packages/config/dist/bridge-config.js.map +1 -1
  130. package/packages/config/dist/cli-auth-config.d.ts +1 -1
  131. package/packages/config/dist/cli-auth-config.js +1 -1
  132. package/packages/config/dist/cli-registry.generated.d.ts +340 -0
  133. package/packages/config/dist/cli-registry.generated.d.ts.map +1 -0
  134. package/packages/config/dist/cli-registry.generated.js +297 -0
  135. package/packages/config/dist/cli-registry.generated.js.map +1 -0
  136. package/packages/config/dist/index.d.ts +1 -0
  137. package/packages/config/dist/index.d.ts.map +1 -1
  138. package/packages/config/dist/index.js +1 -0
  139. package/packages/config/dist/index.js.map +1 -1
  140. package/packages/config/dist/project-namespace.d.ts +9 -9
  141. package/packages/config/dist/project-namespace.js +3 -3
  142. package/packages/config/dist/relay-config.d.ts +1 -1
  143. package/packages/config/dist/relay-config.js +1 -1
  144. package/packages/config/dist/schemas.js +1 -1
  145. package/packages/config/dist/shadow-config.d.ts +2 -1
  146. package/packages/config/dist/shadow-config.d.ts.map +1 -1
  147. package/packages/config/dist/shadow-config.js.map +1 -1
  148. package/packages/config/package.json +2 -3
  149. package/packages/config/src/bridge-config.test.ts +20 -6
  150. package/packages/config/src/bridge-config.ts +20 -10
  151. package/packages/config/src/cli-auth-config.ts +1 -1
  152. package/packages/config/src/cli-registry.generated.ts +328 -0
  153. package/packages/config/src/index.ts +1 -0
  154. package/packages/config/src/project-namespace.ts +9 -9
  155. package/packages/config/src/relay-config.ts +1 -1
  156. package/packages/config/src/schemas.ts +1 -1
  157. package/packages/config/src/shadow-config.ts +8 -1
  158. package/packages/contracts/fixtures/error-fixtures.json +42 -0
  159. package/packages/contracts/fixtures/event-fixtures.json +161 -0
  160. package/packages/contracts/fixtures/health-fixtures.json +35 -0
  161. package/packages/contracts/fixtures/identity-fixtures.json +58 -0
  162. package/packages/contracts/fixtures/replay-fixtures.json +33 -0
  163. package/packages/hooks/dist/inbox-check/types.d.ts +2 -2
  164. package/packages/hooks/dist/types.d.ts +9 -3
  165. package/packages/hooks/dist/types.d.ts.map +1 -1
  166. package/packages/hooks/dist/types.js +1 -1
  167. package/packages/hooks/dist/types.js.map +1 -1
  168. package/packages/hooks/package.json +5 -5
  169. package/packages/hooks/src/inbox-check/types.ts +2 -2
  170. package/packages/hooks/src/types.ts +11 -3
  171. package/packages/memory/package.json +2 -2
  172. package/packages/policy/package.json +2 -2
  173. package/packages/sdk/.mcp.json +14 -0
  174. package/packages/sdk/.trajectories/active/traj_1771875803391_84ca57b2.json +50 -0
  175. package/packages/sdk/.trajectories/active/traj_1771891934534_06504121.json +50 -0
  176. package/packages/sdk/.trajectories/active/traj_1771891957929_211afc4e.json +50 -0
  177. package/packages/sdk/.trajectories/active/traj_1771891982509_38c84638.json +50 -0
  178. package/packages/sdk/.trajectories/completed/traj_1771875803188_cd6d181c.json +80 -0
  179. package/packages/sdk/.trajectories/completed/traj_1771875803204_f2aeb8c8.json +80 -0
  180. package/packages/sdk/.trajectories/completed/traj_1771875803210_d65f3f1a.json +80 -0
  181. package/packages/sdk/.trajectories/completed/traj_1771875803218_e454a25d.json +80 -0
  182. package/packages/sdk/.trajectories/completed/traj_1771875803223_d7a64815.json +80 -0
  183. package/packages/sdk/.trajectories/completed/traj_1771875803227_7e56da5b.json +80 -0
  184. package/packages/sdk/.trajectories/completed/traj_1771875803235_4fbf93b4.json +80 -0
  185. package/packages/sdk/.trajectories/completed/traj_1771875803243_47931c71.json +80 -0
  186. package/packages/sdk/.trajectories/completed/traj_1771875803258_3816f3fe.json +80 -0
  187. package/packages/sdk/.trajectories/completed/traj_1771875803268_8061140e.json +80 -0
  188. package/packages/sdk/.trajectories/completed/traj_1771875803326_ae6f9c78.json +80 -0
  189. package/packages/sdk/.trajectories/completed/traj_1771875808396_cbde0a6c.json +91 -0
  190. package/packages/sdk/.trajectories/completed/traj_1771875812026_aa2442bb.json +91 -0
  191. package/packages/sdk/.trajectories/completed/traj_1771875815431_c2c656c5.json +91 -0
  192. package/packages/sdk/.trajectories/completed/traj_1771875818645_3a4dbf02.json +91 -0
  193. package/packages/sdk/.trajectories/completed/traj_1771891934403_24923c03.json +80 -0
  194. package/packages/sdk/.trajectories/completed/traj_1771891934421_dca16e24.json +80 -0
  195. package/packages/sdk/.trajectories/completed/traj_1771891934430_057706f7.json +80 -0
  196. package/packages/sdk/.trajectories/completed/traj_1771891934442_faf97382.json +80 -0
  197. package/packages/sdk/.trajectories/completed/traj_1771891934454_5542ecd5.json +80 -0
  198. package/packages/sdk/.trajectories/completed/traj_1771891934464_12202a08.json +80 -0
  199. package/packages/sdk/.trajectories/completed/traj_1771891934487_94378275.json +80 -0
  200. package/packages/sdk/.trajectories/completed/traj_1771891934503_ca728c13.json +80 -0
  201. package/packages/sdk/.trajectories/completed/traj_1771891934519_100af69a.json +80 -0
  202. package/packages/sdk/.trajectories/completed/traj_1771891934536_62ad39d9.json +80 -0
  203. package/packages/sdk/.trajectories/completed/traj_1771891934553_d6798a52.json +80 -0
  204. package/packages/sdk/.trajectories/completed/traj_1771891939537_541c8096.json +91 -0
  205. package/packages/sdk/.trajectories/completed/traj_1771891942985_36ab9a4d.json +91 -0
  206. package/packages/sdk/.trajectories/completed/traj_1771891946453_e8a6e05f.json +91 -0
  207. package/packages/sdk/.trajectories/completed/traj_1771891949838_5de0de84.json +91 -0
  208. package/packages/sdk/.trajectories/completed/traj_1771891957807_0ecfb4f4.json +80 -0
  209. package/packages/sdk/.trajectories/completed/traj_1771891957827_c4539239.json +80 -0
  210. package/packages/sdk/.trajectories/completed/traj_1771891957836_91168b48.json +80 -0
  211. package/packages/sdk/.trajectories/completed/traj_1771891957848_8c5cad0b.json +80 -0
  212. package/packages/sdk/.trajectories/completed/traj_1771891957857_0986b293.json +80 -0
  213. package/packages/sdk/.trajectories/completed/traj_1771891957872_8a3113af.json +80 -0
  214. package/packages/sdk/.trajectories/completed/traj_1771891957884_0bb85208.json +80 -0
  215. package/packages/sdk/.trajectories/completed/traj_1771891957892_86c75e2e.json +80 -0
  216. package/packages/sdk/.trajectories/completed/traj_1771891957907_98ca0e6f.json +80 -0
  217. package/packages/sdk/.trajectories/completed/traj_1771891957918_d9091231.json +80 -0
  218. package/packages/sdk/.trajectories/completed/traj_1771891957931_dcaf77ed.json +80 -0
  219. package/packages/sdk/.trajectories/completed/traj_1771891962931_eb1fdee2.json +91 -0
  220. package/packages/sdk/.trajectories/completed/traj_1771891966262_9061a93f.json +91 -0
  221. package/packages/sdk/.trajectories/completed/traj_1771891969915_1adaba19.json +91 -0
  222. package/packages/sdk/.trajectories/completed/traj_1771891973588_f08b79e9.json +91 -0
  223. package/packages/sdk/.trajectories/completed/traj_1771891982421_f1985bce.json +80 -0
  224. package/packages/sdk/.trajectories/completed/traj_1771891982432_e7a84163.json +80 -0
  225. package/packages/sdk/.trajectories/completed/traj_1771891982447_369b842a.json +80 -0
  226. package/packages/sdk/.trajectories/completed/traj_1771891982469_5fc45199.json +80 -0
  227. package/packages/sdk/.trajectories/completed/traj_1771891982495_454c7cb3.json +80 -0
  228. package/packages/sdk/.trajectories/completed/traj_1771891982514_08098e03.json +80 -0
  229. package/packages/sdk/.trajectories/completed/traj_1771891982526_b351d778.json +80 -0
  230. package/packages/sdk/.trajectories/completed/traj_1771891982533_fa542d83.json +80 -0
  231. package/packages/sdk/.trajectories/completed/traj_1771891982540_18ab24dc.json +80 -0
  232. package/packages/sdk/.trajectories/completed/traj_1771891982544_5b4fa163.json +80 -0
  233. package/packages/sdk/.trajectories/completed/traj_1771891982548_c13f089a.json +80 -0
  234. package/packages/sdk/.trajectories/completed/traj_1771891987510_23f6da1f.json +91 -0
  235. package/packages/sdk/.trajectories/completed/traj_1771891991466_912c2e04.json +91 -0
  236. package/packages/sdk/.trajectories/completed/traj_1771891994891_60604be2.json +91 -0
  237. package/packages/sdk/.trajectories/completed/traj_1771891998370_cfaf9b8b.json +91 -0
  238. package/packages/sdk/README.md +68 -838
  239. package/packages/sdk/bin/agent-relay-broker +0 -0
  240. package/packages/sdk/dist/__tests__/contract-fixtures.test.d.ts +2 -0
  241. package/packages/sdk/dist/__tests__/contract-fixtures.test.d.ts.map +1 -0
  242. package/packages/sdk/dist/__tests__/contract-fixtures.test.js +85 -0
  243. package/packages/sdk/dist/__tests__/contract-fixtures.test.js.map +1 -0
  244. package/packages/sdk/dist/__tests__/facade.test.js +305 -0
  245. package/packages/sdk/dist/__tests__/facade.test.js.map +1 -0
  246. package/packages/sdk/dist/__tests__/integration.test.js +169 -0
  247. package/packages/sdk/dist/__tests__/integration.test.js.map +1 -0
  248. package/packages/sdk/dist/__tests__/pty.test.d.ts +2 -0
  249. package/packages/sdk/dist/__tests__/pty.test.d.ts.map +1 -0
  250. package/packages/sdk/dist/__tests__/pty.test.js +20 -0
  251. package/packages/sdk/dist/__tests__/pty.test.js.map +1 -0
  252. package/packages/sdk/dist/__tests__/quickstart.test.js +176 -0
  253. package/packages/sdk/dist/__tests__/quickstart.test.js.map +1 -0
  254. package/packages/sdk/dist/__tests__/spawn-from-env.test.d.ts +2 -0
  255. package/packages/sdk/dist/__tests__/spawn-from-env.test.d.ts.map +1 -0
  256. package/packages/sdk/dist/__tests__/spawn-from-env.test.js +206 -0
  257. package/packages/sdk/dist/__tests__/spawn-from-env.test.js.map +1 -0
  258. package/packages/sdk/dist/__tests__/unit.test.js +347 -0
  259. package/packages/sdk/dist/__tests__/unit.test.js.map +1 -0
  260. package/packages/sdk/dist/client.d.ts +140 -526
  261. package/packages/sdk/dist/client.d.ts.map +1 -1
  262. package/packages/sdk/dist/client.js +416 -1509
  263. package/packages/sdk/dist/client.js.map +1 -1
  264. package/packages/sdk/dist/examples/workflow-superiority.d.ts +32 -0
  265. package/packages/sdk/dist/examples/workflow-superiority.d.ts.map +1 -0
  266. package/packages/sdk/dist/examples/workflow-superiority.js +1421 -0
  267. package/packages/sdk/dist/examples/workflow-superiority.js.map +1 -0
  268. package/packages/sdk/dist/index.d.ts +13 -20
  269. package/packages/sdk/dist/index.d.ts.map +1 -1
  270. package/packages/sdk/dist/index.js +12 -26
  271. package/packages/sdk/dist/index.js.map +1 -1
  272. package/packages/sdk/dist/logs.d.ts +70 -25
  273. package/packages/sdk/dist/logs.d.ts.map +1 -1
  274. package/packages/sdk/dist/logs.js +238 -42
  275. package/packages/sdk/dist/logs.js.map +1 -1
  276. package/packages/sdk/dist/models.d.ts +9 -0
  277. package/packages/sdk/dist/models.d.ts.map +1 -0
  278. package/packages/sdk/dist/models.js +17 -0
  279. package/packages/sdk/dist/models.js.map +1 -0
  280. package/packages/sdk/dist/protocol.d.ts +366 -0
  281. package/packages/sdk/dist/protocol.d.ts.map +1 -0
  282. package/packages/sdk/dist/pty.d.ts.map +1 -0
  283. package/packages/sdk/dist/pty.js +26 -0
  284. package/packages/sdk/dist/pty.js.map +1 -0
  285. package/packages/sdk/dist/relay-adapter.d.ts +139 -0
  286. package/packages/sdk/dist/relay-adapter.d.ts.map +1 -0
  287. package/packages/sdk/dist/relay-adapter.js +210 -0
  288. package/packages/sdk/dist/relay-adapter.js.map +1 -0
  289. package/packages/sdk/dist/relay.d.ts +304 -0
  290. package/packages/sdk/dist/relay.d.ts.map +1 -0
  291. package/packages/sdk/dist/relay.js +910 -0
  292. package/packages/sdk/dist/relay.js.map +1 -0
  293. package/packages/sdk/dist/shadow.d.ts +101 -0
  294. package/packages/sdk/dist/shadow.d.ts.map +1 -0
  295. package/packages/sdk/dist/shadow.js.map +1 -0
  296. package/packages/sdk/dist/spawn-from-env.d.ts +77 -0
  297. package/packages/sdk/dist/spawn-from-env.d.ts.map +1 -0
  298. package/packages/sdk/dist/spawn-from-env.js +172 -0
  299. package/packages/sdk/dist/spawn-from-env.js.map +1 -0
  300. package/packages/sdk/dist/workflows/builder.d.ts +114 -0
  301. package/packages/sdk/dist/workflows/builder.d.ts.map +1 -0
  302. package/packages/sdk/dist/workflows/builder.js +201 -0
  303. package/packages/sdk/dist/workflows/builder.js.map +1 -0
  304. package/packages/sdk/dist/workflows/cli.d.ts +11 -0
  305. package/packages/sdk/dist/workflows/cli.d.ts.map +1 -0
  306. package/packages/sdk/dist/workflows/cli.js +144 -0
  307. package/packages/sdk/dist/workflows/cli.js.map +1 -0
  308. package/packages/sdk/dist/workflows/coordinator.d.ts +73 -0
  309. package/packages/sdk/dist/workflows/coordinator.d.ts.map +1 -0
  310. package/packages/sdk/dist/workflows/coordinator.js +647 -0
  311. package/packages/sdk/dist/workflows/coordinator.js.map +1 -0
  312. package/packages/sdk/dist/workflows/custom-steps.d.ts +73 -0
  313. package/packages/sdk/dist/workflows/custom-steps.d.ts.map +1 -0
  314. package/packages/sdk/dist/workflows/custom-steps.js +321 -0
  315. package/packages/sdk/dist/workflows/custom-steps.js.map +1 -0
  316. package/packages/sdk/dist/workflows/dry-run-format.d.ts +6 -0
  317. package/packages/sdk/dist/workflows/dry-run-format.d.ts.map +1 -0
  318. package/packages/sdk/dist/workflows/dry-run-format.js +68 -0
  319. package/packages/sdk/dist/workflows/dry-run-format.js.map +1 -0
  320. package/packages/sdk/dist/workflows/file-db.d.ts +33 -0
  321. package/packages/sdk/dist/workflows/file-db.d.ts.map +1 -0
  322. package/packages/sdk/dist/workflows/file-db.js +108 -0
  323. package/packages/sdk/dist/workflows/file-db.js.map +1 -0
  324. package/packages/sdk/dist/workflows/index.d.ts +15 -0
  325. package/packages/sdk/dist/workflows/index.d.ts.map +1 -0
  326. package/packages/sdk/dist/workflows/index.js +15 -0
  327. package/packages/sdk/dist/workflows/index.js.map +1 -0
  328. package/packages/sdk/dist/workflows/run.d.ts +38 -0
  329. package/packages/sdk/dist/workflows/run.d.ts.map +1 -0
  330. package/packages/sdk/dist/workflows/run.js +25 -0
  331. package/packages/sdk/dist/workflows/run.js.map +1 -0
  332. package/packages/sdk/dist/workflows/runner.d.ts +320 -0
  333. package/packages/sdk/dist/workflows/runner.d.ts.map +1 -0
  334. package/packages/sdk/dist/workflows/runner.js +2821 -0
  335. package/packages/sdk/dist/workflows/runner.js.map +1 -0
  336. package/packages/sdk/dist/workflows/templates.d.ts +47 -0
  337. package/packages/sdk/dist/workflows/templates.d.ts.map +1 -0
  338. package/packages/sdk/dist/workflows/templates.js +405 -0
  339. package/packages/sdk/dist/workflows/templates.js.map +1 -0
  340. package/packages/sdk/dist/workflows/trajectory.d.ts +87 -0
  341. package/packages/sdk/dist/workflows/trajectory.d.ts.map +1 -0
  342. package/packages/sdk/dist/workflows/trajectory.js +441 -0
  343. package/packages/sdk/dist/workflows/trajectory.js.map +1 -0
  344. package/packages/sdk/dist/workflows/types.d.ts +306 -0
  345. package/packages/sdk/dist/workflows/types.d.ts.map +1 -0
  346. package/packages/sdk/dist/workflows/types.js +23 -0
  347. package/packages/sdk/dist/workflows/types.js.map +1 -0
  348. package/packages/sdk/dist/workflows/validator.d.ts +11 -0
  349. package/packages/sdk/dist/workflows/validator.d.ts.map +1 -0
  350. package/packages/sdk/dist/workflows/validator.js +128 -0
  351. package/packages/sdk/dist/workflows/validator.js.map +1 -0
  352. package/packages/sdk/package.json +59 -53
  353. package/packages/sdk/scripts/bundle-agent-relay.mjs +53 -0
  354. package/packages/sdk/src/__tests__/contract-fixtures.test.ts +122 -0
  355. package/packages/sdk/src/__tests__/error-scenarios.test.ts +682 -0
  356. package/packages/sdk/src/__tests__/facade.test.ts +364 -0
  357. package/packages/sdk/src/__tests__/idle-nudge.test.ts +438 -0
  358. package/packages/sdk/src/__tests__/integration.test.ts +204 -0
  359. package/packages/sdk/src/__tests__/orchestration-upgrades.test.ts +797 -0
  360. package/packages/sdk/src/__tests__/pty.test.ts +24 -0
  361. package/packages/sdk/src/__tests__/quickstart.test.ts +198 -0
  362. package/packages/sdk/src/__tests__/spawn-from-env.test.ts +282 -0
  363. package/packages/sdk/src/__tests__/swarm-coordinator.test.ts +909 -0
  364. package/packages/sdk/src/__tests__/unit.test.ts +435 -0
  365. package/packages/sdk/src/__tests__/workflow-runner.test.ts +489 -0
  366. package/packages/sdk/src/__tests__/yaml-validation.test.ts +890 -0
  367. package/packages/sdk/src/client.ts +514 -1912
  368. package/packages/sdk/src/examples/workflow-superiority.ts +1485 -0
  369. package/packages/sdk/src/examples/workflows/README.md +156 -0
  370. package/packages/sdk/src/examples/workflows/ralph-overnight.yaml +421 -0
  371. package/packages/sdk/src/examples/workflows/ralph-swarm.yaml +411 -0
  372. package/packages/sdk/src/examples/workflows/ralph-tdd.yaml +259 -0
  373. package/packages/sdk/src/index.ts +13 -116
  374. package/packages/sdk/src/logs.ts +282 -54
  375. package/packages/sdk/src/models.ts +36 -0
  376. package/packages/sdk/src/protocol.ts +385 -0
  377. package/packages/sdk/src/pty.ts +35 -0
  378. package/packages/sdk/src/relay-adapter.ts +316 -0
  379. package/packages/sdk/src/relay.ts +1147 -0
  380. package/packages/sdk/src/shadow.ts +228 -0
  381. package/packages/sdk/src/spawn-from-env.ts +245 -0
  382. package/packages/sdk/src/workflows/README.md +656 -0
  383. package/packages/sdk/src/workflows/builder.ts +278 -0
  384. package/packages/sdk/src/workflows/builtin-templates/bug-fix.yaml +135 -0
  385. package/packages/sdk/src/workflows/builtin-templates/code-review.yaml +133 -0
  386. package/packages/sdk/src/workflows/builtin-templates/competitive.yaml +103 -0
  387. package/packages/sdk/src/workflows/builtin-templates/documentation.yaml +120 -0
  388. package/packages/sdk/src/workflows/builtin-templates/feature-dev.yaml +142 -0
  389. package/packages/sdk/src/workflows/builtin-templates/refactor.yaml +141 -0
  390. package/packages/sdk/src/workflows/builtin-templates/review-loop.yaml +223 -0
  391. package/packages/sdk/src/workflows/builtin-templates/security-audit.yaml +129 -0
  392. package/packages/sdk/src/workflows/cli.ts +162 -0
  393. package/packages/sdk/src/workflows/coordinator.ts +842 -0
  394. package/packages/sdk/src/workflows/custom-steps.ts +450 -0
  395. package/packages/sdk/src/workflows/dry-run-format.ts +75 -0
  396. package/packages/sdk/src/workflows/file-db.ts +117 -0
  397. package/packages/sdk/src/workflows/index.ts +24 -0
  398. package/packages/sdk/src/workflows/run.ts +72 -0
  399. package/packages/sdk/src/workflows/runner.ts +3409 -0
  400. package/packages/sdk/src/workflows/schema.json +651 -0
  401. package/packages/sdk/src/workflows/templates.ts +552 -0
  402. package/packages/sdk/src/workflows/trajectory.ts +631 -0
  403. package/packages/sdk/src/workflows/types.ts +389 -0
  404. package/packages/sdk/src/workflows/validator.ts +151 -0
  405. package/packages/sdk/tsconfig.build.json +25 -0
  406. package/packages/sdk/tsconfig.json +17 -18
  407. package/packages/sdk/vitest.config.ts +1 -1
  408. package/packages/sdk-py/README.md +106 -21
  409. package/packages/sdk-py/agent_relay/__init__.py +21 -0
  410. package/packages/sdk-py/agent_relay/models.py +206 -0
  411. package/packages/sdk-py/pyproject.toml +2 -2
  412. package/packages/sdk-py/src/agent_relay/__init__.py +76 -0
  413. package/packages/sdk-py/src/agent_relay/builder.py +430 -109
  414. package/packages/sdk-py/src/agent_relay/templates.py +197 -0
  415. package/packages/sdk-py/src/agent_relay/types.py +489 -15
  416. package/packages/sdk-py/tests/test_builder.py +115 -1
  417. package/packages/sdk-py/tests/test_workflow_templates.py +450 -0
  418. package/packages/shared/cli-registry.yaml +193 -0
  419. package/packages/shared/codegen-py.mjs +215 -0
  420. package/packages/shared/codegen-ts.mjs +227 -0
  421. package/packages/telemetry/dist/events.d.ts +8 -8
  422. package/packages/telemetry/dist/index.d.ts +1 -1
  423. package/packages/telemetry/package.json +2 -2
  424. package/packages/telemetry/src/events.ts +9 -9
  425. package/packages/telemetry/src/index.ts +2 -2
  426. package/packages/trajectory/package.json +2 -2
  427. package/packages/user-directory/dist/user-directory.js +1 -1
  428. package/packages/user-directory/dist/user-directory.js.map +1 -1
  429. package/packages/user-directory/package.json +2 -2
  430. package/packages/user-directory/src/user-directory.ts +1 -1
  431. package/packages/utils/dist/cjs/client-helpers.js +4 -4
  432. package/packages/utils/dist/cjs/discovery.js +9 -6
  433. package/packages/utils/dist/cjs/errors.js +5 -5
  434. package/packages/utils/dist/cjs/legacy-protocol.js +70 -0
  435. package/packages/utils/dist/cjs/logger.js +3 -3
  436. package/packages/utils/dist/cjs/precompiled-patterns.js +33 -2
  437. package/packages/utils/dist/cjs/relay-pty-path.js +0 -6
  438. package/packages/utils/dist/client-helpers.d.ts +1 -1
  439. package/packages/utils/dist/client-helpers.d.ts.map +1 -1
  440. package/packages/utils/dist/client-helpers.js +1 -1
  441. package/packages/utils/dist/client-helpers.js.map +1 -1
  442. package/packages/utils/dist/discovery.d.ts +7 -7
  443. package/packages/utils/dist/discovery.d.ts.map +1 -1
  444. package/packages/utils/dist/discovery.js +20 -17
  445. package/packages/utils/dist/discovery.js.map +1 -1
  446. package/packages/utils/dist/errors.d.ts +1 -1
  447. package/packages/utils/dist/errors.js +3 -3
  448. package/packages/utils/dist/legacy-protocol.d.ts +46 -0
  449. package/packages/utils/dist/legacy-protocol.d.ts.map +1 -0
  450. package/packages/utils/dist/legacy-protocol.js +47 -0
  451. package/packages/utils/dist/legacy-protocol.js.map +1 -0
  452. package/packages/utils/dist/logger.d.ts +2 -2
  453. package/packages/utils/dist/logger.js +2 -2
  454. package/packages/utils/dist/precompiled-patterns.d.ts.map +1 -1
  455. package/packages/utils/dist/precompiled-patterns.js +28 -2
  456. package/packages/utils/dist/precompiled-patterns.js.map +1 -1
  457. package/packages/utils/dist/relay-pty-path.d.ts.map +1 -1
  458. package/packages/utils/dist/relay-pty-path.js +1 -10
  459. package/packages/utils/dist/relay-pty-path.js.map +1 -1
  460. package/packages/utils/package.json +2 -3
  461. package/packages/utils/src/client-helpers.ts +1 -1
  462. package/packages/utils/src/consolidation.test.ts +3 -3
  463. package/packages/utils/src/discovery.test.ts +3 -3
  464. package/packages/utils/src/discovery.ts +21 -18
  465. package/packages/utils/src/errors.test.ts +6 -11
  466. package/packages/utils/src/errors.ts +3 -3
  467. package/packages/utils/src/legacy-protocol.ts +151 -0
  468. package/packages/utils/src/logger.ts +2 -2
  469. package/packages/utils/src/precompiled-patterns.test.ts +8 -0
  470. package/packages/utils/src/precompiled-patterns.ts +40 -2
  471. package/packages/utils/src/relay-pty-path.test.ts +23 -34
  472. package/packages/utils/src/relay-pty-path.ts +1 -11
  473. package/relay-snippets/agent-relay-protocol.md +6 -43
  474. package/relay-snippets/agent-relay-snippet.md +59 -203
  475. package/scripts/postinstall.js +44 -171
  476. package/bin/relay-pty-darwin-arm64 +0 -0
  477. package/bin/relay-pty-darwin-x64 +0 -0
  478. package/bin/relay-pty-linux-arm64 +0 -0
  479. package/bin/relay-pty-linux-x64 +0 -0
  480. package/dist/src/bridge/index.d.ts +0 -8
  481. package/dist/src/bridge/index.d.ts.map +0 -1
  482. package/dist/src/bridge/index.js +0 -8
  483. package/dist/src/bridge/index.js.map +0 -1
  484. package/dist/src/continuity/index.d.ts +0 -5
  485. package/dist/src/continuity/index.d.ts.map +0 -1
  486. package/dist/src/continuity/index.js +0 -5
  487. package/dist/src/continuity/index.js.map +0 -1
  488. package/dist/src/daemon/index.d.ts +0 -8
  489. package/dist/src/daemon/index.d.ts.map +0 -1
  490. package/dist/src/daemon/index.js +0 -9
  491. package/dist/src/daemon/index.js.map +0 -1
  492. package/dist/src/protocol/index.d.ts +0 -8
  493. package/dist/src/protocol/index.d.ts.map +0 -1
  494. package/dist/src/protocol/index.js +0 -8
  495. package/dist/src/protocol/index.js.map +0 -1
  496. package/dist/src/resiliency/index.d.ts +0 -5
  497. package/dist/src/resiliency/index.d.ts.map +0 -1
  498. package/dist/src/resiliency/index.js +0 -5
  499. package/dist/src/resiliency/index.js.map +0 -1
  500. package/dist/src/state/index.d.ts +0 -5
  501. package/dist/src/state/index.d.ts.map +0 -1
  502. package/dist/src/state/index.js +0 -5
  503. package/dist/src/state/index.js.map +0 -1
  504. package/dist/src/storage/index.d.ts +0 -8
  505. package/dist/src/storage/index.d.ts.map +0 -1
  506. package/dist/src/storage/index.js +0 -8
  507. package/dist/src/storage/index.js.map +0 -1
  508. package/dist/src/wrapper/index.d.ts +0 -8
  509. package/dist/src/wrapper/index.d.ts.map +0 -1
  510. package/dist/src/wrapper/index.js +0 -11
  511. package/dist/src/wrapper/index.js.map +0 -1
  512. package/packages/bridge/dist/cli-resolution.d.ts +0 -32
  513. package/packages/bridge/dist/cli-resolution.d.ts.map +0 -1
  514. package/packages/bridge/dist/cli-resolution.js +0 -88
  515. package/packages/bridge/dist/cli-resolution.js.map +0 -1
  516. package/packages/bridge/dist/index.d.ts +0 -9
  517. package/packages/bridge/dist/index.d.ts.map +0 -1
  518. package/packages/bridge/dist/index.js +0 -11
  519. package/packages/bridge/dist/index.js.map +0 -1
  520. package/packages/bridge/dist/multi-project-client.d.ts +0 -99
  521. package/packages/bridge/dist/multi-project-client.d.ts.map +0 -1
  522. package/packages/bridge/dist/multi-project-client.js +0 -389
  523. package/packages/bridge/dist/multi-project-client.js.map +0 -1
  524. package/packages/bridge/dist/shadow-cli.d.ts +0 -17
  525. package/packages/bridge/dist/shadow-cli.d.ts.map +0 -1
  526. package/packages/bridge/dist/shadow-cli.js +0 -75
  527. package/packages/bridge/dist/shadow-cli.js.map +0 -1
  528. package/packages/bridge/dist/spawner.d.ts +0 -263
  529. package/packages/bridge/dist/spawner.d.ts.map +0 -1
  530. package/packages/bridge/dist/spawner.js +0 -1758
  531. package/packages/bridge/dist/spawner.js.map +0 -1
  532. package/packages/bridge/dist/types.d.ts +0 -141
  533. package/packages/bridge/dist/types.d.ts.map +0 -1
  534. package/packages/bridge/dist/types.js +0 -6
  535. package/packages/bridge/dist/types.js.map +0 -1
  536. package/packages/bridge/dist/utils.d.ts +0 -39
  537. package/packages/bridge/dist/utils.d.ts.map +0 -1
  538. package/packages/bridge/dist/utils.js +0 -98
  539. package/packages/bridge/dist/utils.js.map +0 -1
  540. package/packages/bridge/package.json +0 -45
  541. package/packages/bridge/src/cli-resolution.test.ts +0 -225
  542. package/packages/bridge/src/cli-resolution.ts +0 -100
  543. package/packages/bridge/src/index.ts +0 -34
  544. package/packages/bridge/src/multi-project-client.test.ts +0 -340
  545. package/packages/bridge/src/multi-project-client.ts +0 -469
  546. package/packages/bridge/src/shadow-cli.ts +0 -95
  547. package/packages/bridge/src/spawner-mcp.test.ts +0 -505
  548. package/packages/bridge/src/spawner.ts +0 -2067
  549. package/packages/bridge/src/types.ts +0 -153
  550. package/packages/bridge/src/utils.test.ts +0 -235
  551. package/packages/bridge/src/utils.ts +0 -113
  552. package/packages/bridge/tsconfig.json +0 -29
  553. package/packages/bridge/vitest.config.ts +0 -9
  554. package/packages/broker-sdk/README.md +0 -97
  555. package/packages/broker-sdk/dist/__tests__/facade.test.js +0 -257
  556. package/packages/broker-sdk/dist/__tests__/facade.test.js.map +0 -1
  557. package/packages/broker-sdk/dist/__tests__/integration.test.js +0 -139
  558. package/packages/broker-sdk/dist/__tests__/integration.test.js.map +0 -1
  559. package/packages/broker-sdk/dist/__tests__/quickstart.test.js +0 -176
  560. package/packages/broker-sdk/dist/__tests__/quickstart.test.js.map +0 -1
  561. package/packages/broker-sdk/dist/__tests__/unit.test.js +0 -192
  562. package/packages/broker-sdk/dist/__tests__/unit.test.js.map +0 -1
  563. package/packages/broker-sdk/dist/client.d.ts +0 -95
  564. package/packages/broker-sdk/dist/client.d.ts.map +0 -1
  565. package/packages/broker-sdk/dist/client.js +0 -372
  566. package/packages/broker-sdk/dist/client.js.map +0 -1
  567. package/packages/broker-sdk/dist/index.d.ts +0 -10
  568. package/packages/broker-sdk/dist/index.d.ts.map +0 -1
  569. package/packages/broker-sdk/dist/index.js +0 -10
  570. package/packages/broker-sdk/dist/index.js.map +0 -1
  571. package/packages/broker-sdk/dist/logs.d.ts +0 -47
  572. package/packages/broker-sdk/dist/logs.d.ts.map +0 -1
  573. package/packages/broker-sdk/dist/logs.js +0 -137
  574. package/packages/broker-sdk/dist/logs.js.map +0 -1
  575. package/packages/broker-sdk/dist/protocol.d.ts +0 -254
  576. package/packages/broker-sdk/dist/protocol.d.ts.map +0 -1
  577. package/packages/broker-sdk/dist/pty.d.ts.map +0 -1
  578. package/packages/broker-sdk/dist/pty.js +0 -14
  579. package/packages/broker-sdk/dist/pty.js.map +0 -1
  580. package/packages/broker-sdk/dist/relay.d.ts +0 -172
  581. package/packages/broker-sdk/dist/relay.d.ts.map +0 -1
  582. package/packages/broker-sdk/dist/relay.js +0 -486
  583. package/packages/broker-sdk/dist/relay.js.map +0 -1
  584. package/packages/broker-sdk/dist/relaycast.d.ts +0 -67
  585. package/packages/broker-sdk/dist/relaycast.d.ts.map +0 -1
  586. package/packages/broker-sdk/dist/relaycast.js +0 -150
  587. package/packages/broker-sdk/dist/relaycast.js.map +0 -1
  588. package/packages/broker-sdk/dist/shadow.d.ts +0 -100
  589. package/packages/broker-sdk/dist/shadow.d.ts.map +0 -1
  590. package/packages/broker-sdk/dist/shadow.js.map +0 -1
  591. package/packages/broker-sdk/dist/workflows/builder.d.ts +0 -101
  592. package/packages/broker-sdk/dist/workflows/builder.d.ts.map +0 -1
  593. package/packages/broker-sdk/dist/workflows/builder.js +0 -179
  594. package/packages/broker-sdk/dist/workflows/builder.js.map +0 -1
  595. package/packages/broker-sdk/dist/workflows/cli.d.ts +0 -10
  596. package/packages/broker-sdk/dist/workflows/cli.d.ts.map +0 -1
  597. package/packages/broker-sdk/dist/workflows/cli.js +0 -82
  598. package/packages/broker-sdk/dist/workflows/cli.js.map +0 -1
  599. package/packages/broker-sdk/dist/workflows/coordinator.d.ts +0 -69
  600. package/packages/broker-sdk/dist/workflows/coordinator.d.ts.map +0 -1
  601. package/packages/broker-sdk/dist/workflows/coordinator.js +0 -585
  602. package/packages/broker-sdk/dist/workflows/coordinator.js.map +0 -1
  603. package/packages/broker-sdk/dist/workflows/index.d.ts +0 -11
  604. package/packages/broker-sdk/dist/workflows/index.d.ts.map +0 -1
  605. package/packages/broker-sdk/dist/workflows/index.js +0 -11
  606. package/packages/broker-sdk/dist/workflows/index.js.map +0 -1
  607. package/packages/broker-sdk/dist/workflows/run.d.ts +0 -33
  608. package/packages/broker-sdk/dist/workflows/run.d.ts.map +0 -1
  609. package/packages/broker-sdk/dist/workflows/run.js +0 -28
  610. package/packages/broker-sdk/dist/workflows/run.js.map +0 -1
  611. package/packages/broker-sdk/dist/workflows/runner.d.ts +0 -136
  612. package/packages/broker-sdk/dist/workflows/runner.d.ts.map +0 -1
  613. package/packages/broker-sdk/dist/workflows/runner.js +0 -900
  614. package/packages/broker-sdk/dist/workflows/runner.js.map +0 -1
  615. package/packages/broker-sdk/dist/workflows/templates.d.ts +0 -47
  616. package/packages/broker-sdk/dist/workflows/templates.d.ts.map +0 -1
  617. package/packages/broker-sdk/dist/workflows/templates.js +0 -395
  618. package/packages/broker-sdk/dist/workflows/templates.js.map +0 -1
  619. package/packages/broker-sdk/dist/workflows/trajectory.d.ts +0 -80
  620. package/packages/broker-sdk/dist/workflows/trajectory.d.ts.map +0 -1
  621. package/packages/broker-sdk/dist/workflows/trajectory.js +0 -362
  622. package/packages/broker-sdk/dist/workflows/trajectory.js.map +0 -1
  623. package/packages/broker-sdk/dist/workflows/types.d.ts +0 -140
  624. package/packages/broker-sdk/dist/workflows/types.d.ts.map +0 -1
  625. package/packages/broker-sdk/dist/workflows/types.js +0 -8
  626. package/packages/broker-sdk/dist/workflows/types.js.map +0 -1
  627. package/packages/broker-sdk/package.json +0 -81
  628. package/packages/broker-sdk/scripts/bundle-agent-relay.mjs +0 -53
  629. package/packages/broker-sdk/src/__tests__/error-scenarios.test.ts +0 -682
  630. package/packages/broker-sdk/src/__tests__/facade.test.ts +0 -296
  631. package/packages/broker-sdk/src/__tests__/integration.test.ts +0 -170
  632. package/packages/broker-sdk/src/__tests__/quickstart.test.ts +0 -198
  633. package/packages/broker-sdk/src/__tests__/swarm-coordinator.test.ts +0 -772
  634. package/packages/broker-sdk/src/__tests__/unit.test.ts +0 -243
  635. package/packages/broker-sdk/src/__tests__/workflow-runner.test.ts +0 -333
  636. package/packages/broker-sdk/src/client.ts +0 -510
  637. package/packages/broker-sdk/src/index.ts +0 -9
  638. package/packages/broker-sdk/src/logs.ts +0 -163
  639. package/packages/broker-sdk/src/protocol.ts +0 -271
  640. package/packages/broker-sdk/src/pty.ts +0 -16
  641. package/packages/broker-sdk/src/relay.ts +0 -614
  642. package/packages/broker-sdk/src/relaycast.ts +0 -185
  643. package/packages/broker-sdk/src/shadow.ts +0 -230
  644. package/packages/broker-sdk/src/workflows/README.md +0 -514
  645. package/packages/broker-sdk/src/workflows/builder.ts +0 -241
  646. package/packages/broker-sdk/src/workflows/builtin-templates/bug-fix.yaml +0 -75
  647. package/packages/broker-sdk/src/workflows/builtin-templates/code-review.yaml +0 -82
  648. package/packages/broker-sdk/src/workflows/builtin-templates/documentation.yaml +0 -70
  649. package/packages/broker-sdk/src/workflows/builtin-templates/feature-dev.yaml +0 -76
  650. package/packages/broker-sdk/src/workflows/builtin-templates/refactor.yaml +0 -82
  651. package/packages/broker-sdk/src/workflows/builtin-templates/security-audit.yaml +0 -84
  652. package/packages/broker-sdk/src/workflows/cli.ts +0 -93
  653. package/packages/broker-sdk/src/workflows/coordinator.ts +0 -758
  654. package/packages/broker-sdk/src/workflows/index.ts +0 -10
  655. package/packages/broker-sdk/src/workflows/run.ts +0 -55
  656. package/packages/broker-sdk/src/workflows/runner.ts +0 -1184
  657. package/packages/broker-sdk/src/workflows/schema.json +0 -333
  658. package/packages/broker-sdk/src/workflows/templates.ts +0 -544
  659. package/packages/broker-sdk/src/workflows/trajectory.ts +0 -507
  660. package/packages/broker-sdk/src/workflows/types.ts +0 -208
  661. package/packages/broker-sdk/tsconfig.json +0 -22
  662. package/packages/broker-sdk/vitest.config.ts +0 -9
  663. package/packages/continuity/dist/formatter.d.ts +0 -57
  664. package/packages/continuity/dist/formatter.d.ts.map +0 -1
  665. package/packages/continuity/dist/formatter.js +0 -448
  666. package/packages/continuity/dist/formatter.js.map +0 -1
  667. package/packages/continuity/dist/handoff-store.d.ts +0 -67
  668. package/packages/continuity/dist/handoff-store.d.ts.map +0 -1
  669. package/packages/continuity/dist/handoff-store.js +0 -472
  670. package/packages/continuity/dist/handoff-store.js.map +0 -1
  671. package/packages/continuity/dist/index.d.ts +0 -10
  672. package/packages/continuity/dist/index.d.ts.map +0 -1
  673. package/packages/continuity/dist/index.js +0 -11
  674. package/packages/continuity/dist/index.js.map +0 -1
  675. package/packages/continuity/dist/ledger-store.d.ts +0 -110
  676. package/packages/continuity/dist/ledger-store.d.ts.map +0 -1
  677. package/packages/continuity/dist/ledger-store.js +0 -500
  678. package/packages/continuity/dist/ledger-store.js.map +0 -1
  679. package/packages/continuity/dist/manager.d.ts +0 -183
  680. package/packages/continuity/dist/manager.d.ts.map +0 -1
  681. package/packages/continuity/dist/manager.js +0 -616
  682. package/packages/continuity/dist/manager.js.map +0 -1
  683. package/packages/continuity/dist/parser.d.ts +0 -76
  684. package/packages/continuity/dist/parser.d.ts.map +0 -1
  685. package/packages/continuity/dist/parser.js +0 -579
  686. package/packages/continuity/dist/parser.js.map +0 -1
  687. package/packages/continuity/dist/types.d.ts +0 -180
  688. package/packages/continuity/dist/types.d.ts.map +0 -1
  689. package/packages/continuity/dist/types.js +0 -2
  690. package/packages/continuity/dist/types.js.map +0 -1
  691. package/packages/continuity/package.json +0 -40
  692. package/packages/continuity/src/formatter.ts +0 -536
  693. package/packages/continuity/src/handoff-store.ts +0 -523
  694. package/packages/continuity/src/index.ts +0 -12
  695. package/packages/continuity/src/ledger-store.ts +0 -594
  696. package/packages/continuity/src/manager.test.ts +0 -291
  697. package/packages/continuity/src/manager.ts +0 -774
  698. package/packages/continuity/src/parser.test.ts +0 -292
  699. package/packages/continuity/src/parser.ts +0 -680
  700. package/packages/continuity/src/types.ts +0 -211
  701. package/packages/continuity/tsconfig.json +0 -21
  702. package/packages/continuity/vitest.config.ts +0 -9
  703. package/packages/daemon/dist/agent-manager.d.ts +0 -134
  704. package/packages/daemon/dist/agent-manager.d.ts.map +0 -1
  705. package/packages/daemon/dist/agent-manager.js +0 -578
  706. package/packages/daemon/dist/agent-manager.js.map +0 -1
  707. package/packages/daemon/dist/agent-registry.d.ts +0 -99
  708. package/packages/daemon/dist/agent-registry.d.ts.map +0 -1
  709. package/packages/daemon/dist/agent-registry.js +0 -213
  710. package/packages/daemon/dist/agent-registry.js.map +0 -1
  711. package/packages/daemon/dist/agent-signing.d.ts +0 -158
  712. package/packages/daemon/dist/agent-signing.d.ts.map +0 -1
  713. package/packages/daemon/dist/agent-signing.js +0 -523
  714. package/packages/daemon/dist/agent-signing.js.map +0 -1
  715. package/packages/daemon/dist/api.d.ts +0 -106
  716. package/packages/daemon/dist/api.d.ts.map +0 -1
  717. package/packages/daemon/dist/api.js +0 -895
  718. package/packages/daemon/dist/api.js.map +0 -1
  719. package/packages/daemon/dist/auth.d.ts +0 -94
  720. package/packages/daemon/dist/auth.d.ts.map +0 -1
  721. package/packages/daemon/dist/auth.js +0 -197
  722. package/packages/daemon/dist/auth.js.map +0 -1
  723. package/packages/daemon/dist/channel-membership-store.d.ts +0 -55
  724. package/packages/daemon/dist/channel-membership-store.d.ts.map +0 -1
  725. package/packages/daemon/dist/channel-membership-store.js +0 -176
  726. package/packages/daemon/dist/channel-membership-store.js.map +0 -1
  727. package/packages/daemon/dist/cli-auth.d.ts +0 -97
  728. package/packages/daemon/dist/cli-auth.d.ts.map +0 -1
  729. package/packages/daemon/dist/cli-auth.js +0 -808
  730. package/packages/daemon/dist/cli-auth.js.map +0 -1
  731. package/packages/daemon/dist/cloud-sync.d.ts +0 -263
  732. package/packages/daemon/dist/cloud-sync.d.ts.map +0 -1
  733. package/packages/daemon/dist/cloud-sync.js +0 -820
  734. package/packages/daemon/dist/cloud-sync.js.map +0 -1
  735. package/packages/daemon/dist/connection.d.ts +0 -137
  736. package/packages/daemon/dist/connection.d.ts.map +0 -1
  737. package/packages/daemon/dist/connection.js +0 -465
  738. package/packages/daemon/dist/connection.js.map +0 -1
  739. package/packages/daemon/dist/consensus-integration.d.ts +0 -168
  740. package/packages/daemon/dist/consensus-integration.d.ts.map +0 -1
  741. package/packages/daemon/dist/consensus-integration.js +0 -371
  742. package/packages/daemon/dist/consensus-integration.js.map +0 -1
  743. package/packages/daemon/dist/consensus.d.ts +0 -269
  744. package/packages/daemon/dist/consensus.d.ts.map +0 -1
  745. package/packages/daemon/dist/consensus.js +0 -632
  746. package/packages/daemon/dist/consensus.js.map +0 -1
  747. package/packages/daemon/dist/delivery-tracker.d.ts +0 -34
  748. package/packages/daemon/dist/delivery-tracker.d.ts.map +0 -1
  749. package/packages/daemon/dist/delivery-tracker.js +0 -104
  750. package/packages/daemon/dist/delivery-tracker.js.map +0 -1
  751. package/packages/daemon/dist/enhanced-features.d.ts +0 -118
  752. package/packages/daemon/dist/enhanced-features.d.ts.map +0 -1
  753. package/packages/daemon/dist/enhanced-features.js +0 -177
  754. package/packages/daemon/dist/enhanced-features.js.map +0 -1
  755. package/packages/daemon/dist/index.d.ts +0 -29
  756. package/packages/daemon/dist/index.d.ts.map +0 -1
  757. package/packages/daemon/dist/index.js +0 -34
  758. package/packages/daemon/dist/index.js.map +0 -1
  759. package/packages/daemon/dist/orchestrator.d.ts +0 -217
  760. package/packages/daemon/dist/orchestrator.d.ts.map +0 -1
  761. package/packages/daemon/dist/orchestrator.js +0 -1172
  762. package/packages/daemon/dist/orchestrator.js.map +0 -1
  763. package/packages/daemon/dist/rate-limiter.d.ts +0 -68
  764. package/packages/daemon/dist/rate-limiter.d.ts.map +0 -1
  765. package/packages/daemon/dist/rate-limiter.js +0 -130
  766. package/packages/daemon/dist/rate-limiter.js.map +0 -1
  767. package/packages/daemon/dist/registry.d.ts +0 -9
  768. package/packages/daemon/dist/registry.d.ts.map +0 -1
  769. package/packages/daemon/dist/registry.js +0 -9
  770. package/packages/daemon/dist/registry.js.map +0 -1
  771. package/packages/daemon/dist/repo-manager.d.ts +0 -116
  772. package/packages/daemon/dist/repo-manager.d.ts.map +0 -1
  773. package/packages/daemon/dist/repo-manager.js +0 -384
  774. package/packages/daemon/dist/repo-manager.js.map +0 -1
  775. package/packages/daemon/dist/router.d.ts +0 -389
  776. package/packages/daemon/dist/router.d.ts.map +0 -1
  777. package/packages/daemon/dist/router.js +0 -1607
  778. package/packages/daemon/dist/router.js.map +0 -1
  779. package/packages/daemon/dist/server.d.ts +0 -201
  780. package/packages/daemon/dist/server.d.ts.map +0 -1
  781. package/packages/daemon/dist/server.js +0 -1791
  782. package/packages/daemon/dist/server.js.map +0 -1
  783. package/packages/daemon/dist/spawn-manager.d.ts +0 -119
  784. package/packages/daemon/dist/spawn-manager.d.ts.map +0 -1
  785. package/packages/daemon/dist/spawn-manager.js +0 -319
  786. package/packages/daemon/dist/spawn-manager.js.map +0 -1
  787. package/packages/daemon/dist/sync-queue.d.ts +0 -116
  788. package/packages/daemon/dist/sync-queue.d.ts.map +0 -1
  789. package/packages/daemon/dist/sync-queue.js +0 -361
  790. package/packages/daemon/dist/sync-queue.js.map +0 -1
  791. package/packages/daemon/dist/types.d.ts +0 -133
  792. package/packages/daemon/dist/types.d.ts.map +0 -1
  793. package/packages/daemon/dist/types.js +0 -6
  794. package/packages/daemon/dist/types.js.map +0 -1
  795. package/packages/daemon/dist/workspace-manager.d.ts +0 -80
  796. package/packages/daemon/dist/workspace-manager.d.ts.map +0 -1
  797. package/packages/daemon/dist/workspace-manager.js +0 -314
  798. package/packages/daemon/dist/workspace-manager.js.map +0 -1
  799. package/packages/daemon/package.json +0 -56
  800. package/packages/daemon/src/agent-manager.ts +0 -679
  801. package/packages/daemon/src/agent-registry.ts +0 -284
  802. package/packages/daemon/src/agent-signing.ts +0 -707
  803. package/packages/daemon/src/api.ts +0 -1034
  804. package/packages/daemon/src/auth.ts +0 -276
  805. package/packages/daemon/src/channel-membership-store.ts +0 -217
  806. package/packages/daemon/src/cli-auth.ts +0 -945
  807. package/packages/daemon/src/cloud-sync.ts +0 -1100
  808. package/packages/daemon/src/connection.ts +0 -561
  809. package/packages/daemon/src/consensus-integration.ts +0 -510
  810. package/packages/daemon/src/consensus.ts +0 -848
  811. package/packages/daemon/src/delivery-tracker.ts +0 -145
  812. package/packages/daemon/src/enhanced-features.ts +0 -390
  813. package/packages/daemon/src/index.ts +0 -48
  814. package/packages/daemon/src/orchestrator.test.ts +0 -231
  815. package/packages/daemon/src/orchestrator.ts +0 -1376
  816. package/packages/daemon/src/rate-limiter.ts +0 -172
  817. package/packages/daemon/src/registry.ts +0 -8
  818. package/packages/daemon/src/repo-manager.ts +0 -468
  819. package/packages/daemon/src/router.test.ts +0 -181
  820. package/packages/daemon/src/router.ts +0 -1925
  821. package/packages/daemon/src/server.ts +0 -2051
  822. package/packages/daemon/src/spawn-manager-set-model.test.ts +0 -144
  823. package/packages/daemon/src/spawn-manager.ts +0 -415
  824. package/packages/daemon/src/sync-queue.ts +0 -477
  825. package/packages/daemon/src/types.ts +0 -158
  826. package/packages/daemon/src/workspace-manager.ts +0 -371
  827. package/packages/daemon/tsconfig.json +0 -21
  828. package/packages/daemon/vitest.config.ts +0 -9
  829. package/packages/mcp/CHANGELOG.md +0 -28
  830. package/packages/mcp/LICENSE +0 -190
  831. package/packages/mcp/README.md +0 -266
  832. package/packages/mcp/dist/bin.d.ts +0 -12
  833. package/packages/mcp/dist/bin.d.ts.map +0 -1
  834. package/packages/mcp/dist/bin.js +0 -179
  835. package/packages/mcp/dist/bin.js.map +0 -1
  836. package/packages/mcp/dist/client-adapter.d.ts +0 -164
  837. package/packages/mcp/dist/client-adapter.d.ts.map +0 -1
  838. package/packages/mcp/dist/client-adapter.js +0 -231
  839. package/packages/mcp/dist/client-adapter.js.map +0 -1
  840. package/packages/mcp/dist/cloud.d.ts +0 -13
  841. package/packages/mcp/dist/cloud.d.ts.map +0 -1
  842. package/packages/mcp/dist/cloud.js +0 -25
  843. package/packages/mcp/dist/cloud.js.map +0 -1
  844. package/packages/mcp/dist/errors.d.ts +0 -9
  845. package/packages/mcp/dist/errors.d.ts.map +0 -1
  846. package/packages/mcp/dist/errors.js +0 -9
  847. package/packages/mcp/dist/errors.js.map +0 -1
  848. package/packages/mcp/dist/file-transport.d.ts +0 -103
  849. package/packages/mcp/dist/file-transport.d.ts.map +0 -1
  850. package/packages/mcp/dist/file-transport.js +0 -204
  851. package/packages/mcp/dist/file-transport.js.map +0 -1
  852. package/packages/mcp/dist/hybrid-client.d.ts +0 -5
  853. package/packages/mcp/dist/hybrid-client.d.ts.map +0 -1
  854. package/packages/mcp/dist/hybrid-client.js +0 -23
  855. package/packages/mcp/dist/hybrid-client.js.map +0 -1
  856. package/packages/mcp/dist/index.d.ts +0 -11
  857. package/packages/mcp/dist/index.d.ts.map +0 -1
  858. package/packages/mcp/dist/index.js +0 -25
  859. package/packages/mcp/dist/index.js.map +0 -1
  860. package/packages/mcp/dist/install-cli.d.ts +0 -35
  861. package/packages/mcp/dist/install-cli.d.ts.map +0 -1
  862. package/packages/mcp/dist/install-cli.js +0 -157
  863. package/packages/mcp/dist/install-cli.js.map +0 -1
  864. package/packages/mcp/dist/install.d.ts +0 -123
  865. package/packages/mcp/dist/install.d.ts.map +0 -1
  866. package/packages/mcp/dist/install.js +0 -661
  867. package/packages/mcp/dist/install.js.map +0 -1
  868. package/packages/mcp/dist/prompts/index.d.ts +0 -2
  869. package/packages/mcp/dist/prompts/index.d.ts.map +0 -1
  870. package/packages/mcp/dist/prompts/index.js +0 -2
  871. package/packages/mcp/dist/prompts/index.js.map +0 -1
  872. package/packages/mcp/dist/prompts/protocol.d.ts +0 -11
  873. package/packages/mcp/dist/prompts/protocol.d.ts.map +0 -1
  874. package/packages/mcp/dist/prompts/protocol.js +0 -160
  875. package/packages/mcp/dist/prompts/protocol.js.map +0 -1
  876. package/packages/mcp/dist/resources/agents.d.ts +0 -11
  877. package/packages/mcp/dist/resources/agents.d.ts.map +0 -1
  878. package/packages/mcp/dist/resources/agents.js +0 -17
  879. package/packages/mcp/dist/resources/agents.js.map +0 -1
  880. package/packages/mcp/dist/resources/inbox.d.ts +0 -11
  881. package/packages/mcp/dist/resources/inbox.d.ts.map +0 -1
  882. package/packages/mcp/dist/resources/inbox.js +0 -17
  883. package/packages/mcp/dist/resources/inbox.js.map +0 -1
  884. package/packages/mcp/dist/resources/index.d.ts +0 -4
  885. package/packages/mcp/dist/resources/index.d.ts.map +0 -1
  886. package/packages/mcp/dist/resources/index.js +0 -4
  887. package/packages/mcp/dist/resources/index.js.map +0 -1
  888. package/packages/mcp/dist/resources/project.d.ts +0 -11
  889. package/packages/mcp/dist/resources/project.d.ts.map +0 -1
  890. package/packages/mcp/dist/resources/project.js +0 -21
  891. package/packages/mcp/dist/resources/project.js.map +0 -1
  892. package/packages/mcp/dist/server.d.ts +0 -23
  893. package/packages/mcp/dist/server.d.ts.map +0 -1
  894. package/packages/mcp/dist/server.js +0 -317
  895. package/packages/mcp/dist/server.js.map +0 -1
  896. package/packages/mcp/dist/simple.d.ts +0 -170
  897. package/packages/mcp/dist/simple.d.ts.map +0 -1
  898. package/packages/mcp/dist/simple.js +0 -120
  899. package/packages/mcp/dist/simple.js.map +0 -1
  900. package/packages/mcp/dist/tools/index.d.ts +0 -20
  901. package/packages/mcp/dist/tools/index.d.ts.map +0 -1
  902. package/packages/mcp/dist/tools/index.js +0 -20
  903. package/packages/mcp/dist/tools/index.js.map +0 -1
  904. package/packages/mcp/dist/tools/relay-broadcast.d.ts +0 -20
  905. package/packages/mcp/dist/tools/relay-broadcast.d.ts.map +0 -1
  906. package/packages/mcp/dist/tools/relay-broadcast.js +0 -25
  907. package/packages/mcp/dist/tools/relay-broadcast.js.map +0 -1
  908. package/packages/mcp/dist/tools/relay-channel.d.ts +0 -75
  909. package/packages/mcp/dist/tools/relay-channel.d.ts.map +0 -1
  910. package/packages/mcp/dist/tools/relay-channel.js +0 -124
  911. package/packages/mcp/dist/tools/relay-channel.js.map +0 -1
  912. package/packages/mcp/dist/tools/relay-connected.d.ts +0 -17
  913. package/packages/mcp/dist/tools/relay-connected.d.ts.map +0 -1
  914. package/packages/mcp/dist/tools/relay-connected.js +0 -54
  915. package/packages/mcp/dist/tools/relay-connected.js.map +0 -1
  916. package/packages/mcp/dist/tools/relay-consensus.d.ts +0 -45
  917. package/packages/mcp/dist/tools/relay-consensus.d.ts.map +0 -1
  918. package/packages/mcp/dist/tools/relay-consensus.js +0 -80
  919. package/packages/mcp/dist/tools/relay-consensus.js.map +0 -1
  920. package/packages/mcp/dist/tools/relay-continuity.d.ts +0 -35
  921. package/packages/mcp/dist/tools/relay-continuity.d.ts.map +0 -1
  922. package/packages/mcp/dist/tools/relay-continuity.js +0 -101
  923. package/packages/mcp/dist/tools/relay-continuity.js.map +0 -1
  924. package/packages/mcp/dist/tools/relay-health.d.ts +0 -20
  925. package/packages/mcp/dist/tools/relay-health.d.ts.map +0 -1
  926. package/packages/mcp/dist/tools/relay-health.js +0 -130
  927. package/packages/mcp/dist/tools/relay-health.js.map +0 -1
  928. package/packages/mcp/dist/tools/relay-inbox.d.ts +0 -26
  929. package/packages/mcp/dist/tools/relay-inbox.d.ts.map +0 -1
  930. package/packages/mcp/dist/tools/relay-inbox.js +0 -58
  931. package/packages/mcp/dist/tools/relay-inbox.js.map +0 -1
  932. package/packages/mcp/dist/tools/relay-logs.d.ts +0 -20
  933. package/packages/mcp/dist/tools/relay-logs.d.ts.map +0 -1
  934. package/packages/mcp/dist/tools/relay-logs.js +0 -90
  935. package/packages/mcp/dist/tools/relay-logs.js.map +0 -1
  936. package/packages/mcp/dist/tools/relay-messages.d.ts +0 -32
  937. package/packages/mcp/dist/tools/relay-messages.d.ts.map +0 -1
  938. package/packages/mcp/dist/tools/relay-messages.js +0 -61
  939. package/packages/mcp/dist/tools/relay-messages.js.map +0 -1
  940. package/packages/mcp/dist/tools/relay-metrics.d.ts +0 -17
  941. package/packages/mcp/dist/tools/relay-metrics.d.ts.map +0 -1
  942. package/packages/mcp/dist/tools/relay-metrics.js +0 -124
  943. package/packages/mcp/dist/tools/relay-metrics.js.map +0 -1
  944. package/packages/mcp/dist/tools/relay-release.d.ts +0 -20
  945. package/packages/mcp/dist/tools/relay-release.d.ts.map +0 -1
  946. package/packages/mcp/dist/tools/relay-release.js +0 -44
  947. package/packages/mcp/dist/tools/relay-release.js.map +0 -1
  948. package/packages/mcp/dist/tools/relay-remove-agent.d.ts +0 -20
  949. package/packages/mcp/dist/tools/relay-remove-agent.d.ts.map +0 -1
  950. package/packages/mcp/dist/tools/relay-remove-agent.js +0 -50
  951. package/packages/mcp/dist/tools/relay-remove-agent.js.map +0 -1
  952. package/packages/mcp/dist/tools/relay-send.d.ts +0 -29
  953. package/packages/mcp/dist/tools/relay-send.d.ts.map +0 -1
  954. package/packages/mcp/dist/tools/relay-send.js +0 -73
  955. package/packages/mcp/dist/tools/relay-send.js.map +0 -1
  956. package/packages/mcp/dist/tools/relay-set-model.d.ts +0 -23
  957. package/packages/mcp/dist/tools/relay-set-model.d.ts.map +0 -1
  958. package/packages/mcp/dist/tools/relay-set-model.js +0 -52
  959. package/packages/mcp/dist/tools/relay-set-model.js.map +0 -1
  960. package/packages/mcp/dist/tools/relay-shadow.d.ts +0 -30
  961. package/packages/mcp/dist/tools/relay-shadow.d.ts.map +0 -1
  962. package/packages/mcp/dist/tools/relay-shadow.js +0 -55
  963. package/packages/mcp/dist/tools/relay-shadow.js.map +0 -1
  964. package/packages/mcp/dist/tools/relay-spawn.d.ts +0 -36
  965. package/packages/mcp/dist/tools/relay-spawn.d.ts.map +0 -1
  966. package/packages/mcp/dist/tools/relay-spawn.js +0 -73
  967. package/packages/mcp/dist/tools/relay-spawn.js.map +0 -1
  968. package/packages/mcp/dist/tools/relay-status.d.ts +0 -11
  969. package/packages/mcp/dist/tools/relay-status.d.ts.map +0 -1
  970. package/packages/mcp/dist/tools/relay-status.js +0 -43
  971. package/packages/mcp/dist/tools/relay-status.js.map +0 -1
  972. package/packages/mcp/dist/tools/relay-subscribe.d.ts +0 -27
  973. package/packages/mcp/dist/tools/relay-subscribe.d.ts.map +0 -1
  974. package/packages/mcp/dist/tools/relay-subscribe.js +0 -49
  975. package/packages/mcp/dist/tools/relay-subscribe.js.map +0 -1
  976. package/packages/mcp/dist/tools/relay-who.d.ts +0 -20
  977. package/packages/mcp/dist/tools/relay-who.d.ts.map +0 -1
  978. package/packages/mcp/dist/tools/relay-who.js +0 -62
  979. package/packages/mcp/dist/tools/relay-who.js.map +0 -1
  980. package/packages/mcp/package.json +0 -82
  981. package/packages/mcp/src/bin.ts +0 -200
  982. package/packages/mcp/src/client-adapter.ts +0 -358
  983. package/packages/mcp/src/cloud.ts +0 -41
  984. package/packages/mcp/src/errors.ts +0 -17
  985. package/packages/mcp/src/file-transport.ts +0 -275
  986. package/packages/mcp/src/hybrid-client.ts +0 -25
  987. package/packages/mcp/src/index.ts +0 -143
  988. package/packages/mcp/src/install-cli.ts +0 -210
  989. package/packages/mcp/src/install.ts +0 -820
  990. package/packages/mcp/src/prompts/index.ts +0 -1
  991. package/packages/mcp/src/prompts/protocol.ts +0 -164
  992. package/packages/mcp/src/resources/agents.ts +0 -21
  993. package/packages/mcp/src/resources/inbox.ts +0 -21
  994. package/packages/mcp/src/resources/index.ts +0 -3
  995. package/packages/mcp/src/resources/project.ts +0 -29
  996. package/packages/mcp/src/server.ts +0 -475
  997. package/packages/mcp/src/simple.ts +0 -214
  998. package/packages/mcp/src/tools/index.ts +0 -155
  999. package/packages/mcp/src/tools/relay-broadcast.ts +0 -32
  1000. package/packages/mcp/src/tools/relay-channel.ts +0 -151
  1001. package/packages/mcp/src/tools/relay-connected.ts +0 -67
  1002. package/packages/mcp/src/tools/relay-consensus.ts +0 -92
  1003. package/packages/mcp/src/tools/relay-continuity.ts +0 -127
  1004. package/packages/mcp/src/tools/relay-health.ts +0 -148
  1005. package/packages/mcp/src/tools/relay-inbox.ts +0 -70
  1006. package/packages/mcp/src/tools/relay-logs.ts +0 -106
  1007. package/packages/mcp/src/tools/relay-messages.ts +0 -66
  1008. package/packages/mcp/src/tools/relay-metrics.ts +0 -142
  1009. package/packages/mcp/src/tools/relay-release.ts +0 -54
  1010. package/packages/mcp/src/tools/relay-remove-agent.ts +0 -58
  1011. package/packages/mcp/src/tools/relay-send.ts +0 -84
  1012. package/packages/mcp/src/tools/relay-set-model.ts +0 -62
  1013. package/packages/mcp/src/tools/relay-shadow.ts +0 -67
  1014. package/packages/mcp/src/tools/relay-spawn.ts +0 -87
  1015. package/packages/mcp/src/tools/relay-status.ts +0 -57
  1016. package/packages/mcp/src/tools/relay-subscribe.ts +0 -61
  1017. package/packages/mcp/src/tools/relay-who.ts +0 -75
  1018. package/packages/mcp/tests/client.test.ts +0 -451
  1019. package/packages/mcp/tests/discover.test.ts +0 -256
  1020. package/packages/mcp/tests/install.test.ts +0 -123
  1021. package/packages/mcp/tests/prompts.test.ts +0 -12
  1022. package/packages/mcp/tests/resources.test.ts +0 -53
  1023. package/packages/mcp/tests/tools.test.ts +0 -1516
  1024. package/packages/mcp/tsconfig.json +0 -22
  1025. package/packages/mcp/vitest.config.ts +0 -9
  1026. package/packages/protocol/dist/channels.d.ts +0 -137
  1027. package/packages/protocol/dist/channels.d.ts.map +0 -1
  1028. package/packages/protocol/dist/channels.js +0 -154
  1029. package/packages/protocol/dist/channels.js.map +0 -1
  1030. package/packages/protocol/dist/framing.d.ts +0 -80
  1031. package/packages/protocol/dist/framing.d.ts.map +0 -1
  1032. package/packages/protocol/dist/framing.js +0 -206
  1033. package/packages/protocol/dist/framing.js.map +0 -1
  1034. package/packages/protocol/dist/id-generator.d.ts +0 -35
  1035. package/packages/protocol/dist/id-generator.d.ts.map +0 -1
  1036. package/packages/protocol/dist/id-generator.js +0 -60
  1037. package/packages/protocol/dist/id-generator.js.map +0 -1
  1038. package/packages/protocol/dist/index.d.ts +0 -5
  1039. package/packages/protocol/dist/index.d.ts.map +0 -1
  1040. package/packages/protocol/dist/index.js +0 -5
  1041. package/packages/protocol/dist/index.js.map +0 -1
  1042. package/packages/protocol/dist/relay-pty-schemas.d.ts +0 -340
  1043. package/packages/protocol/dist/relay-pty-schemas.d.ts.map +0 -1
  1044. package/packages/protocol/dist/relay-pty-schemas.js +0 -60
  1045. package/packages/protocol/dist/relay-pty-schemas.js.map +0 -1
  1046. package/packages/protocol/dist/types.d.ts +0 -793
  1047. package/packages/protocol/dist/types.d.ts.map +0 -1
  1048. package/packages/protocol/dist/types.js +0 -8
  1049. package/packages/protocol/dist/types.js.map +0 -1
  1050. package/packages/protocol/package.json +0 -61
  1051. package/packages/protocol/src/channels.test.ts +0 -330
  1052. package/packages/protocol/src/channels.ts +0 -270
  1053. package/packages/protocol/src/framing.test.ts +0 -164
  1054. package/packages/protocol/src/framing.ts +0 -242
  1055. package/packages/protocol/src/id-generator.ts +0 -69
  1056. package/packages/protocol/src/index.ts +0 -4
  1057. package/packages/protocol/src/relay-pty-schemas.ts +0 -400
  1058. package/packages/protocol/src/types.test.ts +0 -271
  1059. package/packages/protocol/src/types.ts +0 -988
  1060. package/packages/protocol/tsconfig.json +0 -21
  1061. package/packages/protocol/vitest.config.ts +0 -9
  1062. package/packages/resiliency/dist/cgroup-manager.d.ts +0 -152
  1063. package/packages/resiliency/dist/cgroup-manager.d.ts.map +0 -1
  1064. package/packages/resiliency/dist/cgroup-manager.js +0 -394
  1065. package/packages/resiliency/dist/cgroup-manager.js.map +0 -1
  1066. package/packages/resiliency/dist/context-persistence.d.ts +0 -140
  1067. package/packages/resiliency/dist/context-persistence.d.ts.map +0 -1
  1068. package/packages/resiliency/dist/context-persistence.js +0 -397
  1069. package/packages/resiliency/dist/context-persistence.js.map +0 -1
  1070. package/packages/resiliency/dist/crash-insights.d.ts +0 -156
  1071. package/packages/resiliency/dist/crash-insights.d.ts.map +0 -1
  1072. package/packages/resiliency/dist/crash-insights.js +0 -492
  1073. package/packages/resiliency/dist/crash-insights.js.map +0 -1
  1074. package/packages/resiliency/dist/gossip-health.d.ts +0 -137
  1075. package/packages/resiliency/dist/gossip-health.d.ts.map +0 -1
  1076. package/packages/resiliency/dist/gossip-health.js +0 -241
  1077. package/packages/resiliency/dist/gossip-health.js.map +0 -1
  1078. package/packages/resiliency/dist/health-monitor.d.ts +0 -97
  1079. package/packages/resiliency/dist/health-monitor.d.ts.map +0 -1
  1080. package/packages/resiliency/dist/health-monitor.js +0 -291
  1081. package/packages/resiliency/dist/health-monitor.js.map +0 -1
  1082. package/packages/resiliency/dist/index.d.ts +0 -69
  1083. package/packages/resiliency/dist/index.d.ts.map +0 -1
  1084. package/packages/resiliency/dist/index.js +0 -69
  1085. package/packages/resiliency/dist/index.js.map +0 -1
  1086. package/packages/resiliency/dist/leader-watchdog.d.ts +0 -109
  1087. package/packages/resiliency/dist/leader-watchdog.d.ts.map +0 -1
  1088. package/packages/resiliency/dist/leader-watchdog.js +0 -189
  1089. package/packages/resiliency/dist/leader-watchdog.js.map +0 -1
  1090. package/packages/resiliency/dist/logger.d.ts +0 -114
  1091. package/packages/resiliency/dist/logger.d.ts.map +0 -1
  1092. package/packages/resiliency/dist/logger.js +0 -250
  1093. package/packages/resiliency/dist/logger.js.map +0 -1
  1094. package/packages/resiliency/dist/memory-monitor.d.ts +0 -172
  1095. package/packages/resiliency/dist/memory-monitor.d.ts.map +0 -1
  1096. package/packages/resiliency/dist/memory-monitor.js +0 -599
  1097. package/packages/resiliency/dist/memory-monitor.js.map +0 -1
  1098. package/packages/resiliency/dist/metrics.d.ts +0 -115
  1099. package/packages/resiliency/dist/metrics.d.ts.map +0 -1
  1100. package/packages/resiliency/dist/metrics.js +0 -239
  1101. package/packages/resiliency/dist/metrics.js.map +0 -1
  1102. package/packages/resiliency/dist/provider-context.d.ts +0 -100
  1103. package/packages/resiliency/dist/provider-context.d.ts.map +0 -1
  1104. package/packages/resiliency/dist/provider-context.js +0 -362
  1105. package/packages/resiliency/dist/provider-context.js.map +0 -1
  1106. package/packages/resiliency/dist/stateless-lead.d.ts +0 -149
  1107. package/packages/resiliency/dist/stateless-lead.d.ts.map +0 -1
  1108. package/packages/resiliency/dist/stateless-lead.js +0 -308
  1109. package/packages/resiliency/dist/stateless-lead.js.map +0 -1
  1110. package/packages/resiliency/dist/supervisor.d.ts +0 -147
  1111. package/packages/resiliency/dist/supervisor.d.ts.map +0 -1
  1112. package/packages/resiliency/dist/supervisor.js +0 -459
  1113. package/packages/resiliency/dist/supervisor.js.map +0 -1
  1114. package/packages/resiliency/package.json +0 -38
  1115. package/packages/resiliency/src/cgroup-manager.ts +0 -468
  1116. package/packages/resiliency/src/context-persistence.ts +0 -538
  1117. package/packages/resiliency/src/crash-insights.test.ts +0 -620
  1118. package/packages/resiliency/src/crash-insights.ts +0 -660
  1119. package/packages/resiliency/src/gossip-health.ts +0 -333
  1120. package/packages/resiliency/src/health-monitor.ts +0 -371
  1121. package/packages/resiliency/src/index.ts +0 -157
  1122. package/packages/resiliency/src/leader-watchdog.ts +0 -260
  1123. package/packages/resiliency/src/logger.ts +0 -320
  1124. package/packages/resiliency/src/memory-monitor.test.ts +0 -637
  1125. package/packages/resiliency/src/memory-monitor.ts +0 -740
  1126. package/packages/resiliency/src/metrics.ts +0 -311
  1127. package/packages/resiliency/src/provider-context.ts +0 -452
  1128. package/packages/resiliency/src/stateless-lead.ts +0 -408
  1129. package/packages/resiliency/src/supervisor.ts +0 -578
  1130. package/packages/resiliency/tsconfig.json +0 -21
  1131. package/packages/resiliency/vitest.config.ts +0 -9
  1132. package/packages/sdk/dist/discovery.d.ts +0 -10
  1133. package/packages/sdk/dist/discovery.d.ts.map +0 -1
  1134. package/packages/sdk/dist/discovery.js +0 -22
  1135. package/packages/sdk/dist/discovery.js.map +0 -1
  1136. package/packages/sdk/dist/errors.d.ts +0 -9
  1137. package/packages/sdk/dist/errors.d.ts.map +0 -1
  1138. package/packages/sdk/dist/errors.js +0 -9
  1139. package/packages/sdk/dist/errors.js.map +0 -1
  1140. package/packages/sdk/dist/protocol/index.d.ts +0 -8
  1141. package/packages/sdk/dist/protocol/index.d.ts.map +0 -1
  1142. package/packages/sdk/dist/protocol/index.js +0 -8
  1143. package/packages/sdk/dist/protocol/index.js.map +0 -1
  1144. package/packages/sdk/examples/SWARM_CAPABILITIES.md +0 -498
  1145. package/packages/sdk/examples/SWARM_PATTERNS.md +0 -541
  1146. package/packages/sdk/src/client.test.ts +0 -1041
  1147. package/packages/sdk/src/discovery.ts +0 -38
  1148. package/packages/sdk/src/errors.ts +0 -17
  1149. package/packages/sdk/src/logs.test.ts +0 -98
  1150. package/packages/sdk/src/protocol/framing.test.ts +0 -164
  1151. package/packages/sdk/src/protocol/index.ts +0 -8
  1152. package/packages/spawner/.trajectories/index.json +0 -5
  1153. package/packages/spawner/API.md +0 -256
  1154. package/packages/spawner/dist/index.d.ts +0 -8
  1155. package/packages/spawner/dist/index.d.ts.map +0 -1
  1156. package/packages/spawner/dist/index.js +0 -8
  1157. package/packages/spawner/dist/index.js.map +0 -1
  1158. package/packages/spawner/dist/types.d.ts +0 -552
  1159. package/packages/spawner/dist/types.d.ts.map +0 -1
  1160. package/packages/spawner/dist/types.js +0 -193
  1161. package/packages/spawner/dist/types.js.map +0 -1
  1162. package/packages/spawner/package.json +0 -47
  1163. package/packages/spawner/src/index.ts +0 -8
  1164. package/packages/spawner/src/types.test.ts +0 -385
  1165. package/packages/spawner/src/types.ts +0 -228
  1166. package/packages/spawner/tsconfig.json +0 -19
  1167. package/packages/spawner/vitest.config.ts +0 -9
  1168. package/packages/state/dist/agent-state.d.ts +0 -40
  1169. package/packages/state/dist/agent-state.d.ts.map +0 -1
  1170. package/packages/state/dist/agent-state.js +0 -120
  1171. package/packages/state/dist/agent-state.js.map +0 -1
  1172. package/packages/state/dist/index.d.ts +0 -8
  1173. package/packages/state/dist/index.d.ts.map +0 -1
  1174. package/packages/state/dist/index.js +0 -8
  1175. package/packages/state/dist/index.js.map +0 -1
  1176. package/packages/state/package.json +0 -37
  1177. package/packages/state/src/agent-state.test.ts +0 -335
  1178. package/packages/state/src/agent-state.ts +0 -153
  1179. package/packages/state/src/index.ts +0 -12
  1180. package/packages/state/tsconfig.json +0 -21
  1181. package/packages/state/vitest.config.ts +0 -9
  1182. package/packages/storage/dist/adapter.d.ts +0 -189
  1183. package/packages/storage/dist/adapter.d.ts.map +0 -1
  1184. package/packages/storage/dist/adapter.js +0 -267
  1185. package/packages/storage/dist/adapter.js.map +0 -1
  1186. package/packages/storage/dist/batched-sqlite-adapter.d.ts +0 -75
  1187. package/packages/storage/dist/batched-sqlite-adapter.d.ts.map +0 -1
  1188. package/packages/storage/dist/batched-sqlite-adapter.js +0 -189
  1189. package/packages/storage/dist/batched-sqlite-adapter.js.map +0 -1
  1190. package/packages/storage/dist/dead-letter-queue.d.ts +0 -196
  1191. package/packages/storage/dist/dead-letter-queue.d.ts.map +0 -1
  1192. package/packages/storage/dist/dead-letter-queue.js +0 -427
  1193. package/packages/storage/dist/dead-letter-queue.js.map +0 -1
  1194. package/packages/storage/dist/dlq-adapter.d.ts +0 -195
  1195. package/packages/storage/dist/dlq-adapter.d.ts.map +0 -1
  1196. package/packages/storage/dist/dlq-adapter.js +0 -664
  1197. package/packages/storage/dist/dlq-adapter.js.map +0 -1
  1198. package/packages/storage/dist/index.d.ts +0 -6
  1199. package/packages/storage/dist/index.d.ts.map +0 -1
  1200. package/packages/storage/dist/index.js +0 -7
  1201. package/packages/storage/dist/index.js.map +0 -1
  1202. package/packages/storage/dist/jsonl-adapter.d.ts +0 -91
  1203. package/packages/storage/dist/jsonl-adapter.d.ts.map +0 -1
  1204. package/packages/storage/dist/jsonl-adapter.js +0 -580
  1205. package/packages/storage/dist/jsonl-adapter.js.map +0 -1
  1206. package/packages/storage/dist/sqlite-adapter.d.ts +0 -131
  1207. package/packages/storage/dist/sqlite-adapter.d.ts.map +0 -1
  1208. package/packages/storage/dist/sqlite-adapter.js +0 -865
  1209. package/packages/storage/dist/sqlite-adapter.js.map +0 -1
  1210. package/packages/storage/package.json +0 -74
  1211. package/packages/storage/src/adapter.ts +0 -446
  1212. package/packages/storage/src/batched-sqlite-adapter.test.ts +0 -256
  1213. package/packages/storage/src/batched-sqlite-adapter.ts +0 -239
  1214. package/packages/storage/src/dead-letter-queue.ts +0 -643
  1215. package/packages/storage/src/dlq-adapter.test.ts +0 -509
  1216. package/packages/storage/src/dlq-adapter.ts +0 -954
  1217. package/packages/storage/src/index.ts +0 -6
  1218. package/packages/storage/src/jsonl-adapter.test.ts +0 -239
  1219. package/packages/storage/src/jsonl-adapter.ts +0 -704
  1220. package/packages/storage/src/memory-adapter.test.ts +0 -36
  1221. package/packages/storage/src/sqlite-adapter.test.ts +0 -580
  1222. package/packages/storage/src/sqlite-adapter.ts +0 -1099
  1223. package/packages/storage/tsconfig.json +0 -21
  1224. package/packages/storage/vitest.config.ts +0 -9
  1225. package/packages/wrapper/dist/__fixtures__/claude-outputs.d.ts +0 -49
  1226. package/packages/wrapper/dist/__fixtures__/claude-outputs.d.ts.map +0 -1
  1227. package/packages/wrapper/dist/__fixtures__/claude-outputs.js +0 -443
  1228. package/packages/wrapper/dist/__fixtures__/claude-outputs.js.map +0 -1
  1229. package/packages/wrapper/dist/__fixtures__/codex-outputs.d.ts +0 -9
  1230. package/packages/wrapper/dist/__fixtures__/codex-outputs.d.ts.map +0 -1
  1231. package/packages/wrapper/dist/__fixtures__/codex-outputs.js +0 -94
  1232. package/packages/wrapper/dist/__fixtures__/codex-outputs.js.map +0 -1
  1233. package/packages/wrapper/dist/__fixtures__/gemini-outputs.d.ts +0 -19
  1234. package/packages/wrapper/dist/__fixtures__/gemini-outputs.d.ts.map +0 -1
  1235. package/packages/wrapper/dist/__fixtures__/gemini-outputs.js +0 -144
  1236. package/packages/wrapper/dist/__fixtures__/gemini-outputs.js.map +0 -1
  1237. package/packages/wrapper/dist/__fixtures__/index.d.ts +0 -68
  1238. package/packages/wrapper/dist/__fixtures__/index.d.ts.map +0 -1
  1239. package/packages/wrapper/dist/__fixtures__/index.js +0 -44
  1240. package/packages/wrapper/dist/__fixtures__/index.js.map +0 -1
  1241. package/packages/wrapper/dist/auth-detection.d.ts +0 -49
  1242. package/packages/wrapper/dist/auth-detection.d.ts.map +0 -1
  1243. package/packages/wrapper/dist/auth-detection.js +0 -199
  1244. package/packages/wrapper/dist/auth-detection.js.map +0 -1
  1245. package/packages/wrapper/dist/base-wrapper.d.ts +0 -254
  1246. package/packages/wrapper/dist/base-wrapper.d.ts.map +0 -1
  1247. package/packages/wrapper/dist/base-wrapper.js +0 -664
  1248. package/packages/wrapper/dist/base-wrapper.js.map +0 -1
  1249. package/packages/wrapper/dist/client.d.ts +0 -291
  1250. package/packages/wrapper/dist/client.d.ts.map +0 -1
  1251. package/packages/wrapper/dist/client.js +0 -926
  1252. package/packages/wrapper/dist/client.js.map +0 -1
  1253. package/packages/wrapper/dist/id-generator.d.ts +0 -35
  1254. package/packages/wrapper/dist/id-generator.d.ts.map +0 -1
  1255. package/packages/wrapper/dist/id-generator.js +0 -60
  1256. package/packages/wrapper/dist/id-generator.js.map +0 -1
  1257. package/packages/wrapper/dist/idle-detector.d.ts +0 -114
  1258. package/packages/wrapper/dist/idle-detector.d.ts.map +0 -1
  1259. package/packages/wrapper/dist/idle-detector.js +0 -317
  1260. package/packages/wrapper/dist/idle-detector.js.map +0 -1
  1261. package/packages/wrapper/dist/inbox.d.ts +0 -37
  1262. package/packages/wrapper/dist/inbox.d.ts.map +0 -1
  1263. package/packages/wrapper/dist/inbox.js +0 -73
  1264. package/packages/wrapper/dist/inbox.js.map +0 -1
  1265. package/packages/wrapper/dist/index.d.ts +0 -40
  1266. package/packages/wrapper/dist/index.d.ts.map +0 -1
  1267. package/packages/wrapper/dist/index.js +0 -53
  1268. package/packages/wrapper/dist/index.js.map +0 -1
  1269. package/packages/wrapper/dist/opencode-api.d.ts +0 -106
  1270. package/packages/wrapper/dist/opencode-api.d.ts.map +0 -1
  1271. package/packages/wrapper/dist/opencode-api.js +0 -219
  1272. package/packages/wrapper/dist/opencode-api.js.map +0 -1
  1273. package/packages/wrapper/dist/opencode-wrapper.d.ts +0 -161
  1274. package/packages/wrapper/dist/opencode-wrapper.d.ts.map +0 -1
  1275. package/packages/wrapper/dist/opencode-wrapper.js +0 -438
  1276. package/packages/wrapper/dist/opencode-wrapper.js.map +0 -1
  1277. package/packages/wrapper/dist/parser.d.ts +0 -236
  1278. package/packages/wrapper/dist/parser.d.ts.map +0 -1
  1279. package/packages/wrapper/dist/parser.js +0 -1238
  1280. package/packages/wrapper/dist/parser.js.map +0 -1
  1281. package/packages/wrapper/dist/prompt-composer.d.ts +0 -67
  1282. package/packages/wrapper/dist/prompt-composer.d.ts.map +0 -1
  1283. package/packages/wrapper/dist/prompt-composer.js +0 -168
  1284. package/packages/wrapper/dist/prompt-composer.js.map +0 -1
  1285. package/packages/wrapper/dist/relay-pty-orchestrator.d.ts +0 -486
  1286. package/packages/wrapper/dist/relay-pty-orchestrator.d.ts.map +0 -1
  1287. package/packages/wrapper/dist/relay-pty-orchestrator.js +0 -2550
  1288. package/packages/wrapper/dist/relay-pty-orchestrator.js.map +0 -1
  1289. package/packages/wrapper/dist/shared.d.ts +0 -262
  1290. package/packages/wrapper/dist/shared.d.ts.map +0 -1
  1291. package/packages/wrapper/dist/shared.js +0 -507
  1292. package/packages/wrapper/dist/shared.js.map +0 -1
  1293. package/packages/wrapper/dist/stuck-detector.d.ts +0 -161
  1294. package/packages/wrapper/dist/stuck-detector.d.ts.map +0 -1
  1295. package/packages/wrapper/dist/stuck-detector.js +0 -402
  1296. package/packages/wrapper/dist/stuck-detector.js.map +0 -1
  1297. package/packages/wrapper/dist/tmux-resolver.d.ts +0 -55
  1298. package/packages/wrapper/dist/tmux-resolver.d.ts.map +0 -1
  1299. package/packages/wrapper/dist/tmux-resolver.js +0 -175
  1300. package/packages/wrapper/dist/tmux-resolver.js.map +0 -1
  1301. package/packages/wrapper/dist/tmux-wrapper.d.ts +0 -352
  1302. package/packages/wrapper/dist/tmux-wrapper.d.ts.map +0 -1
  1303. package/packages/wrapper/dist/tmux-wrapper.js +0 -1816
  1304. package/packages/wrapper/dist/tmux-wrapper.js.map +0 -1
  1305. package/packages/wrapper/dist/trajectory-integration.d.ts +0 -292
  1306. package/packages/wrapper/dist/trajectory-integration.d.ts.map +0 -1
  1307. package/packages/wrapper/dist/trajectory-integration.js +0 -979
  1308. package/packages/wrapper/dist/trajectory-integration.js.map +0 -1
  1309. package/packages/wrapper/dist/wrapper-events.d.ts +0 -489
  1310. package/packages/wrapper/dist/wrapper-events.d.ts.map +0 -1
  1311. package/packages/wrapper/dist/wrapper-events.js +0 -252
  1312. package/packages/wrapper/dist/wrapper-events.js.map +0 -1
  1313. package/packages/wrapper/dist/wrapper-types.d.ts +0 -41
  1314. package/packages/wrapper/dist/wrapper-types.d.ts.map +0 -1
  1315. package/packages/wrapper/dist/wrapper-types.js +0 -7
  1316. package/packages/wrapper/dist/wrapper-types.js.map +0 -1
  1317. package/packages/wrapper/package.json +0 -60
  1318. package/packages/wrapper/src/__fixtures__/claude-outputs.ts +0 -471
  1319. package/packages/wrapper/src/__fixtures__/codex-outputs.ts +0 -99
  1320. package/packages/wrapper/src/__fixtures__/gemini-outputs.ts +0 -151
  1321. package/packages/wrapper/src/__fixtures__/index.ts +0 -47
  1322. package/packages/wrapper/src/auth-detection.ts +0 -244
  1323. package/packages/wrapper/src/base-wrapper.test.ts +0 -589
  1324. package/packages/wrapper/src/base-wrapper.ts +0 -841
  1325. package/packages/wrapper/src/client.test.ts +0 -351
  1326. package/packages/wrapper/src/client.ts +0 -1166
  1327. package/packages/wrapper/src/id-generator.test.ts +0 -71
  1328. package/packages/wrapper/src/id-generator.ts +0 -69
  1329. package/packages/wrapper/src/idle-detector.test.ts +0 -418
  1330. package/packages/wrapper/src/idle-detector.ts +0 -384
  1331. package/packages/wrapper/src/inbox.test.ts +0 -233
  1332. package/packages/wrapper/src/inbox.ts +0 -89
  1333. package/packages/wrapper/src/index.ts +0 -199
  1334. package/packages/wrapper/src/opencode-api.test.ts +0 -292
  1335. package/packages/wrapper/src/opencode-api.ts +0 -285
  1336. package/packages/wrapper/src/opencode-wrapper.ts +0 -541
  1337. package/packages/wrapper/src/parser.regression.test.ts +0 -251
  1338. package/packages/wrapper/src/parser.test.ts +0 -1359
  1339. package/packages/wrapper/src/parser.ts +0 -1477
  1340. package/packages/wrapper/src/prompt-composer.test.ts +0 -219
  1341. package/packages/wrapper/src/prompt-composer.ts +0 -231
  1342. package/packages/wrapper/src/relay-pty-orchestrator.test.ts +0 -1386
  1343. package/packages/wrapper/src/relay-pty-orchestrator.ts +0 -3041
  1344. package/packages/wrapper/src/shared.test.ts +0 -467
  1345. package/packages/wrapper/src/shared.ts +0 -652
  1346. package/packages/wrapper/src/stuck-detector.test.ts +0 -303
  1347. package/packages/wrapper/src/stuck-detector.ts +0 -511
  1348. package/packages/wrapper/src/tmux-resolver.test.ts +0 -104
  1349. package/packages/wrapper/src/tmux-resolver.ts +0 -207
  1350. package/packages/wrapper/src/tmux-wrapper.test.ts +0 -316
  1351. package/packages/wrapper/src/tmux-wrapper.ts +0 -2095
  1352. package/packages/wrapper/src/trajectory-detection.test.ts +0 -151
  1353. package/packages/wrapper/src/trajectory-integration.ts +0 -1261
  1354. package/packages/wrapper/src/wrapper-events.ts +0 -395
  1355. package/packages/wrapper/src/wrapper-types.ts +0 -45
  1356. package/packages/wrapper/tsconfig.json +0 -19
  1357. package/packages/wrapper/vitest.config.ts +0 -9
  1358. /package/packages/{broker-sdk → sdk}/dist/__tests__/facade.test.d.ts +0 -0
  1359. /package/packages/{broker-sdk → sdk}/dist/__tests__/facade.test.d.ts.map +0 -0
  1360. /package/packages/{broker-sdk → sdk}/dist/__tests__/integration.test.d.ts +0 -0
  1361. /package/packages/{broker-sdk → sdk}/dist/__tests__/integration.test.d.ts.map +0 -0
  1362. /package/packages/{broker-sdk → sdk}/dist/__tests__/quickstart.test.d.ts +0 -0
  1363. /package/packages/{broker-sdk → sdk}/dist/__tests__/quickstart.test.d.ts.map +0 -0
  1364. /package/packages/{broker-sdk → sdk}/dist/__tests__/unit.test.d.ts +0 -0
  1365. /package/packages/{broker-sdk → sdk}/dist/__tests__/unit.test.d.ts.map +0 -0
  1366. /package/packages/{broker-sdk → sdk}/dist/browser.d.ts +0 -0
  1367. /package/packages/{broker-sdk → sdk}/dist/browser.d.ts.map +0 -0
  1368. /package/packages/{broker-sdk → sdk}/dist/browser.js +0 -0
  1369. /package/packages/{broker-sdk → sdk}/dist/browser.js.map +0 -0
  1370. /package/packages/{broker-sdk → sdk}/dist/consensus-helpers.d.ts +0 -0
  1371. /package/packages/{broker-sdk → sdk}/dist/consensus-helpers.d.ts.map +0 -0
  1372. /package/packages/{broker-sdk → sdk}/dist/consensus-helpers.js +0 -0
  1373. /package/packages/{broker-sdk → sdk}/dist/consensus-helpers.js.map +0 -0
  1374. /package/packages/{broker-sdk → sdk}/dist/consensus.d.ts +0 -0
  1375. /package/packages/{broker-sdk → sdk}/dist/consensus.d.ts.map +0 -0
  1376. /package/packages/{broker-sdk → sdk}/dist/consensus.js +0 -0
  1377. /package/packages/{broker-sdk → sdk}/dist/consensus.js.map +0 -0
  1378. /package/packages/{broker-sdk → sdk}/dist/examples/demo.d.ts +0 -0
  1379. /package/packages/{broker-sdk → sdk}/dist/examples/demo.d.ts.map +0 -0
  1380. /package/packages/{broker-sdk → sdk}/dist/examples/demo.js +0 -0
  1381. /package/packages/{broker-sdk → sdk}/dist/examples/demo.js.map +0 -0
  1382. /package/packages/{broker-sdk → sdk}/dist/examples/example.d.ts +0 -0
  1383. /package/packages/{broker-sdk → sdk}/dist/examples/example.d.ts.map +0 -0
  1384. /package/packages/{broker-sdk → sdk}/dist/examples/example.js +0 -0
  1385. /package/packages/{broker-sdk → sdk}/dist/examples/example.js.map +0 -0
  1386. /package/packages/{broker-sdk → sdk}/dist/examples/quickstart.d.ts +0 -0
  1387. /package/packages/{broker-sdk → sdk}/dist/examples/quickstart.d.ts.map +0 -0
  1388. /package/packages/{broker-sdk → sdk}/dist/examples/quickstart.js +0 -0
  1389. /package/packages/{broker-sdk → sdk}/dist/examples/quickstart.js.map +0 -0
  1390. /package/packages/{broker-sdk → sdk}/dist/examples/ralph-loop.d.ts +0 -0
  1391. /package/packages/{broker-sdk → sdk}/dist/examples/ralph-loop.d.ts.map +0 -0
  1392. /package/packages/{broker-sdk → sdk}/dist/examples/ralph-loop.js +0 -0
  1393. /package/packages/{broker-sdk → sdk}/dist/examples/ralph-loop.js.map +0 -0
  1394. /package/packages/{broker-sdk → sdk}/dist/protocol.js +0 -0
  1395. /package/packages/{broker-sdk → sdk}/dist/protocol.js.map +0 -0
  1396. /package/packages/{broker-sdk → sdk}/dist/pty.d.ts +0 -0
  1397. /package/packages/{broker-sdk → sdk}/dist/shadow.js +0 -0
  1398. /package/packages/{broker-sdk → sdk}/dist/workflows/barrier.d.ts +0 -0
  1399. /package/packages/{broker-sdk → sdk}/dist/workflows/barrier.d.ts.map +0 -0
  1400. /package/packages/{broker-sdk → sdk}/dist/workflows/barrier.js +0 -0
  1401. /package/packages/{broker-sdk → sdk}/dist/workflows/barrier.js.map +0 -0
  1402. /package/packages/{broker-sdk → sdk}/dist/workflows/memory-db.d.ts +0 -0
  1403. /package/packages/{broker-sdk → sdk}/dist/workflows/memory-db.d.ts.map +0 -0
  1404. /package/packages/{broker-sdk → sdk}/dist/workflows/memory-db.js +0 -0
  1405. /package/packages/{broker-sdk → sdk}/dist/workflows/memory-db.js.map +0 -0
  1406. /package/packages/{broker-sdk → sdk}/dist/workflows/state.d.ts +0 -0
  1407. /package/packages/{broker-sdk → sdk}/dist/workflows/state.d.ts.map +0 -0
  1408. /package/packages/{broker-sdk → sdk}/dist/workflows/state.js +0 -0
  1409. /package/packages/{broker-sdk → sdk}/dist/workflows/state.js.map +0 -0
  1410. /package/packages/{broker-sdk → sdk}/src/__tests__/workflow-trajectory.test.ts +0 -0
  1411. /package/packages/{broker-sdk → sdk}/src/browser.ts +0 -0
  1412. /package/packages/{broker-sdk → sdk}/src/consensus-helpers.ts +0 -0
  1413. /package/packages/{broker-sdk → sdk}/src/consensus.ts +0 -0
  1414. /package/packages/{broker-sdk → sdk}/src/examples/demo.ts +0 -0
  1415. /package/packages/{broker-sdk → sdk}/src/examples/example.ts +0 -0
  1416. /package/packages/{broker-sdk → sdk}/src/examples/quickstart.ts +0 -0
  1417. /package/packages/{broker-sdk → sdk}/src/examples/ralph-loop.ts +0 -0
  1418. /package/packages/{broker-sdk → sdk}/src/examples/sample-prd.json +0 -0
  1419. /package/packages/{broker-sdk → sdk}/src/workflows/barrier.ts +0 -0
  1420. /package/packages/{broker-sdk → sdk}/src/workflows/memory-db.ts +0 -0
  1421. /package/packages/{broker-sdk → sdk}/src/workflows/state.ts +0 -0
@@ -1,1386 +0,0 @@
1
- /**
2
- * Tests for RelayPtyOrchestrator
3
- *
4
- * Tests the TypeScript orchestrator that manages the relay-pty Rust binary.
5
- * Uses mocks for child process and socket communication.
6
- */
7
-
8
- import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
9
- import { EventEmitter } from 'node:events';
10
- import type { ChildProcess } from 'node:child_process';
11
- import type { Socket } from 'node:net';
12
- import { createHash } from 'node:crypto';
13
-
14
- // Mock modules before importing the class
15
- vi.mock('node:child_process', () => ({
16
- spawn: vi.fn(),
17
- }));
18
-
19
- vi.mock('node:net', () => ({
20
- createConnection: vi.fn(),
21
- }));
22
-
23
- const { mockExistsSync, mockAccessSync } = vi.hoisted(() => ({
24
- mockExistsSync: vi.fn((path: string) => {
25
- // Simulate relay-pty binary exists at any relay-pty path
26
- return typeof path === 'string' && path.includes('relay-pty');
27
- }),
28
- mockAccessSync: vi.fn((path: string) => {
29
- if (typeof path === 'string' && path.includes('relay-pty')) return undefined;
30
- throw new Error('not executable');
31
- }),
32
- }));
33
-
34
- vi.mock('node:fs', async (importOriginal) => {
35
- const actual = await importOriginal<typeof import('node:fs')>();
36
- return {
37
- ...actual,
38
- existsSync: mockExistsSync,
39
- accessSync: (path: any, _mode: any) => mockAccessSync(path),
40
- default: {
41
- ...actual,
42
- existsSync: mockExistsSync,
43
- accessSync: (path: any, _mode: any) => mockAccessSync(path),
44
- },
45
- };
46
- });
47
-
48
- // Mock the client module
49
- vi.mock('./client.js', () => ({
50
- RelayClient: vi.fn().mockImplementation((options: any) => ({
51
- name: options.agentName,
52
- state: 'READY' as string,
53
- connect: vi.fn().mockResolvedValue(undefined),
54
- sendMessage: vi.fn().mockReturnValue(true),
55
- sendLog: vi.fn(),
56
- destroy: vi.fn(),
57
- onMessage: null,
58
- onChannelMessage: null,
59
- })),
60
- }));
61
-
62
- // Mock continuity
63
- vi.mock('@agent-relay/continuity', () => ({
64
- getContinuityManager: vi.fn(() => null),
65
- parseContinuityCommand: vi.fn(),
66
- hasContinuityCommand: vi.fn(() => false),
67
- }));
68
-
69
- // Now import after mocks
70
- import { spawn } from 'node:child_process';
71
- import { createConnection } from 'node:net';
72
- import { RelayPtyOrchestrator } from './relay-pty-orchestrator.js';
73
-
74
- /**
75
- * Create a mock ChildProcess
76
- */
77
- function createMockProcess(): ChildProcess {
78
- const proc = new EventEmitter() as ChildProcess;
79
- proc.stdout = new EventEmitter() as any;
80
- proc.stderr = new EventEmitter() as any;
81
- proc.stdin = { write: vi.fn() } as any;
82
- proc.pid = 12345;
83
- proc.killed = false;
84
- proc.kill = vi.fn(() => {
85
- proc.killed = true;
86
- setTimeout(() => proc.emit('exit', 0, null), 0);
87
- return true;
88
- });
89
- proc.exitCode = null;
90
- return proc;
91
- }
92
-
93
- /**
94
- * Create a mock Socket
95
- */
96
- function createMockSocket(): Socket {
97
- const socket = new EventEmitter() as Socket;
98
- socket.write = vi.fn((data: any, cb?: any) => {
99
- if (typeof cb === 'function') cb();
100
- return true;
101
- });
102
- socket.destroy = vi.fn();
103
- (socket as any).destroyed = false;
104
- return socket;
105
- }
106
-
107
- describe('RelayPtyOrchestrator', () => {
108
- let orchestrator: RelayPtyOrchestrator;
109
- let mockProcess: ChildProcess;
110
- let mockSocket: Socket;
111
- const mockSpawn = spawn as unknown as ReturnType<typeof vi.fn>;
112
- const mockCreateConnection = createConnection as unknown as ReturnType<typeof vi.fn>;
113
-
114
- // Save original WORKSPACE_ID to restore after each test
115
- let originalWorkspaceId: string | undefined;
116
-
117
- beforeEach(() => {
118
- vi.clearAllMocks();
119
-
120
- // Save and clear WORKSPACE_ID to test legacy paths by default
121
- // Tests that need workspace namespacing can set it explicitly
122
- originalWorkspaceId = process.env.WORKSPACE_ID;
123
- delete process.env.WORKSPACE_ID;
124
-
125
- // Reset existsSync mock to default implementation
126
- mockExistsSync.mockImplementation((path: string) => {
127
- return typeof path === 'string' && path.includes('relay-pty');
128
- });
129
-
130
- // Set up mock process
131
- mockProcess = createMockProcess();
132
- mockSpawn.mockReturnValue(mockProcess);
133
-
134
- // Set up mock socket
135
- mockSocket = createMockSocket();
136
- mockCreateConnection.mockImplementation((_path: string, callback: () => void) => {
137
- setTimeout(() => callback(), 10);
138
- return mockSocket;
139
- });
140
-
141
- // Mock waitUntilCliReady to resolve immediately in tests
142
- // This avoids waiting for CLI readiness checks which require complex simulation
143
- vi.spyOn(RelayPtyOrchestrator.prototype, 'waitUntilCliReady').mockResolvedValue(true);
144
-
145
- // Mock isProcessAlive to return true - the real implementation uses process.kill(pid, 0)
146
- // which fails for mock PIDs that don't correspond to real processes
147
- vi.spyOn(RelayPtyOrchestrator.prototype as any, 'isProcessAlive').mockReturnValue(true);
148
- });
149
-
150
- afterEach(async () => {
151
- if (orchestrator?.isRunning) {
152
- await orchestrator.stop();
153
- }
154
-
155
- // Restore original WORKSPACE_ID
156
- if (originalWorkspaceId !== undefined) {
157
- process.env.WORKSPACE_ID = originalWorkspaceId;
158
- } else {
159
- delete process.env.WORKSPACE_ID;
160
- }
161
- });
162
-
163
- describe('constructor', () => {
164
- it('sets socket path based on agent name', () => {
165
- orchestrator = new RelayPtyOrchestrator({
166
- name: 'TestAgent',
167
- command: 'claude',
168
- });
169
-
170
- // Local mode uses ~/.agent-relay paths
171
- expect(orchestrator.getSocketPath()).toContain('.agent-relay');
172
- expect(orchestrator.getSocketPath()).toContain('TestAgent.sock');
173
- });
174
-
175
- it('uses workspace-namespaced paths when WORKSPACE_ID is in config.env', () => {
176
- orchestrator = new RelayPtyOrchestrator({
177
- name: 'TestAgent',
178
- command: 'claude',
179
- env: { WORKSPACE_ID: 'ws-12345' },
180
- });
181
-
182
- expect(orchestrator.getSocketPath()).toBe('/tmp/relay/ws-12345/sockets/TestAgent.sock');
183
- expect(orchestrator.outboxPath).toBe('/tmp/relay/ws-12345/outbox/TestAgent');
184
- });
185
-
186
- it('hashes workspace id when socket path is too long', () => {
187
- const longWorkspaceId = `ws-${'a'.repeat(140)}`;
188
- const hashedWorkspaceId = createHash('sha256').update(longWorkspaceId).digest('hex').slice(0, 12);
189
-
190
- orchestrator = new RelayPtyOrchestrator({
191
- name: 'LongAgent',
192
- command: 'claude',
193
- env: { WORKSPACE_ID: longWorkspaceId },
194
- });
195
-
196
- expect(orchestrator.getSocketPath()).toBe(`/tmp/relay/${hashedWorkspaceId}/sockets/LongAgent.sock`);
197
- expect(orchestrator.outboxPath).toBe(`/tmp/relay/${hashedWorkspaceId}/outbox/LongAgent`);
198
- });
199
-
200
- it('uses workspace-namespaced paths when WORKSPACE_ID is in process.env', () => {
201
- const originalEnv = process.env.WORKSPACE_ID;
202
- process.env.WORKSPACE_ID = 'ws-cloud-99';
203
-
204
- try {
205
- orchestrator = new RelayPtyOrchestrator({
206
- name: 'CloudAgent',
207
- command: 'claude',
208
- });
209
-
210
- expect(orchestrator.getSocketPath()).toBe('/tmp/relay/ws-cloud-99/sockets/CloudAgent.sock');
211
- expect(orchestrator.outboxPath).toBe('/tmp/relay/ws-cloud-99/outbox/CloudAgent');
212
- } finally {
213
- if (originalEnv === undefined) {
214
- delete process.env.WORKSPACE_ID;
215
- } else {
216
- process.env.WORKSPACE_ID = originalEnv;
217
- }
218
- }
219
- });
220
-
221
- it('uses canonical ~/.agent-relay paths when WORKSPACE_ID is not set', () => {
222
- // beforeEach already clears WORKSPACE_ID
223
- orchestrator = new RelayPtyOrchestrator({
224
- name: 'LocalAgent',
225
- command: 'claude',
226
- });
227
-
228
- // Local mode uses ~/.agent-relay paths, not /tmp
229
- expect(orchestrator.getSocketPath()).toContain('.agent-relay');
230
- expect(orchestrator.getSocketPath()).toContain('LocalAgent.sock');
231
- expect(orchestrator.outboxPath).toContain('.agent-relay');
232
- expect(orchestrator.outboxPath).toContain('outbox/LocalAgent');
233
- expect(orchestrator.outboxPath).not.toContain('/tmp/');
234
- });
235
- });
236
-
237
- describe('binary detection', () => {
238
- it('finds binary at release path', async () => {
239
- orchestrator = new RelayPtyOrchestrator({
240
- name: 'TestAgent',
241
- command: 'claude',
242
- });
243
-
244
- await orchestrator.start();
245
-
246
- expect(mockSpawn).toHaveBeenCalled();
247
- const spawnCall = mockSpawn.mock.calls[0];
248
- expect(spawnCall[0]).toContain('relay-pty');
249
- });
250
-
251
- it('uses custom binary path if provided', async () => {
252
- // Update mock to accept custom path
253
- mockExistsSync.mockImplementation((path: string) => {
254
- return path === '/custom/path/relay-pty' || (typeof path === 'string' && path.includes('relay-pty'));
255
- });
256
-
257
- orchestrator = new RelayPtyOrchestrator({
258
- name: 'TestAgent',
259
- command: 'claude',
260
- relayPtyPath: '/custom/path/relay-pty',
261
- });
262
-
263
- await orchestrator.start();
264
-
265
- const spawnCall = mockSpawn.mock.calls[0];
266
- expect(spawnCall[0]).toBe('/custom/path/relay-pty');
267
-
268
- // Reset mock
269
- mockExistsSync.mockImplementation((path: string) => {
270
- return typeof path === 'string' && path.includes('relay-pty');
271
- });
272
- });
273
- });
274
-
275
- describe('process management', () => {
276
- it('spawns relay-pty with correct arguments', async () => {
277
- orchestrator = new RelayPtyOrchestrator({
278
- name: 'TestAgent',
279
- command: 'claude',
280
- args: ['--model', 'opus'],
281
- idleBeforeInjectMs: 1000,
282
- });
283
-
284
- await orchestrator.start();
285
-
286
- const spawnCall = mockSpawn.mock.calls[0];
287
- const args = spawnCall[1] as string[];
288
-
289
- expect(args).toContain('--name');
290
- expect(args).toContain('TestAgent');
291
- expect(args).toContain('--socket');
292
- // Socket path should be in ~/.agent-relay for local mode
293
- const socketArg = args[args.indexOf('--socket') + 1];
294
- expect(socketArg).toContain('.agent-relay');
295
- expect(socketArg).toContain('TestAgent.sock');
296
- expect(args).toContain('--idle-timeout');
297
- expect(args).toContain('1000');
298
- expect(args).toContain('--');
299
- expect(args).toContain('claude');
300
- expect(args).toContain('--model');
301
- expect(args).toContain('opus');
302
- });
303
-
304
- it('sets environment variables', async () => {
305
- orchestrator = new RelayPtyOrchestrator({
306
- name: 'TestAgent',
307
- command: 'claude',
308
- env: { CUSTOM_VAR: 'value' },
309
- });
310
-
311
- await orchestrator.start();
312
-
313
- const spawnCall = mockSpawn.mock.calls[0];
314
- const options = spawnCall[2];
315
-
316
- expect(options.env.AGENT_RELAY_NAME).toBe('TestAgent');
317
- expect(options.env.TERM).toBe('xterm-256color');
318
- expect(options.env.CUSTOM_VAR).toBe('value');
319
- });
320
-
321
- it('emits exit event when process exits', async () => {
322
- orchestrator = new RelayPtyOrchestrator({
323
- name: 'TestAgent',
324
- command: 'claude',
325
- });
326
-
327
- const exitHandler = vi.fn();
328
- orchestrator.on('exit', exitHandler);
329
-
330
- await orchestrator.start();
331
-
332
- // Simulate process exit
333
- mockProcess.emit('exit', 0, null);
334
-
335
- expect(exitHandler).toHaveBeenCalledWith(0);
336
- });
337
-
338
- it('calls onExit callback', async () => {
339
- const onExit = vi.fn();
340
- orchestrator = new RelayPtyOrchestrator({
341
- name: 'TestAgent',
342
- command: 'claude',
343
- onExit,
344
- });
345
-
346
- await orchestrator.start();
347
- mockProcess.emit('exit', 1, null);
348
-
349
- expect(onExit).toHaveBeenCalledWith(1);
350
- });
351
- });
352
-
353
- describe('socket communication', () => {
354
- it('connects to socket after spawn', async () => {
355
- orchestrator = new RelayPtyOrchestrator({
356
- name: 'TestAgent',
357
- command: 'claude',
358
- });
359
-
360
- await orchestrator.start();
361
-
362
- // Should connect to the socket at ~/.agent-relay path for local mode
363
- expect(mockCreateConnection).toHaveBeenCalled();
364
- const socketPath = mockCreateConnection.mock.calls[0][0];
365
- expect(socketPath).toContain('.agent-relay');
366
- expect(socketPath).toContain('TestAgent.sock');
367
- });
368
-
369
- it('retries socket connection on failure', async () => {
370
- orchestrator = new RelayPtyOrchestrator({
371
- name: 'TestAgent',
372
- command: 'claude',
373
- socketConnectTimeoutMs: 100,
374
- socketReconnectAttempts: 3,
375
- });
376
-
377
- // First two attempts fail, third succeeds
378
- let attempts = 0;
379
- mockCreateConnection.mockImplementation((_path: string, callback: () => void) => {
380
- const sock = createMockSocket();
381
- attempts++;
382
- if (attempts < 3) {
383
- setTimeout(() => sock.emit('error', new Error('Connection refused')), 10);
384
- } else {
385
- setTimeout(() => callback(), 10);
386
- }
387
- return sock;
388
- });
389
-
390
- await orchestrator.start();
391
-
392
- expect(mockCreateConnection).toHaveBeenCalledTimes(3);
393
- });
394
-
395
- it('handles socket close', async () => {
396
- orchestrator = new RelayPtyOrchestrator({
397
- name: 'TestAgent',
398
- command: 'claude',
399
- });
400
-
401
- await orchestrator.start();
402
- mockSocket.emit('close');
403
-
404
- // Socket should be marked as disconnected
405
- // (Internal state, verified by inability to inject)
406
- });
407
- });
408
-
409
- describe('output handling', () => {
410
- it('emits output event for stdout data', async () => {
411
- orchestrator = new RelayPtyOrchestrator({
412
- name: 'TestAgent',
413
- command: 'claude',
414
- });
415
-
416
- const outputHandler = vi.fn();
417
- orchestrator.on('output', outputHandler);
418
-
419
- await orchestrator.start();
420
- mockProcess.stdout!.emit('data', Buffer.from('Hello from agent'));
421
-
422
- expect(outputHandler).toHaveBeenCalledWith('Hello from agent');
423
- });
424
-
425
- it('accumulates raw output buffer', async () => {
426
- orchestrator = new RelayPtyOrchestrator({
427
- name: 'TestAgent',
428
- command: 'claude',
429
- });
430
-
431
- await orchestrator.start();
432
- mockProcess.stdout!.emit('data', Buffer.from('Line 1\n'));
433
- mockProcess.stdout!.emit('data', Buffer.from('Line 2\n'));
434
-
435
- expect(orchestrator.getRawOutput()).toContain('Line 1');
436
- expect(orchestrator.getRawOutput()).toContain('Line 2');
437
- });
438
-
439
- it('parses relay commands from output', async () => {
440
- orchestrator = new RelayPtyOrchestrator({
441
- name: 'TestAgent',
442
- command: 'claude',
443
- });
444
-
445
- await orchestrator.start();
446
-
447
- // Access the client mock to verify sendMessage calls
448
- const client = (orchestrator as any).client;
449
-
450
- // Emit output containing a relay command
451
- mockProcess.stdout!.emit('data', Buffer.from('->relay:Bob Hello Bob!\n'));
452
-
453
- // Allow async parsing
454
- await new Promise(resolve => setTimeout(resolve, 10));
455
-
456
- expect(client.sendMessage).toHaveBeenCalled();
457
- });
458
- });
459
-
460
- describe('message injection', () => {
461
- it('processes queued messages when ready', async () => {
462
- orchestrator = new RelayPtyOrchestrator({
463
- name: 'TestAgent',
464
- command: 'claude',
465
- });
466
-
467
- await orchestrator.start();
468
-
469
- // Trigger message handler (normally done by RelayClient)
470
- const handler = (orchestrator as any).handleIncomingMessage.bind(orchestrator);
471
- handler('Sender', { body: 'Test message', kind: 'message' }, 'msg-123');
472
-
473
- // Allow async processing
474
- await new Promise(resolve => setTimeout(resolve, 100));
475
-
476
- // Verify socket write was called with inject request
477
- expect(mockSocket.write).toHaveBeenCalled();
478
- const writeCall = (mockSocket.write as ReturnType<typeof vi.fn>).mock.calls[0][0];
479
- expect(writeCall).toContain('"type":"inject"');
480
- expect(writeCall).toContain('msg-123');
481
- });
482
-
483
- it('handles inject_result responses', async () => {
484
- orchestrator = new RelayPtyOrchestrator({
485
- name: 'TestAgent',
486
- command: 'claude',
487
- });
488
-
489
- await orchestrator.start();
490
-
491
- // Trigger a message to inject
492
- const handler = (orchestrator as any).handleIncomingMessage.bind(orchestrator);
493
- handler('Sender', { body: 'Test message', kind: 'message' }, 'msg-456');
494
-
495
- await new Promise(resolve => setTimeout(resolve, 50));
496
-
497
- // Simulate output containing the injected message pattern
498
- // This is needed because handleInjectResult now verifies the message appeared in output
499
- mockProcess.stdout?.emit('data', Buffer.from(
500
- 'Relay message from Sender [msg-456]: Test message\n'
501
- ));
502
-
503
- await new Promise(resolve => setTimeout(resolve, 50));
504
-
505
- // Simulate successful delivery response
506
- mockSocket.emit('data', Buffer.from(JSON.stringify({
507
- type: 'inject_result',
508
- id: 'msg-456',
509
- status: 'delivered',
510
- timestamp: Date.now(),
511
- }) + '\n'));
512
-
513
- // Allow time for async verification (verifyInjection polls for up to 2 seconds)
514
- await new Promise(resolve => setTimeout(resolve, 200));
515
-
516
- // Check metrics
517
- const metrics = orchestrator.getInjectionMetrics();
518
- expect(metrics.total).toBeGreaterThan(0);
519
- expect(metrics.successFirstTry).toBeGreaterThan(0);
520
- });
521
-
522
- it('handles backpressure', async () => {
523
- orchestrator = new RelayPtyOrchestrator({
524
- name: 'TestAgent',
525
- command: 'claude',
526
- });
527
-
528
- const backpressureHandler = vi.fn();
529
- orchestrator.on('backpressure', backpressureHandler);
530
-
531
- await orchestrator.start();
532
-
533
- // Simulate backpressure response
534
- mockSocket.emit('data', Buffer.from(JSON.stringify({
535
- type: 'backpressure',
536
- queue_length: 50,
537
- accept: false,
538
- }) + '\n'));
539
-
540
- expect(backpressureHandler).toHaveBeenCalledWith({
541
- queueLength: 50,
542
- accept: false,
543
- });
544
- expect(orchestrator.isBackpressureActive()).toBe(true);
545
-
546
- // Clear backpressure
547
- mockSocket.emit('data', Buffer.from(JSON.stringify({
548
- type: 'backpressure',
549
- queue_length: 5,
550
- accept: true,
551
- }) + '\n'));
552
-
553
- expect(orchestrator.isBackpressureActive()).toBe(false);
554
- });
555
- });
556
-
557
- describe('lifecycle', () => {
558
- it('tracks running state', async () => {
559
- orchestrator = new RelayPtyOrchestrator({
560
- name: 'TestAgent',
561
- command: 'claude',
562
- });
563
-
564
- expect(orchestrator.isRunning).toBe(false);
565
-
566
- await orchestrator.start();
567
- expect(orchestrator.isRunning).toBe(true);
568
-
569
- await orchestrator.stop();
570
- expect(orchestrator.isRunning).toBe(false);
571
- });
572
-
573
- it('sends shutdown command on stop', async () => {
574
- orchestrator = new RelayPtyOrchestrator({
575
- name: 'TestAgent',
576
- command: 'claude',
577
- });
578
-
579
- await orchestrator.start();
580
- await orchestrator.stop();
581
-
582
- // Verify shutdown request was sent
583
- const writeCalls = (mockSocket.write as ReturnType<typeof vi.fn>).mock.calls;
584
- const shutdownCall = writeCalls.find((call: any[]) =>
585
- call[0].includes('"type":"shutdown"')
586
- );
587
- expect(shutdownCall).toBeDefined();
588
- });
589
-
590
- it('kills process on stop', async () => {
591
- orchestrator = new RelayPtyOrchestrator({
592
- name: 'TestAgent',
593
- command: 'claude',
594
- });
595
-
596
- await orchestrator.start();
597
-
598
- // Simulate process not exiting gracefully
599
- const stopPromise = orchestrator.stop();
600
-
601
- // Emit exit after kill
602
- setTimeout(() => mockProcess.emit('exit', 0, null), 100);
603
-
604
- await stopPromise;
605
-
606
- expect(mockProcess.kill).toHaveBeenCalled();
607
- });
608
-
609
- it('returns PID', async () => {
610
- orchestrator = new RelayPtyOrchestrator({
611
- name: 'TestAgent',
612
- command: 'claude',
613
- });
614
-
615
- await orchestrator.start();
616
-
617
- expect(orchestrator.pid).toBe(12345);
618
- });
619
- });
620
-
621
- describe('summary and session end detection', () => {
622
- it('emits summary event', async () => {
623
- orchestrator = new RelayPtyOrchestrator({
624
- name: 'TestAgent',
625
- command: 'claude',
626
- });
627
-
628
- const summaryHandler = vi.fn();
629
- orchestrator.on('summary', summaryHandler);
630
-
631
- await orchestrator.start();
632
-
633
- // Emit output with summary block
634
- mockProcess.stdout!.emit('data', Buffer.from(
635
- '[[SUMMARY]]{"currentTask": "Test task", "completedTasks": ["Task 1"]}[[/SUMMARY]]'
636
- ));
637
-
638
- await new Promise(resolve => setTimeout(resolve, 10));
639
-
640
- expect(summaryHandler).toHaveBeenCalled();
641
- expect(summaryHandler.mock.calls[0][0].agentName).toBe('TestAgent');
642
- });
643
-
644
- it('emits session-end event', async () => {
645
- orchestrator = new RelayPtyOrchestrator({
646
- name: 'TestAgent',
647
- command: 'claude',
648
- });
649
-
650
- const sessionEndHandler = vi.fn();
651
- orchestrator.on('session-end', sessionEndHandler);
652
-
653
- await orchestrator.start();
654
-
655
- // Emit output with session end
656
- mockProcess.stdout!.emit('data', Buffer.from(
657
- '[[SESSION_END]]Work complete.[[/SESSION_END]]'
658
- ));
659
-
660
- await new Promise(resolve => setTimeout(resolve, 10));
661
-
662
- expect(sessionEndHandler).toHaveBeenCalled();
663
- expect(sessionEndHandler.mock.calls[0][0].agentName).toBe('TestAgent');
664
- });
665
- });
666
-
667
- describe('spawn with auto-send task', () => {
668
- let fetchMock: ReturnType<typeof vi.fn>;
669
- let originalFetch: typeof globalThis.fetch;
670
-
671
- beforeEach(() => {
672
- originalFetch = globalThis.fetch;
673
- fetchMock = vi.fn();
674
- globalThis.fetch = fetchMock;
675
- });
676
-
677
- afterEach(() => {
678
- globalThis.fetch = originalFetch;
679
- });
680
-
681
- it('calls spawn API when dashboard port is configured', async () => {
682
- // Mock successful spawn API response
683
- fetchMock.mockResolvedValueOnce({
684
- ok: true,
685
- json: () => Promise.resolve({ success: true }),
686
- });
687
-
688
- orchestrator = new RelayPtyOrchestrator({
689
- name: 'LeadAgent',
690
- command: 'claude',
691
- dashboardPort: 3000,
692
- });
693
-
694
- await orchestrator.start();
695
-
696
- // Access the private method via prototype - simulate spawn command detection
697
- // We'll trigger it by emitting spawn command in output
698
- // Note: Use "DevWorker" instead of "Worker" since "worker" is a placeholder target
699
- mockProcess.stdout!.emit('data', Buffer.from(
700
- '->relay:spawn DevWorker claude "Implement feature X"\n'
701
- ));
702
-
703
- // Wait for async spawn processing
704
- await new Promise(resolve => setTimeout(resolve, 50));
705
-
706
- // Verify spawn API was called with task included
707
- // Note: The spawner (not orchestrator) sends the initial task after waitUntilCliReady()
708
- expect(fetchMock).toHaveBeenCalledWith(
709
- 'http://localhost:3000/api/spawn',
710
- expect.objectContaining({
711
- method: 'POST',
712
- headers: { 'Content-Type': 'application/json' },
713
- body: JSON.stringify({ name: 'DevWorker', cli: 'claude', task: 'Implement feature X' }),
714
- })
715
- );
716
- });
717
-
718
- it('calls onSpawn callback with task when no dashboard port', async () => {
719
- const onSpawnMock = vi.fn().mockResolvedValue(undefined);
720
-
721
- orchestrator = new RelayPtyOrchestrator({
722
- name: 'LeadAgent',
723
- command: 'claude',
724
- onSpawn: onSpawnMock,
725
- });
726
-
727
- await orchestrator.start();
728
-
729
- // Trigger spawn command
730
- // Note: Use "CodeDev" instead of "Developer" to avoid any potential placeholder filtering
731
- mockProcess.stdout!.emit('data', Buffer.from(
732
- '->relay:spawn CodeDev claude "Fix the bug"\n'
733
- ));
734
-
735
- // Wait for async spawn processing
736
- await new Promise(resolve => setTimeout(resolve, 50));
737
-
738
- // Verify onSpawn was called with task included
739
- // Note: The callback is responsible for sending the initial task
740
- expect(onSpawnMock).toHaveBeenCalledWith('CodeDev', 'claude', 'Fix the bug');
741
- });
742
-
743
- it('does not send task message when task is empty', async () => {
744
- const onSpawnMock = vi.fn().mockResolvedValue(undefined);
745
-
746
- orchestrator = new RelayPtyOrchestrator({
747
- name: 'LeadAgent',
748
- command: 'claude',
749
- onSpawn: onSpawnMock,
750
- });
751
-
752
- await orchestrator.start();
753
-
754
- // Clear any previous calls
755
- const { RelayClient } = await import('./client.js');
756
- const mockClientInstance = (RelayClient as any).mock.results[0].value;
757
- mockClientInstance.sendMessage.mockClear();
758
-
759
- // Trigger spawn command with empty task (using fenced format with whitespace only)
760
- // Note: Use "DevAgent" instead of "Worker" since "worker" is a placeholder target
761
- mockProcess.stdout!.emit('data', Buffer.from(
762
- '->relay:spawn DevAgent claude ""\n'
763
- ));
764
-
765
- // Wait for async spawn processing
766
- await new Promise(resolve => setTimeout(resolve, 50));
767
-
768
- // Verify no task message was sent (empty task)
769
- expect(mockClientInstance.sendMessage).not.toHaveBeenCalled();
770
- });
771
-
772
- it('deduplicates spawn commands (only spawns once)', async () => {
773
- const onSpawnMock = vi.fn().mockResolvedValue(undefined);
774
-
775
- orchestrator = new RelayPtyOrchestrator({
776
- name: 'LeadAgent',
777
- command: 'claude',
778
- onSpawn: onSpawnMock,
779
- });
780
-
781
- await orchestrator.start();
782
-
783
- // Trigger same spawn command twice
784
- // Note: Use "TaskAgent" instead of "Worker" since "worker" is a placeholder target
785
- mockProcess.stdout!.emit('data', Buffer.from(
786
- '->relay:spawn TaskAgent claude "Task A"\n'
787
- ));
788
- mockProcess.stdout!.emit('data', Buffer.from(
789
- '->relay:spawn TaskAgent claude "Task A"\n'
790
- ));
791
-
792
- // Wait for async spawn processing
793
- await new Promise(resolve => setTimeout(resolve, 50));
794
-
795
- // onSpawn should only be called once (deduplication)
796
- expect(onSpawnMock).toHaveBeenCalledTimes(1);
797
- });
798
- });
799
-
800
- describe('continuity command handling', () => {
801
- let mockContinuityManager: {
802
- handleCommand: ReturnType<typeof vi.fn>;
803
- getOrCreateLedger: ReturnType<typeof vi.fn>;
804
- findLedgerByAgentId: ReturnType<typeof vi.fn>;
805
- };
806
-
807
- beforeEach(async () => {
808
- // Create a mock continuity manager
809
- mockContinuityManager = {
810
- handleCommand: vi.fn().mockResolvedValue(null),
811
- getOrCreateLedger: vi.fn().mockResolvedValue({ agentName: 'TestAgent', agentId: 'test-123' }),
812
- findLedgerByAgentId: vi.fn().mockResolvedValue(null),
813
- };
814
-
815
- // Update the mock to return our manager
816
- const { getContinuityManager } = await import('@agent-relay/continuity');
817
- (getContinuityManager as any).mockReturnValue(mockContinuityManager);
818
- });
819
-
820
- it('handles continuity save command from stderr', async () => {
821
- orchestrator = new RelayPtyOrchestrator({
822
- name: 'TestAgent',
823
- command: 'claude',
824
- });
825
-
826
- await orchestrator.start();
827
-
828
- // Simulate continuity JSON output from relay-pty stderr
829
- const continuityJson = JSON.stringify({
830
- type: 'continuity',
831
- action: 'save',
832
- content: 'Current task: Testing continuity\nCompleted: Setup'
833
- });
834
-
835
- mockProcess.stderr!.emit('data', Buffer.from(continuityJson + '\n'));
836
-
837
- // Wait for async processing
838
- await new Promise(resolve => setTimeout(resolve, 50));
839
-
840
- // Verify handleCommand was called with the mapped command
841
- expect(mockContinuityManager.handleCommand).toHaveBeenCalledWith(
842
- 'TestAgent',
843
- expect.objectContaining({
844
- type: 'save',
845
- content: 'Current task: Testing continuity\nCompleted: Setup'
846
- })
847
- );
848
- });
849
-
850
- it('handles continuity load command from stderr', async () => {
851
- // Mock handleCommand to return a response for load
852
- mockContinuityManager.handleCommand.mockResolvedValue('Previous context loaded');
853
-
854
- orchestrator = new RelayPtyOrchestrator({
855
- name: 'TestAgent',
856
- command: 'claude',
857
- });
858
-
859
- await orchestrator.start();
860
-
861
- // Simulate continuity load command
862
- const continuityJson = JSON.stringify({
863
- type: 'continuity',
864
- action: 'load',
865
- content: ''
866
- });
867
-
868
- mockProcess.stderr!.emit('data', Buffer.from(continuityJson + '\n'));
869
-
870
- // Wait for async processing
871
- await new Promise(resolve => setTimeout(resolve, 50));
872
-
873
- // Verify handleCommand was called
874
- expect(mockContinuityManager.handleCommand).toHaveBeenCalledWith(
875
- 'TestAgent',
876
- expect.objectContaining({
877
- type: 'load'
878
- })
879
- );
880
-
881
- // Verify response was queued for injection
882
- const queue = (orchestrator as any).messageQueue;
883
- expect(queue.length).toBeGreaterThan(0);
884
- expect(queue.some((m: any) => m.body === 'Previous context loaded')).toBe(true);
885
- });
886
-
887
- it('handles continuity uncertain command from stderr', async () => {
888
- orchestrator = new RelayPtyOrchestrator({
889
- name: 'TestAgent',
890
- command: 'claude',
891
- });
892
-
893
- await orchestrator.start();
894
-
895
- // Simulate continuity uncertain command
896
- const continuityJson = JSON.stringify({
897
- type: 'continuity',
898
- action: 'uncertain',
899
- content: 'API rate limit handling unclear'
900
- });
901
-
902
- mockProcess.stderr!.emit('data', Buffer.from(continuityJson + '\n'));
903
-
904
- // Wait for async processing
905
- await new Promise(resolve => setTimeout(resolve, 50));
906
-
907
- // Verify handleCommand was called with item field for uncertain
908
- expect(mockContinuityManager.handleCommand).toHaveBeenCalledWith(
909
- 'TestAgent',
910
- expect.objectContaining({
911
- type: 'uncertain',
912
- item: 'API rate limit handling unclear'
913
- })
914
- );
915
- });
916
-
917
- it('deduplicates continuity save commands', async () => {
918
- orchestrator = new RelayPtyOrchestrator({
919
- name: 'TestAgent',
920
- command: 'claude',
921
- });
922
-
923
- await orchestrator.start();
924
-
925
- const continuityJson = JSON.stringify({
926
- type: 'continuity',
927
- action: 'save',
928
- content: 'Same content twice'
929
- });
930
-
931
- // Send same command twice
932
- mockProcess.stderr!.emit('data', Buffer.from(continuityJson + '\n'));
933
- mockProcess.stderr!.emit('data', Buffer.from(continuityJson + '\n'));
934
-
935
- // Wait for async processing
936
- await new Promise(resolve => setTimeout(resolve, 50));
937
-
938
- // Should only be called once due to deduplication
939
- expect(mockContinuityManager.handleCommand).toHaveBeenCalledTimes(1);
940
- });
941
-
942
- it('ignores unknown continuity actions', async () => {
943
- orchestrator = new RelayPtyOrchestrator({
944
- name: 'TestAgent',
945
- command: 'claude',
946
- });
947
-
948
- await orchestrator.start();
949
-
950
- const continuityJson = JSON.stringify({
951
- type: 'continuity',
952
- action: 'unknown_action',
953
- content: 'Some content'
954
- });
955
-
956
- mockProcess.stderr!.emit('data', Buffer.from(continuityJson + '\n'));
957
-
958
- // Wait for async processing
959
- await new Promise(resolve => setTimeout(resolve, 50));
960
-
961
- // Should not call handleCommand for unknown action
962
- expect(mockContinuityManager.handleCommand).not.toHaveBeenCalled();
963
- });
964
- });
965
-
966
- describe('queue monitor', () => {
967
- it('starts queue monitor on start()', async () => {
968
- orchestrator = new RelayPtyOrchestrator({
969
- name: 'TestAgent',
970
- command: 'claude',
971
- });
972
-
973
- // Spy on setInterval
974
- const setIntervalSpy = vi.spyOn(global, 'setInterval');
975
-
976
- await orchestrator.start();
977
-
978
- // Queue monitor should be started (30 second interval)
979
- expect(setIntervalSpy).toHaveBeenCalledWith(expect.any(Function), 30000);
980
-
981
- setIntervalSpy.mockRestore();
982
- });
983
-
984
- it('stops queue monitor on stop()', async () => {
985
- orchestrator = new RelayPtyOrchestrator({
986
- name: 'TestAgent',
987
- command: 'claude',
988
- });
989
-
990
- const clearIntervalSpy = vi.spyOn(global, 'clearInterval');
991
-
992
- await orchestrator.start();
993
- await orchestrator.stop();
994
-
995
- // Queue monitor should be cleared
996
- expect(clearIntervalSpy).toHaveBeenCalled();
997
-
998
- clearIntervalSpy.mockRestore();
999
- });
1000
-
1001
- it('triggers processMessageQueue when queue has stuck messages and agent is idle', async () => {
1002
- orchestrator = new RelayPtyOrchestrator({
1003
- name: 'TestAgent',
1004
- command: 'claude',
1005
- });
1006
-
1007
- await orchestrator.start();
1008
-
1009
- // Directly add a message to the queue (simulating a message that got stuck)
1010
- (orchestrator as any).messageQueue.push({
1011
- from: 'Alice',
1012
- body: 'Test message',
1013
- messageId: 'msg-123',
1014
- kind: 'message',
1015
- });
1016
-
1017
- // Verify message is in queue
1018
- expect(orchestrator.pendingMessageCount).toBe(1);
1019
-
1020
- // Spy on processMessageQueue to verify it gets called
1021
- const processQueueSpy = vi.spyOn(orchestrator as any, 'processMessageQueue');
1022
-
1023
- // Simulate time passing (agent becomes idle - need 2000ms silence for checkForStuckQueue)
1024
- // Mock the idle detector to report idle
1025
- const idleDetector = (orchestrator as any).idleDetector;
1026
- vi.spyOn(idleDetector, 'checkIdle').mockReturnValue({
1027
- isIdle: true,
1028
- confidence: 0.9,
1029
- signals: [{ source: 'output_silence', confidence: 0.9, timestamp: Date.now() }],
1030
- });
1031
-
1032
- // Manually trigger the queue check (simulating timer firing)
1033
- (orchestrator as any).checkForStuckQueue();
1034
-
1035
- // processMessageQueue should have been called
1036
- expect(processQueueSpy).toHaveBeenCalled();
1037
-
1038
- processQueueSpy.mockRestore();
1039
- });
1040
-
1041
- it('does not trigger processing when agent is busy', async () => {
1042
- orchestrator = new RelayPtyOrchestrator({
1043
- name: 'TestAgent',
1044
- command: 'claude',
1045
- });
1046
-
1047
- await orchestrator.start();
1048
-
1049
- // Set isInjecting to true (agent is busy)
1050
- // Also set injectionStartTime to a recent time to avoid stuck injection recovery
1051
- (orchestrator as any).isInjecting = true;
1052
- (orchestrator as any).injectionStartTime = Date.now();
1053
-
1054
- // Add a message to the queue directly
1055
- (orchestrator as any).messageQueue.push({
1056
- from: 'Bob',
1057
- body: 'Test message 2',
1058
- messageId: 'msg-456',
1059
- kind: 'message',
1060
- });
1061
-
1062
- // Mock idle detector to report idle (to isolate the isInjecting check)
1063
- const idleDetector = (orchestrator as any).idleDetector;
1064
- vi.spyOn(idleDetector, 'checkIdle').mockReturnValue({
1065
- isIdle: true,
1066
- confidence: 0.9,
1067
- signals: [],
1068
- });
1069
-
1070
- // Spy on processMessageQueue
1071
- const processQueueSpy = vi.spyOn(orchestrator as any, 'processMessageQueue');
1072
-
1073
- // Trigger queue check while busy
1074
- (orchestrator as any).checkForStuckQueue();
1075
-
1076
- // processMessageQueue should NOT be called because isInjecting=true
1077
- expect(processQueueSpy).not.toHaveBeenCalled();
1078
-
1079
- // Reset
1080
- (orchestrator as any).isInjecting = false;
1081
- (orchestrator as any).injectionStartTime = 0;
1082
- processQueueSpy.mockRestore();
1083
- });
1084
-
1085
- it('does not trigger processing when backpressure is active', async () => {
1086
- orchestrator = new RelayPtyOrchestrator({
1087
- name: 'TestAgent',
1088
- command: 'claude',
1089
- });
1090
-
1091
- await orchestrator.start();
1092
-
1093
- // Simulate backpressure
1094
- mockSocket.emit('data', Buffer.from(JSON.stringify({
1095
- type: 'backpressure',
1096
- accept: false,
1097
- queue_length: 50,
1098
- }) + '\n'));
1099
-
1100
- expect(orchestrator.isBackpressureActive()).toBe(true);
1101
-
1102
- // Add a message to the queue
1103
- (orchestrator as any).messageQueue.push({
1104
- from: 'Carol',
1105
- body: 'Test message 3',
1106
- messageId: 'msg-789',
1107
- kind: 'message',
1108
- });
1109
-
1110
- // Mock idle detector to report idle (to isolate the backpressure check)
1111
- const idleDetector = (orchestrator as any).idleDetector;
1112
- vi.spyOn(idleDetector, 'checkIdle').mockReturnValue({
1113
- isIdle: true,
1114
- confidence: 0.9,
1115
- signals: [],
1116
- });
1117
-
1118
- // Spy on processMessageQueue
1119
- const processQueueSpy = vi.spyOn(orchestrator as any, 'processMessageQueue');
1120
-
1121
- // Trigger queue check with backpressure active
1122
- (orchestrator as any).checkForStuckQueue();
1123
-
1124
- // processMessageQueue should NOT be called because backpressure is active
1125
- expect(processQueueSpy).not.toHaveBeenCalled();
1126
-
1127
- processQueueSpy.mockRestore();
1128
- });
1129
-
1130
- it('does not trigger processing when queue is empty', async () => {
1131
- orchestrator = new RelayPtyOrchestrator({
1132
- name: 'TestAgent',
1133
- command: 'claude',
1134
- });
1135
-
1136
- await orchestrator.start();
1137
-
1138
- // Queue should be empty
1139
- expect(orchestrator.pendingMessageCount).toBe(0);
1140
-
1141
- // Spy on processMessageQueue
1142
- const processQueueSpy = vi.spyOn(orchestrator as any, 'processMessageQueue');
1143
-
1144
- // Trigger queue check with empty queue
1145
- (orchestrator as any).checkForStuckQueue();
1146
-
1147
- // processMessageQueue should not be called
1148
- expect(processQueueSpy).not.toHaveBeenCalled();
1149
-
1150
- processQueueSpy.mockRestore();
1151
- });
1152
-
1153
- it('does not trigger processing when agent is not idle', async () => {
1154
- orchestrator = new RelayPtyOrchestrator({
1155
- name: 'TestAgent',
1156
- command: 'claude',
1157
- });
1158
-
1159
- await orchestrator.start();
1160
-
1161
- // Add a message to the queue
1162
- (orchestrator as any).messageQueue.push({
1163
- from: 'Dave',
1164
- body: 'Test message 4',
1165
- messageId: 'msg-999',
1166
- kind: 'message',
1167
- });
1168
-
1169
- // Mock idle detector to report NOT idle (agent is still working)
1170
- const idleDetector = (orchestrator as any).idleDetector;
1171
- vi.spyOn(idleDetector, 'checkIdle').mockReturnValue({
1172
- isIdle: false,
1173
- confidence: 0.3,
1174
- signals: [],
1175
- });
1176
-
1177
- // Spy on processMessageQueue
1178
- const processQueueSpy = vi.spyOn(orchestrator as any, 'processMessageQueue');
1179
-
1180
- // Trigger queue check while agent is active
1181
- (orchestrator as any).checkForStuckQueue();
1182
-
1183
- // processMessageQueue should NOT be called because agent is not idle
1184
- expect(processQueueSpy).not.toHaveBeenCalled();
1185
-
1186
- processQueueSpy.mockRestore();
1187
- });
1188
- });
1189
-
1190
- describe('output buffer management', () => {
1191
- it('trims rawBuffer when it exceeds MAX_OUTPUT_BUFFER_SIZE', async () => {
1192
- orchestrator = new RelayPtyOrchestrator({
1193
- name: 'TestAgent',
1194
- command: 'claude',
1195
- });
1196
-
1197
- await orchestrator.start();
1198
-
1199
- // Access private MAX_OUTPUT_BUFFER_SIZE constant (10MB)
1200
- const MAX_SIZE = 10 * 1024 * 1024;
1201
-
1202
- // Generate data larger than the max size
1203
- const chunkSize = 1024 * 1024; // 1MB chunks
1204
- const numChunks = 12; // 12MB total (exceeds 10MB limit)
1205
-
1206
- for (let i = 0; i < numChunks; i++) {
1207
- const chunk = `chunk-${i}-${'x'.repeat(chunkSize - 10)}\n`;
1208
- mockProcess.stdout!.emit('data', Buffer.from(chunk));
1209
- }
1210
-
1211
- // Buffer should be trimmed to MAX_SIZE
1212
- const rawOutput = orchestrator.getRawOutput();
1213
- expect(rawOutput.length).toBeLessThanOrEqual(MAX_SIZE);
1214
-
1215
- // Should contain the most recent chunks (tail of buffer)
1216
- expect(rawOutput).toContain('chunk-11'); // Last chunk
1217
- expect(rawOutput).not.toContain('chunk-0'); // First chunk should be trimmed
1218
- });
1219
-
1220
- it('adjusts lastParsedLength when buffer is trimmed', async () => {
1221
- orchestrator = new RelayPtyOrchestrator({
1222
- name: 'TestAgent',
1223
- command: 'claude',
1224
- });
1225
-
1226
- await orchestrator.start();
1227
-
1228
- // Access lastParsedLength via reflection
1229
- const getLastParsedLength = () => (orchestrator as any).lastParsedLength;
1230
-
1231
- // Emit some initial output to set lastParsedLength
1232
- const initialData = 'Initial output that sets parse position\n';
1233
- mockProcess.stdout!.emit('data', Buffer.from(initialData));
1234
-
1235
- // Allow parsing to run
1236
- await new Promise(resolve => setTimeout(resolve, 10));
1237
-
1238
- const initialParsedLength = getLastParsedLength();
1239
- expect(initialParsedLength).toBeGreaterThan(0);
1240
-
1241
- // Now emit a lot of data to trigger buffer trimming
1242
- const MAX_SIZE = 10 * 1024 * 1024;
1243
- const largeData = 'x'.repeat(MAX_SIZE + 1000);
1244
- mockProcess.stdout!.emit('data', Buffer.from(largeData));
1245
-
1246
- // lastParsedLength should be adjusted to stay in sync
1247
- const adjustedParsedLength = getLastParsedLength();
1248
-
1249
- // After trimming, lastParsedLength should be reduced by the trim amount
1250
- // or set to 0 if the trim amount exceeds the previous value
1251
- expect(adjustedParsedLength).toBeLessThanOrEqual(MAX_SIZE);
1252
- });
1253
-
1254
- it('still detects relay commands after buffer trimming', async () => {
1255
- orchestrator = new RelayPtyOrchestrator({
1256
- name: 'TestAgent',
1257
- command: 'claude',
1258
- });
1259
-
1260
- await orchestrator.start();
1261
-
1262
- // Access the client mock
1263
- const client = (orchestrator as any).client;
1264
- client.sendMessage.mockClear();
1265
-
1266
- // Emit a lot of data to fill the buffer
1267
- const MAX_SIZE = 10 * 1024 * 1024;
1268
- const filler = 'x'.repeat(MAX_SIZE + 1000);
1269
- mockProcess.stdout!.emit('data', Buffer.from(filler));
1270
-
1271
- // Now emit a relay command after the buffer was trimmed
1272
- mockProcess.stdout!.emit('data', Buffer.from('\n->relay:Bob Post-trim message\n'));
1273
-
1274
- // Allow parsing
1275
- await new Promise(resolve => setTimeout(resolve, 50));
1276
-
1277
- // The relay command should still be detected
1278
- expect(client.sendMessage).toHaveBeenCalled();
1279
- });
1280
-
1281
- it('still detects summary blocks after buffer trimming', async () => {
1282
- orchestrator = new RelayPtyOrchestrator({
1283
- name: 'TestAgent',
1284
- command: 'claude',
1285
- });
1286
-
1287
- const summaryHandler = vi.fn();
1288
- orchestrator.on('summary', summaryHandler);
1289
-
1290
- await orchestrator.start();
1291
-
1292
- // Emit a lot of data to trigger trimming
1293
- const MAX_SIZE = 10 * 1024 * 1024;
1294
- const filler = 'x'.repeat(MAX_SIZE + 1000);
1295
- mockProcess.stdout!.emit('data', Buffer.from(filler));
1296
-
1297
- // Now emit a summary block
1298
- mockProcess.stdout!.emit('data', Buffer.from(
1299
- '\n[[SUMMARY]]{"currentTask": "Post-trim task"}[[/SUMMARY]]\n'
1300
- ));
1301
-
1302
- await new Promise(resolve => setTimeout(resolve, 50));
1303
-
1304
- // Summary should still be detected
1305
- expect(summaryHandler).toHaveBeenCalled();
1306
- });
1307
-
1308
- it('does not lose data during buffer trimming', async () => {
1309
- orchestrator = new RelayPtyOrchestrator({
1310
- name: 'TestAgent',
1311
- command: 'claude',
1312
- });
1313
-
1314
- await orchestrator.start();
1315
-
1316
- // Emit data in chunks, each with a unique marker
1317
- const markers: string[] = [];
1318
- for (let i = 0; i < 20; i++) {
1319
- const marker = `MARKER_${i}_${Date.now()}`;
1320
- markers.push(marker);
1321
- // Each chunk is 1MB
1322
- const chunk = marker + '_' + 'x'.repeat(1024 * 1024 - marker.length - 2) + '\n';
1323
- mockProcess.stdout!.emit('data', Buffer.from(chunk));
1324
- }
1325
-
1326
- const rawOutput = orchestrator.getRawOutput();
1327
-
1328
- // The most recent markers should be present (within the 10MB limit)
1329
- // Approximately the last 10 markers should be there
1330
- const recentMarkers = markers.slice(-10);
1331
- for (const marker of recentMarkers) {
1332
- expect(rawOutput).toContain(marker);
1333
- }
1334
-
1335
- // The oldest markers should be trimmed
1336
- const oldMarkers = markers.slice(0, 5);
1337
- for (const marker of oldMarkers) {
1338
- expect(rawOutput).not.toContain(marker);
1339
- }
1340
- });
1341
-
1342
- it('handles rapid output without memory exhaustion', async () => {
1343
- orchestrator = new RelayPtyOrchestrator({
1344
- name: 'TestAgent',
1345
- command: 'claude',
1346
- });
1347
-
1348
- await orchestrator.start();
1349
-
1350
- // Simulate rapid output (like a build log or test output)
1351
- const iterations = 100;
1352
- const chunkSize = 100 * 1024; // 100KB chunks
1353
-
1354
- for (let i = 0; i < iterations; i++) {
1355
- const chunk = `iteration-${i}: ${'log'.repeat(chunkSize / 3)}\n`;
1356
- mockProcess.stdout!.emit('data', Buffer.from(chunk));
1357
- }
1358
-
1359
- // Should not throw RangeError
1360
- const rawOutput = orchestrator.getRawOutput();
1361
- const MAX_SIZE = 10 * 1024 * 1024;
1362
- expect(rawOutput.length).toBeLessThanOrEqual(MAX_SIZE);
1363
- });
1364
- });
1365
- });
1366
-
1367
- describe('RelayPtyOrchestrator integration', () => {
1368
- // Integration tests would require the actual relay-pty binary
1369
- // These are placeholder tests that would be run with:
1370
- // npm test -- --testNamePattern="integration" --runInBand
1371
-
1372
- it.skip('spawns real relay-pty with echo', async () => {
1373
- // This test requires the relay-pty binary to be built
1374
- const orchestrator = new RelayPtyOrchestrator({
1375
- name: 'IntegrationTest',
1376
- command: 'cat', // Simple command that echoes input
1377
- });
1378
-
1379
- await orchestrator.start();
1380
-
1381
- // Inject a message
1382
- // ... verify it appears in output
1383
-
1384
- await orchestrator.stop();
1385
- });
1386
- });