agent-relay 2.3.14 → 2.3.16

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 (1420) 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 +50319 -63390
  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/dist/__tests__/contract-fixtures.test.d.ts +2 -0
  240. package/packages/sdk/dist/__tests__/contract-fixtures.test.d.ts.map +1 -0
  241. package/packages/sdk/dist/__tests__/contract-fixtures.test.js +85 -0
  242. package/packages/sdk/dist/__tests__/contract-fixtures.test.js.map +1 -0
  243. package/packages/sdk/dist/__tests__/facade.test.js +305 -0
  244. package/packages/sdk/dist/__tests__/facade.test.js.map +1 -0
  245. package/packages/sdk/dist/__tests__/integration.test.js +169 -0
  246. package/packages/sdk/dist/__tests__/integration.test.js.map +1 -0
  247. package/packages/sdk/dist/__tests__/pty.test.d.ts +2 -0
  248. package/packages/sdk/dist/__tests__/pty.test.d.ts.map +1 -0
  249. package/packages/sdk/dist/__tests__/pty.test.js +20 -0
  250. package/packages/sdk/dist/__tests__/pty.test.js.map +1 -0
  251. package/packages/sdk/dist/__tests__/quickstart.test.js +176 -0
  252. package/packages/sdk/dist/__tests__/quickstart.test.js.map +1 -0
  253. package/packages/sdk/dist/__tests__/spawn-from-env.test.d.ts +2 -0
  254. package/packages/sdk/dist/__tests__/spawn-from-env.test.d.ts.map +1 -0
  255. package/packages/sdk/dist/__tests__/spawn-from-env.test.js +206 -0
  256. package/packages/sdk/dist/__tests__/spawn-from-env.test.js.map +1 -0
  257. package/packages/sdk/dist/__tests__/unit.test.js +347 -0
  258. package/packages/sdk/dist/__tests__/unit.test.js.map +1 -0
  259. package/packages/sdk/dist/client.d.ts +140 -526
  260. package/packages/sdk/dist/client.d.ts.map +1 -1
  261. package/packages/sdk/dist/client.js +430 -1509
  262. package/packages/sdk/dist/client.js.map +1 -1
  263. package/packages/sdk/dist/examples/workflow-superiority.d.ts +32 -0
  264. package/packages/sdk/dist/examples/workflow-superiority.d.ts.map +1 -0
  265. package/packages/sdk/dist/examples/workflow-superiority.js +1421 -0
  266. package/packages/sdk/dist/examples/workflow-superiority.js.map +1 -0
  267. package/packages/sdk/dist/index.d.ts +13 -20
  268. package/packages/sdk/dist/index.d.ts.map +1 -1
  269. package/packages/sdk/dist/index.js +12 -26
  270. package/packages/sdk/dist/index.js.map +1 -1
  271. package/packages/sdk/dist/logs.d.ts +70 -25
  272. package/packages/sdk/dist/logs.d.ts.map +1 -1
  273. package/packages/sdk/dist/logs.js +238 -42
  274. package/packages/sdk/dist/logs.js.map +1 -1
  275. package/packages/sdk/dist/models.d.ts +9 -0
  276. package/packages/sdk/dist/models.d.ts.map +1 -0
  277. package/packages/sdk/dist/models.js +17 -0
  278. package/packages/sdk/dist/models.js.map +1 -0
  279. package/packages/sdk/dist/protocol.d.ts +366 -0
  280. package/packages/sdk/dist/protocol.d.ts.map +1 -0
  281. package/packages/sdk/dist/pty.d.ts.map +1 -0
  282. package/packages/sdk/dist/pty.js +26 -0
  283. package/packages/sdk/dist/pty.js.map +1 -0
  284. package/packages/sdk/dist/relay-adapter.d.ts +139 -0
  285. package/packages/sdk/dist/relay-adapter.d.ts.map +1 -0
  286. package/packages/sdk/dist/relay-adapter.js +210 -0
  287. package/packages/sdk/dist/relay-adapter.js.map +1 -0
  288. package/packages/sdk/dist/relay.d.ts +304 -0
  289. package/packages/sdk/dist/relay.d.ts.map +1 -0
  290. package/packages/sdk/dist/relay.js +910 -0
  291. package/packages/sdk/dist/relay.js.map +1 -0
  292. package/packages/sdk/dist/shadow.d.ts +101 -0
  293. package/packages/sdk/dist/shadow.d.ts.map +1 -0
  294. package/packages/sdk/dist/shadow.js.map +1 -0
  295. package/packages/sdk/dist/spawn-from-env.d.ts +77 -0
  296. package/packages/sdk/dist/spawn-from-env.d.ts.map +1 -0
  297. package/packages/sdk/dist/spawn-from-env.js +172 -0
  298. package/packages/sdk/dist/spawn-from-env.js.map +1 -0
  299. package/packages/sdk/dist/workflows/builder.d.ts +114 -0
  300. package/packages/sdk/dist/workflows/builder.d.ts.map +1 -0
  301. package/packages/sdk/dist/workflows/builder.js +201 -0
  302. package/packages/sdk/dist/workflows/builder.js.map +1 -0
  303. package/packages/sdk/dist/workflows/cli.d.ts +11 -0
  304. package/packages/sdk/dist/workflows/cli.d.ts.map +1 -0
  305. package/packages/sdk/dist/workflows/cli.js +144 -0
  306. package/packages/sdk/dist/workflows/cli.js.map +1 -0
  307. package/packages/sdk/dist/workflows/coordinator.d.ts +73 -0
  308. package/packages/sdk/dist/workflows/coordinator.d.ts.map +1 -0
  309. package/packages/sdk/dist/workflows/coordinator.js +647 -0
  310. package/packages/sdk/dist/workflows/coordinator.js.map +1 -0
  311. package/packages/sdk/dist/workflows/custom-steps.d.ts +73 -0
  312. package/packages/sdk/dist/workflows/custom-steps.d.ts.map +1 -0
  313. package/packages/sdk/dist/workflows/custom-steps.js +321 -0
  314. package/packages/sdk/dist/workflows/custom-steps.js.map +1 -0
  315. package/packages/sdk/dist/workflows/dry-run-format.d.ts +6 -0
  316. package/packages/sdk/dist/workflows/dry-run-format.d.ts.map +1 -0
  317. package/packages/sdk/dist/workflows/dry-run-format.js +68 -0
  318. package/packages/sdk/dist/workflows/dry-run-format.js.map +1 -0
  319. package/packages/sdk/dist/workflows/file-db.d.ts +33 -0
  320. package/packages/sdk/dist/workflows/file-db.d.ts.map +1 -0
  321. package/packages/sdk/dist/workflows/file-db.js +108 -0
  322. package/packages/sdk/dist/workflows/file-db.js.map +1 -0
  323. package/packages/sdk/dist/workflows/index.d.ts +15 -0
  324. package/packages/sdk/dist/workflows/index.d.ts.map +1 -0
  325. package/packages/sdk/dist/workflows/index.js +15 -0
  326. package/packages/sdk/dist/workflows/index.js.map +1 -0
  327. package/packages/sdk/dist/workflows/run.d.ts +38 -0
  328. package/packages/sdk/dist/workflows/run.d.ts.map +1 -0
  329. package/packages/sdk/dist/workflows/run.js +25 -0
  330. package/packages/sdk/dist/workflows/run.js.map +1 -0
  331. package/packages/sdk/dist/workflows/runner.d.ts +320 -0
  332. package/packages/sdk/dist/workflows/runner.d.ts.map +1 -0
  333. package/packages/sdk/dist/workflows/runner.js +2821 -0
  334. package/packages/sdk/dist/workflows/runner.js.map +1 -0
  335. package/packages/sdk/dist/workflows/templates.d.ts +47 -0
  336. package/packages/sdk/dist/workflows/templates.d.ts.map +1 -0
  337. package/packages/sdk/dist/workflows/templates.js +405 -0
  338. package/packages/sdk/dist/workflows/templates.js.map +1 -0
  339. package/packages/sdk/dist/workflows/trajectory.d.ts +87 -0
  340. package/packages/sdk/dist/workflows/trajectory.d.ts.map +1 -0
  341. package/packages/sdk/dist/workflows/trajectory.js +441 -0
  342. package/packages/sdk/dist/workflows/trajectory.js.map +1 -0
  343. package/packages/sdk/dist/workflows/types.d.ts +306 -0
  344. package/packages/sdk/dist/workflows/types.d.ts.map +1 -0
  345. package/packages/sdk/dist/workflows/types.js +23 -0
  346. package/packages/sdk/dist/workflows/types.js.map +1 -0
  347. package/packages/sdk/dist/workflows/validator.d.ts +11 -0
  348. package/packages/sdk/dist/workflows/validator.d.ts.map +1 -0
  349. package/packages/sdk/dist/workflows/validator.js +128 -0
  350. package/packages/sdk/dist/workflows/validator.js.map +1 -0
  351. package/packages/sdk/package.json +59 -53
  352. package/packages/sdk/scripts/bundle-agent-relay.mjs +53 -0
  353. package/packages/sdk/src/__tests__/contract-fixtures.test.ts +122 -0
  354. package/packages/sdk/src/__tests__/error-scenarios.test.ts +682 -0
  355. package/packages/sdk/src/__tests__/facade.test.ts +364 -0
  356. package/packages/sdk/src/__tests__/idle-nudge.test.ts +438 -0
  357. package/packages/sdk/src/__tests__/integration.test.ts +204 -0
  358. package/packages/sdk/src/__tests__/orchestration-upgrades.test.ts +797 -0
  359. package/packages/sdk/src/__tests__/pty.test.ts +24 -0
  360. package/packages/sdk/src/__tests__/quickstart.test.ts +198 -0
  361. package/packages/sdk/src/__tests__/spawn-from-env.test.ts +282 -0
  362. package/packages/sdk/src/__tests__/swarm-coordinator.test.ts +909 -0
  363. package/packages/sdk/src/__tests__/unit.test.ts +435 -0
  364. package/packages/sdk/src/__tests__/workflow-runner.test.ts +489 -0
  365. package/packages/sdk/src/__tests__/yaml-validation.test.ts +890 -0
  366. package/packages/sdk/src/client.ts +527 -1911
  367. package/packages/sdk/src/examples/workflow-superiority.ts +1485 -0
  368. package/packages/sdk/src/examples/workflows/README.md +156 -0
  369. package/packages/sdk/src/examples/workflows/ralph-overnight.yaml +421 -0
  370. package/packages/sdk/src/examples/workflows/ralph-swarm.yaml +411 -0
  371. package/packages/sdk/src/examples/workflows/ralph-tdd.yaml +259 -0
  372. package/packages/sdk/src/index.ts +13 -116
  373. package/packages/sdk/src/logs.ts +282 -54
  374. package/packages/sdk/src/models.ts +36 -0
  375. package/packages/sdk/src/protocol.ts +385 -0
  376. package/packages/sdk/src/pty.ts +35 -0
  377. package/packages/sdk/src/relay-adapter.ts +316 -0
  378. package/packages/sdk/src/relay.ts +1147 -0
  379. package/packages/sdk/src/shadow.ts +228 -0
  380. package/packages/sdk/src/spawn-from-env.ts +245 -0
  381. package/packages/sdk/src/workflows/README.md +656 -0
  382. package/packages/sdk/src/workflows/builder.ts +278 -0
  383. package/packages/sdk/src/workflows/builtin-templates/bug-fix.yaml +135 -0
  384. package/packages/sdk/src/workflows/builtin-templates/code-review.yaml +133 -0
  385. package/packages/sdk/src/workflows/builtin-templates/competitive.yaml +103 -0
  386. package/packages/sdk/src/workflows/builtin-templates/documentation.yaml +120 -0
  387. package/packages/sdk/src/workflows/builtin-templates/feature-dev.yaml +142 -0
  388. package/packages/sdk/src/workflows/builtin-templates/refactor.yaml +141 -0
  389. package/packages/sdk/src/workflows/builtin-templates/review-loop.yaml +223 -0
  390. package/packages/sdk/src/workflows/builtin-templates/security-audit.yaml +129 -0
  391. package/packages/sdk/src/workflows/cli.ts +162 -0
  392. package/packages/sdk/src/workflows/coordinator.ts +842 -0
  393. package/packages/sdk/src/workflows/custom-steps.ts +450 -0
  394. package/packages/sdk/src/workflows/dry-run-format.ts +75 -0
  395. package/packages/sdk/src/workflows/file-db.ts +117 -0
  396. package/packages/sdk/src/workflows/index.ts +24 -0
  397. package/packages/sdk/src/workflows/run.ts +72 -0
  398. package/packages/sdk/src/workflows/runner.ts +3409 -0
  399. package/packages/sdk/src/workflows/schema.json +651 -0
  400. package/packages/sdk/src/workflows/templates.ts +552 -0
  401. package/packages/sdk/src/workflows/trajectory.ts +631 -0
  402. package/packages/sdk/src/workflows/types.ts +389 -0
  403. package/packages/sdk/src/workflows/validator.ts +151 -0
  404. package/packages/sdk/tsconfig.build.json +25 -0
  405. package/packages/sdk/tsconfig.json +17 -18
  406. package/packages/sdk/vitest.config.ts +1 -1
  407. package/packages/sdk-py/README.md +106 -21
  408. package/packages/sdk-py/agent_relay/__init__.py +21 -0
  409. package/packages/sdk-py/agent_relay/models.py +206 -0
  410. package/packages/sdk-py/pyproject.toml +2 -2
  411. package/packages/sdk-py/src/agent_relay/__init__.py +76 -0
  412. package/packages/sdk-py/src/agent_relay/builder.py +430 -109
  413. package/packages/sdk-py/src/agent_relay/templates.py +197 -0
  414. package/packages/sdk-py/src/agent_relay/types.py +489 -15
  415. package/packages/sdk-py/tests/test_builder.py +115 -1
  416. package/packages/sdk-py/tests/test_workflow_templates.py +450 -0
  417. package/packages/shared/cli-registry.yaml +193 -0
  418. package/packages/shared/codegen-py.mjs +215 -0
  419. package/packages/shared/codegen-ts.mjs +227 -0
  420. package/packages/telemetry/dist/events.d.ts +8 -8
  421. package/packages/telemetry/dist/index.d.ts +1 -1
  422. package/packages/telemetry/package.json +2 -2
  423. package/packages/telemetry/src/events.ts +9 -9
  424. package/packages/telemetry/src/index.ts +2 -2
  425. package/packages/trajectory/package.json +2 -2
  426. package/packages/user-directory/dist/user-directory.js +1 -1
  427. package/packages/user-directory/dist/user-directory.js.map +1 -1
  428. package/packages/user-directory/package.json +2 -2
  429. package/packages/user-directory/src/user-directory.ts +1 -1
  430. package/packages/utils/dist/cjs/client-helpers.js +4 -4
  431. package/packages/utils/dist/cjs/discovery.js +9 -6
  432. package/packages/utils/dist/cjs/errors.js +5 -5
  433. package/packages/utils/dist/cjs/legacy-protocol.js +70 -0
  434. package/packages/utils/dist/cjs/logger.js +3 -3
  435. package/packages/utils/dist/cjs/precompiled-patterns.js +33 -2
  436. package/packages/utils/dist/cjs/relay-pty-path.js +0 -6
  437. package/packages/utils/dist/client-helpers.d.ts +1 -1
  438. package/packages/utils/dist/client-helpers.d.ts.map +1 -1
  439. package/packages/utils/dist/client-helpers.js +1 -1
  440. package/packages/utils/dist/client-helpers.js.map +1 -1
  441. package/packages/utils/dist/discovery.d.ts +7 -7
  442. package/packages/utils/dist/discovery.d.ts.map +1 -1
  443. package/packages/utils/dist/discovery.js +20 -17
  444. package/packages/utils/dist/discovery.js.map +1 -1
  445. package/packages/utils/dist/errors.d.ts +1 -1
  446. package/packages/utils/dist/errors.js +3 -3
  447. package/packages/utils/dist/legacy-protocol.d.ts +46 -0
  448. package/packages/utils/dist/legacy-protocol.d.ts.map +1 -0
  449. package/packages/utils/dist/legacy-protocol.js +47 -0
  450. package/packages/utils/dist/legacy-protocol.js.map +1 -0
  451. package/packages/utils/dist/logger.d.ts +2 -2
  452. package/packages/utils/dist/logger.js +2 -2
  453. package/packages/utils/dist/precompiled-patterns.d.ts.map +1 -1
  454. package/packages/utils/dist/precompiled-patterns.js +28 -2
  455. package/packages/utils/dist/precompiled-patterns.js.map +1 -1
  456. package/packages/utils/dist/relay-pty-path.d.ts.map +1 -1
  457. package/packages/utils/dist/relay-pty-path.js +1 -10
  458. package/packages/utils/dist/relay-pty-path.js.map +1 -1
  459. package/packages/utils/package.json +2 -3
  460. package/packages/utils/src/client-helpers.ts +1 -1
  461. package/packages/utils/src/consolidation.test.ts +3 -3
  462. package/packages/utils/src/discovery.test.ts +3 -3
  463. package/packages/utils/src/discovery.ts +21 -18
  464. package/packages/utils/src/errors.test.ts +6 -11
  465. package/packages/utils/src/errors.ts +3 -3
  466. package/packages/utils/src/legacy-protocol.ts +151 -0
  467. package/packages/utils/src/logger.ts +2 -2
  468. package/packages/utils/src/precompiled-patterns.test.ts +8 -0
  469. package/packages/utils/src/precompiled-patterns.ts +40 -2
  470. package/packages/utils/src/relay-pty-path.test.ts +23 -34
  471. package/packages/utils/src/relay-pty-path.ts +1 -11
  472. package/relay-snippets/agent-relay-protocol.md +6 -43
  473. package/relay-snippets/agent-relay-snippet.md +59 -203
  474. package/scripts/postinstall.js +44 -171
  475. package/bin/relay-pty-darwin-arm64 +0 -0
  476. package/bin/relay-pty-darwin-x64 +0 -0
  477. package/bin/relay-pty-linux-arm64 +0 -0
  478. package/bin/relay-pty-linux-x64 +0 -0
  479. package/dist/src/bridge/index.d.ts +0 -8
  480. package/dist/src/bridge/index.d.ts.map +0 -1
  481. package/dist/src/bridge/index.js +0 -8
  482. package/dist/src/bridge/index.js.map +0 -1
  483. package/dist/src/continuity/index.d.ts +0 -5
  484. package/dist/src/continuity/index.d.ts.map +0 -1
  485. package/dist/src/continuity/index.js +0 -5
  486. package/dist/src/continuity/index.js.map +0 -1
  487. package/dist/src/daemon/index.d.ts +0 -8
  488. package/dist/src/daemon/index.d.ts.map +0 -1
  489. package/dist/src/daemon/index.js +0 -9
  490. package/dist/src/daemon/index.js.map +0 -1
  491. package/dist/src/protocol/index.d.ts +0 -8
  492. package/dist/src/protocol/index.d.ts.map +0 -1
  493. package/dist/src/protocol/index.js +0 -8
  494. package/dist/src/protocol/index.js.map +0 -1
  495. package/dist/src/resiliency/index.d.ts +0 -5
  496. package/dist/src/resiliency/index.d.ts.map +0 -1
  497. package/dist/src/resiliency/index.js +0 -5
  498. package/dist/src/resiliency/index.js.map +0 -1
  499. package/dist/src/state/index.d.ts +0 -5
  500. package/dist/src/state/index.d.ts.map +0 -1
  501. package/dist/src/state/index.js +0 -5
  502. package/dist/src/state/index.js.map +0 -1
  503. package/dist/src/storage/index.d.ts +0 -8
  504. package/dist/src/storage/index.d.ts.map +0 -1
  505. package/dist/src/storage/index.js +0 -8
  506. package/dist/src/storage/index.js.map +0 -1
  507. package/dist/src/wrapper/index.d.ts +0 -8
  508. package/dist/src/wrapper/index.d.ts.map +0 -1
  509. package/dist/src/wrapper/index.js +0 -11
  510. package/dist/src/wrapper/index.js.map +0 -1
  511. package/packages/bridge/dist/cli-resolution.d.ts +0 -32
  512. package/packages/bridge/dist/cli-resolution.d.ts.map +0 -1
  513. package/packages/bridge/dist/cli-resolution.js +0 -88
  514. package/packages/bridge/dist/cli-resolution.js.map +0 -1
  515. package/packages/bridge/dist/index.d.ts +0 -9
  516. package/packages/bridge/dist/index.d.ts.map +0 -1
  517. package/packages/bridge/dist/index.js +0 -11
  518. package/packages/bridge/dist/index.js.map +0 -1
  519. package/packages/bridge/dist/multi-project-client.d.ts +0 -99
  520. package/packages/bridge/dist/multi-project-client.d.ts.map +0 -1
  521. package/packages/bridge/dist/multi-project-client.js +0 -389
  522. package/packages/bridge/dist/multi-project-client.js.map +0 -1
  523. package/packages/bridge/dist/shadow-cli.d.ts +0 -17
  524. package/packages/bridge/dist/shadow-cli.d.ts.map +0 -1
  525. package/packages/bridge/dist/shadow-cli.js +0 -75
  526. package/packages/bridge/dist/shadow-cli.js.map +0 -1
  527. package/packages/bridge/dist/spawner.d.ts +0 -263
  528. package/packages/bridge/dist/spawner.d.ts.map +0 -1
  529. package/packages/bridge/dist/spawner.js +0 -1758
  530. package/packages/bridge/dist/spawner.js.map +0 -1
  531. package/packages/bridge/dist/types.d.ts +0 -141
  532. package/packages/bridge/dist/types.d.ts.map +0 -1
  533. package/packages/bridge/dist/types.js +0 -6
  534. package/packages/bridge/dist/types.js.map +0 -1
  535. package/packages/bridge/dist/utils.d.ts +0 -39
  536. package/packages/bridge/dist/utils.d.ts.map +0 -1
  537. package/packages/bridge/dist/utils.js +0 -98
  538. package/packages/bridge/dist/utils.js.map +0 -1
  539. package/packages/bridge/package.json +0 -45
  540. package/packages/bridge/src/cli-resolution.test.ts +0 -225
  541. package/packages/bridge/src/cli-resolution.ts +0 -100
  542. package/packages/bridge/src/index.ts +0 -34
  543. package/packages/bridge/src/multi-project-client.test.ts +0 -340
  544. package/packages/bridge/src/multi-project-client.ts +0 -469
  545. package/packages/bridge/src/shadow-cli.ts +0 -95
  546. package/packages/bridge/src/spawner-mcp.test.ts +0 -505
  547. package/packages/bridge/src/spawner.ts +0 -2067
  548. package/packages/bridge/src/types.ts +0 -153
  549. package/packages/bridge/src/utils.test.ts +0 -235
  550. package/packages/bridge/src/utils.ts +0 -113
  551. package/packages/bridge/tsconfig.json +0 -29
  552. package/packages/bridge/vitest.config.ts +0 -9
  553. package/packages/broker-sdk/README.md +0 -97
  554. package/packages/broker-sdk/dist/__tests__/facade.test.js +0 -257
  555. package/packages/broker-sdk/dist/__tests__/facade.test.js.map +0 -1
  556. package/packages/broker-sdk/dist/__tests__/integration.test.js +0 -139
  557. package/packages/broker-sdk/dist/__tests__/integration.test.js.map +0 -1
  558. package/packages/broker-sdk/dist/__tests__/quickstart.test.js +0 -176
  559. package/packages/broker-sdk/dist/__tests__/quickstart.test.js.map +0 -1
  560. package/packages/broker-sdk/dist/__tests__/unit.test.js +0 -192
  561. package/packages/broker-sdk/dist/__tests__/unit.test.js.map +0 -1
  562. package/packages/broker-sdk/dist/client.d.ts +0 -95
  563. package/packages/broker-sdk/dist/client.d.ts.map +0 -1
  564. package/packages/broker-sdk/dist/client.js +0 -372
  565. package/packages/broker-sdk/dist/client.js.map +0 -1
  566. package/packages/broker-sdk/dist/index.d.ts +0 -10
  567. package/packages/broker-sdk/dist/index.d.ts.map +0 -1
  568. package/packages/broker-sdk/dist/index.js +0 -10
  569. package/packages/broker-sdk/dist/index.js.map +0 -1
  570. package/packages/broker-sdk/dist/logs.d.ts +0 -47
  571. package/packages/broker-sdk/dist/logs.d.ts.map +0 -1
  572. package/packages/broker-sdk/dist/logs.js +0 -137
  573. package/packages/broker-sdk/dist/logs.js.map +0 -1
  574. package/packages/broker-sdk/dist/protocol.d.ts +0 -258
  575. package/packages/broker-sdk/dist/protocol.d.ts.map +0 -1
  576. package/packages/broker-sdk/dist/pty.d.ts.map +0 -1
  577. package/packages/broker-sdk/dist/pty.js +0 -14
  578. package/packages/broker-sdk/dist/pty.js.map +0 -1
  579. package/packages/broker-sdk/dist/relay.d.ts +0 -178
  580. package/packages/broker-sdk/dist/relay.d.ts.map +0 -1
  581. package/packages/broker-sdk/dist/relay.js +0 -494
  582. package/packages/broker-sdk/dist/relay.js.map +0 -1
  583. package/packages/broker-sdk/dist/relaycast.d.ts +0 -73
  584. package/packages/broker-sdk/dist/relaycast.d.ts.map +0 -1
  585. package/packages/broker-sdk/dist/relaycast.js +0 -184
  586. package/packages/broker-sdk/dist/relaycast.js.map +0 -1
  587. package/packages/broker-sdk/dist/shadow.d.ts +0 -100
  588. package/packages/broker-sdk/dist/shadow.d.ts.map +0 -1
  589. package/packages/broker-sdk/dist/shadow.js.map +0 -1
  590. package/packages/broker-sdk/dist/workflows/builder.d.ts +0 -101
  591. package/packages/broker-sdk/dist/workflows/builder.d.ts.map +0 -1
  592. package/packages/broker-sdk/dist/workflows/builder.js +0 -179
  593. package/packages/broker-sdk/dist/workflows/builder.js.map +0 -1
  594. package/packages/broker-sdk/dist/workflows/cli.d.ts +0 -10
  595. package/packages/broker-sdk/dist/workflows/cli.d.ts.map +0 -1
  596. package/packages/broker-sdk/dist/workflows/cli.js +0 -82
  597. package/packages/broker-sdk/dist/workflows/cli.js.map +0 -1
  598. package/packages/broker-sdk/dist/workflows/coordinator.d.ts +0 -69
  599. package/packages/broker-sdk/dist/workflows/coordinator.d.ts.map +0 -1
  600. package/packages/broker-sdk/dist/workflows/coordinator.js +0 -585
  601. package/packages/broker-sdk/dist/workflows/coordinator.js.map +0 -1
  602. package/packages/broker-sdk/dist/workflows/index.d.ts +0 -11
  603. package/packages/broker-sdk/dist/workflows/index.d.ts.map +0 -1
  604. package/packages/broker-sdk/dist/workflows/index.js +0 -11
  605. package/packages/broker-sdk/dist/workflows/index.js.map +0 -1
  606. package/packages/broker-sdk/dist/workflows/run.d.ts +0 -33
  607. package/packages/broker-sdk/dist/workflows/run.d.ts.map +0 -1
  608. package/packages/broker-sdk/dist/workflows/run.js +0 -28
  609. package/packages/broker-sdk/dist/workflows/run.js.map +0 -1
  610. package/packages/broker-sdk/dist/workflows/runner.d.ts +0 -140
  611. package/packages/broker-sdk/dist/workflows/runner.d.ts.map +0 -1
  612. package/packages/broker-sdk/dist/workflows/runner.js +0 -962
  613. package/packages/broker-sdk/dist/workflows/runner.js.map +0 -1
  614. package/packages/broker-sdk/dist/workflows/templates.d.ts +0 -47
  615. package/packages/broker-sdk/dist/workflows/templates.d.ts.map +0 -1
  616. package/packages/broker-sdk/dist/workflows/templates.js +0 -395
  617. package/packages/broker-sdk/dist/workflows/templates.js.map +0 -1
  618. package/packages/broker-sdk/dist/workflows/trajectory.d.ts +0 -80
  619. package/packages/broker-sdk/dist/workflows/trajectory.d.ts.map +0 -1
  620. package/packages/broker-sdk/dist/workflows/trajectory.js +0 -362
  621. package/packages/broker-sdk/dist/workflows/trajectory.js.map +0 -1
  622. package/packages/broker-sdk/dist/workflows/types.d.ts +0 -140
  623. package/packages/broker-sdk/dist/workflows/types.d.ts.map +0 -1
  624. package/packages/broker-sdk/dist/workflows/types.js +0 -8
  625. package/packages/broker-sdk/dist/workflows/types.js.map +0 -1
  626. package/packages/broker-sdk/package.json +0 -81
  627. package/packages/broker-sdk/scripts/bundle-agent-relay.mjs +0 -53
  628. package/packages/broker-sdk/src/__tests__/error-scenarios.test.ts +0 -682
  629. package/packages/broker-sdk/src/__tests__/facade.test.ts +0 -296
  630. package/packages/broker-sdk/src/__tests__/integration.test.ts +0 -170
  631. package/packages/broker-sdk/src/__tests__/quickstart.test.ts +0 -198
  632. package/packages/broker-sdk/src/__tests__/swarm-coordinator.test.ts +0 -772
  633. package/packages/broker-sdk/src/__tests__/unit.test.ts +0 -243
  634. package/packages/broker-sdk/src/__tests__/workflow-runner.test.ts +0 -333
  635. package/packages/broker-sdk/src/client.ts +0 -510
  636. package/packages/broker-sdk/src/index.ts +0 -9
  637. package/packages/broker-sdk/src/logs.ts +0 -163
  638. package/packages/broker-sdk/src/protocol.ts +0 -276
  639. package/packages/broker-sdk/src/pty.ts +0 -16
  640. package/packages/broker-sdk/src/relay.ts +0 -625
  641. package/packages/broker-sdk/src/relaycast.ts +0 -221
  642. package/packages/broker-sdk/src/shadow.ts +0 -230
  643. package/packages/broker-sdk/src/workflows/README.md +0 -544
  644. package/packages/broker-sdk/src/workflows/builder.ts +0 -241
  645. package/packages/broker-sdk/src/workflows/builtin-templates/bug-fix.yaml +0 -75
  646. package/packages/broker-sdk/src/workflows/builtin-templates/code-review.yaml +0 -82
  647. package/packages/broker-sdk/src/workflows/builtin-templates/documentation.yaml +0 -70
  648. package/packages/broker-sdk/src/workflows/builtin-templates/feature-dev.yaml +0 -76
  649. package/packages/broker-sdk/src/workflows/builtin-templates/refactor.yaml +0 -82
  650. package/packages/broker-sdk/src/workflows/builtin-templates/security-audit.yaml +0 -84
  651. package/packages/broker-sdk/src/workflows/cli.ts +0 -93
  652. package/packages/broker-sdk/src/workflows/coordinator.ts +0 -758
  653. package/packages/broker-sdk/src/workflows/index.ts +0 -10
  654. package/packages/broker-sdk/src/workflows/run.ts +0 -55
  655. package/packages/broker-sdk/src/workflows/runner.ts +0 -1271
  656. package/packages/broker-sdk/src/workflows/schema.json +0 -333
  657. package/packages/broker-sdk/src/workflows/templates.ts +0 -544
  658. package/packages/broker-sdk/src/workflows/trajectory.ts +0 -507
  659. package/packages/broker-sdk/src/workflows/types.ts +0 -208
  660. package/packages/broker-sdk/tsconfig.json +0 -22
  661. package/packages/broker-sdk/vitest.config.ts +0 -9
  662. package/packages/continuity/dist/formatter.d.ts +0 -57
  663. package/packages/continuity/dist/formatter.d.ts.map +0 -1
  664. package/packages/continuity/dist/formatter.js +0 -448
  665. package/packages/continuity/dist/formatter.js.map +0 -1
  666. package/packages/continuity/dist/handoff-store.d.ts +0 -67
  667. package/packages/continuity/dist/handoff-store.d.ts.map +0 -1
  668. package/packages/continuity/dist/handoff-store.js +0 -472
  669. package/packages/continuity/dist/handoff-store.js.map +0 -1
  670. package/packages/continuity/dist/index.d.ts +0 -10
  671. package/packages/continuity/dist/index.d.ts.map +0 -1
  672. package/packages/continuity/dist/index.js +0 -11
  673. package/packages/continuity/dist/index.js.map +0 -1
  674. package/packages/continuity/dist/ledger-store.d.ts +0 -110
  675. package/packages/continuity/dist/ledger-store.d.ts.map +0 -1
  676. package/packages/continuity/dist/ledger-store.js +0 -500
  677. package/packages/continuity/dist/ledger-store.js.map +0 -1
  678. package/packages/continuity/dist/manager.d.ts +0 -183
  679. package/packages/continuity/dist/manager.d.ts.map +0 -1
  680. package/packages/continuity/dist/manager.js +0 -616
  681. package/packages/continuity/dist/manager.js.map +0 -1
  682. package/packages/continuity/dist/parser.d.ts +0 -76
  683. package/packages/continuity/dist/parser.d.ts.map +0 -1
  684. package/packages/continuity/dist/parser.js +0 -579
  685. package/packages/continuity/dist/parser.js.map +0 -1
  686. package/packages/continuity/dist/types.d.ts +0 -180
  687. package/packages/continuity/dist/types.d.ts.map +0 -1
  688. package/packages/continuity/dist/types.js +0 -2
  689. package/packages/continuity/dist/types.js.map +0 -1
  690. package/packages/continuity/package.json +0 -40
  691. package/packages/continuity/src/formatter.ts +0 -536
  692. package/packages/continuity/src/handoff-store.ts +0 -523
  693. package/packages/continuity/src/index.ts +0 -12
  694. package/packages/continuity/src/ledger-store.ts +0 -594
  695. package/packages/continuity/src/manager.test.ts +0 -291
  696. package/packages/continuity/src/manager.ts +0 -774
  697. package/packages/continuity/src/parser.test.ts +0 -292
  698. package/packages/continuity/src/parser.ts +0 -680
  699. package/packages/continuity/src/types.ts +0 -211
  700. package/packages/continuity/tsconfig.json +0 -21
  701. package/packages/continuity/vitest.config.ts +0 -9
  702. package/packages/daemon/dist/agent-manager.d.ts +0 -134
  703. package/packages/daemon/dist/agent-manager.d.ts.map +0 -1
  704. package/packages/daemon/dist/agent-manager.js +0 -578
  705. package/packages/daemon/dist/agent-manager.js.map +0 -1
  706. package/packages/daemon/dist/agent-registry.d.ts +0 -99
  707. package/packages/daemon/dist/agent-registry.d.ts.map +0 -1
  708. package/packages/daemon/dist/agent-registry.js +0 -213
  709. package/packages/daemon/dist/agent-registry.js.map +0 -1
  710. package/packages/daemon/dist/agent-signing.d.ts +0 -158
  711. package/packages/daemon/dist/agent-signing.d.ts.map +0 -1
  712. package/packages/daemon/dist/agent-signing.js +0 -523
  713. package/packages/daemon/dist/agent-signing.js.map +0 -1
  714. package/packages/daemon/dist/api.d.ts +0 -106
  715. package/packages/daemon/dist/api.d.ts.map +0 -1
  716. package/packages/daemon/dist/api.js +0 -895
  717. package/packages/daemon/dist/api.js.map +0 -1
  718. package/packages/daemon/dist/auth.d.ts +0 -94
  719. package/packages/daemon/dist/auth.d.ts.map +0 -1
  720. package/packages/daemon/dist/auth.js +0 -197
  721. package/packages/daemon/dist/auth.js.map +0 -1
  722. package/packages/daemon/dist/channel-membership-store.d.ts +0 -55
  723. package/packages/daemon/dist/channel-membership-store.d.ts.map +0 -1
  724. package/packages/daemon/dist/channel-membership-store.js +0 -176
  725. package/packages/daemon/dist/channel-membership-store.js.map +0 -1
  726. package/packages/daemon/dist/cli-auth.d.ts +0 -97
  727. package/packages/daemon/dist/cli-auth.d.ts.map +0 -1
  728. package/packages/daemon/dist/cli-auth.js +0 -808
  729. package/packages/daemon/dist/cli-auth.js.map +0 -1
  730. package/packages/daemon/dist/cloud-sync.d.ts +0 -263
  731. package/packages/daemon/dist/cloud-sync.d.ts.map +0 -1
  732. package/packages/daemon/dist/cloud-sync.js +0 -820
  733. package/packages/daemon/dist/cloud-sync.js.map +0 -1
  734. package/packages/daemon/dist/connection.d.ts +0 -137
  735. package/packages/daemon/dist/connection.d.ts.map +0 -1
  736. package/packages/daemon/dist/connection.js +0 -465
  737. package/packages/daemon/dist/connection.js.map +0 -1
  738. package/packages/daemon/dist/consensus-integration.d.ts +0 -168
  739. package/packages/daemon/dist/consensus-integration.d.ts.map +0 -1
  740. package/packages/daemon/dist/consensus-integration.js +0 -371
  741. package/packages/daemon/dist/consensus-integration.js.map +0 -1
  742. package/packages/daemon/dist/consensus.d.ts +0 -269
  743. package/packages/daemon/dist/consensus.d.ts.map +0 -1
  744. package/packages/daemon/dist/consensus.js +0 -632
  745. package/packages/daemon/dist/consensus.js.map +0 -1
  746. package/packages/daemon/dist/delivery-tracker.d.ts +0 -34
  747. package/packages/daemon/dist/delivery-tracker.d.ts.map +0 -1
  748. package/packages/daemon/dist/delivery-tracker.js +0 -104
  749. package/packages/daemon/dist/delivery-tracker.js.map +0 -1
  750. package/packages/daemon/dist/enhanced-features.d.ts +0 -118
  751. package/packages/daemon/dist/enhanced-features.d.ts.map +0 -1
  752. package/packages/daemon/dist/enhanced-features.js +0 -177
  753. package/packages/daemon/dist/enhanced-features.js.map +0 -1
  754. package/packages/daemon/dist/index.d.ts +0 -29
  755. package/packages/daemon/dist/index.d.ts.map +0 -1
  756. package/packages/daemon/dist/index.js +0 -34
  757. package/packages/daemon/dist/index.js.map +0 -1
  758. package/packages/daemon/dist/orchestrator.d.ts +0 -217
  759. package/packages/daemon/dist/orchestrator.d.ts.map +0 -1
  760. package/packages/daemon/dist/orchestrator.js +0 -1172
  761. package/packages/daemon/dist/orchestrator.js.map +0 -1
  762. package/packages/daemon/dist/rate-limiter.d.ts +0 -68
  763. package/packages/daemon/dist/rate-limiter.d.ts.map +0 -1
  764. package/packages/daemon/dist/rate-limiter.js +0 -130
  765. package/packages/daemon/dist/rate-limiter.js.map +0 -1
  766. package/packages/daemon/dist/registry.d.ts +0 -9
  767. package/packages/daemon/dist/registry.d.ts.map +0 -1
  768. package/packages/daemon/dist/registry.js +0 -9
  769. package/packages/daemon/dist/registry.js.map +0 -1
  770. package/packages/daemon/dist/repo-manager.d.ts +0 -116
  771. package/packages/daemon/dist/repo-manager.d.ts.map +0 -1
  772. package/packages/daemon/dist/repo-manager.js +0 -384
  773. package/packages/daemon/dist/repo-manager.js.map +0 -1
  774. package/packages/daemon/dist/router.d.ts +0 -389
  775. package/packages/daemon/dist/router.d.ts.map +0 -1
  776. package/packages/daemon/dist/router.js +0 -1607
  777. package/packages/daemon/dist/router.js.map +0 -1
  778. package/packages/daemon/dist/server.d.ts +0 -201
  779. package/packages/daemon/dist/server.d.ts.map +0 -1
  780. package/packages/daemon/dist/server.js +0 -1791
  781. package/packages/daemon/dist/server.js.map +0 -1
  782. package/packages/daemon/dist/spawn-manager.d.ts +0 -119
  783. package/packages/daemon/dist/spawn-manager.d.ts.map +0 -1
  784. package/packages/daemon/dist/spawn-manager.js +0 -319
  785. package/packages/daemon/dist/spawn-manager.js.map +0 -1
  786. package/packages/daemon/dist/sync-queue.d.ts +0 -116
  787. package/packages/daemon/dist/sync-queue.d.ts.map +0 -1
  788. package/packages/daemon/dist/sync-queue.js +0 -361
  789. package/packages/daemon/dist/sync-queue.js.map +0 -1
  790. package/packages/daemon/dist/types.d.ts +0 -133
  791. package/packages/daemon/dist/types.d.ts.map +0 -1
  792. package/packages/daemon/dist/types.js +0 -6
  793. package/packages/daemon/dist/types.js.map +0 -1
  794. package/packages/daemon/dist/workspace-manager.d.ts +0 -80
  795. package/packages/daemon/dist/workspace-manager.d.ts.map +0 -1
  796. package/packages/daemon/dist/workspace-manager.js +0 -314
  797. package/packages/daemon/dist/workspace-manager.js.map +0 -1
  798. package/packages/daemon/package.json +0 -56
  799. package/packages/daemon/src/agent-manager.ts +0 -679
  800. package/packages/daemon/src/agent-registry.ts +0 -284
  801. package/packages/daemon/src/agent-signing.ts +0 -707
  802. package/packages/daemon/src/api.ts +0 -1034
  803. package/packages/daemon/src/auth.ts +0 -276
  804. package/packages/daemon/src/channel-membership-store.ts +0 -217
  805. package/packages/daemon/src/cli-auth.ts +0 -945
  806. package/packages/daemon/src/cloud-sync.ts +0 -1100
  807. package/packages/daemon/src/connection.ts +0 -561
  808. package/packages/daemon/src/consensus-integration.ts +0 -510
  809. package/packages/daemon/src/consensus.ts +0 -848
  810. package/packages/daemon/src/delivery-tracker.ts +0 -145
  811. package/packages/daemon/src/enhanced-features.ts +0 -390
  812. package/packages/daemon/src/index.ts +0 -48
  813. package/packages/daemon/src/orchestrator.test.ts +0 -231
  814. package/packages/daemon/src/orchestrator.ts +0 -1376
  815. package/packages/daemon/src/rate-limiter.ts +0 -172
  816. package/packages/daemon/src/registry.ts +0 -8
  817. package/packages/daemon/src/repo-manager.ts +0 -468
  818. package/packages/daemon/src/router.test.ts +0 -181
  819. package/packages/daemon/src/router.ts +0 -1925
  820. package/packages/daemon/src/server.ts +0 -2051
  821. package/packages/daemon/src/spawn-manager-set-model.test.ts +0 -144
  822. package/packages/daemon/src/spawn-manager.ts +0 -415
  823. package/packages/daemon/src/sync-queue.ts +0 -477
  824. package/packages/daemon/src/types.ts +0 -158
  825. package/packages/daemon/src/workspace-manager.ts +0 -371
  826. package/packages/daemon/tsconfig.json +0 -21
  827. package/packages/daemon/vitest.config.ts +0 -9
  828. package/packages/mcp/CHANGELOG.md +0 -28
  829. package/packages/mcp/LICENSE +0 -190
  830. package/packages/mcp/README.md +0 -266
  831. package/packages/mcp/dist/bin.d.ts +0 -12
  832. package/packages/mcp/dist/bin.d.ts.map +0 -1
  833. package/packages/mcp/dist/bin.js +0 -179
  834. package/packages/mcp/dist/bin.js.map +0 -1
  835. package/packages/mcp/dist/client-adapter.d.ts +0 -164
  836. package/packages/mcp/dist/client-adapter.d.ts.map +0 -1
  837. package/packages/mcp/dist/client-adapter.js +0 -231
  838. package/packages/mcp/dist/client-adapter.js.map +0 -1
  839. package/packages/mcp/dist/cloud.d.ts +0 -13
  840. package/packages/mcp/dist/cloud.d.ts.map +0 -1
  841. package/packages/mcp/dist/cloud.js +0 -25
  842. package/packages/mcp/dist/cloud.js.map +0 -1
  843. package/packages/mcp/dist/errors.d.ts +0 -9
  844. package/packages/mcp/dist/errors.d.ts.map +0 -1
  845. package/packages/mcp/dist/errors.js +0 -9
  846. package/packages/mcp/dist/errors.js.map +0 -1
  847. package/packages/mcp/dist/file-transport.d.ts +0 -103
  848. package/packages/mcp/dist/file-transport.d.ts.map +0 -1
  849. package/packages/mcp/dist/file-transport.js +0 -204
  850. package/packages/mcp/dist/file-transport.js.map +0 -1
  851. package/packages/mcp/dist/hybrid-client.d.ts +0 -5
  852. package/packages/mcp/dist/hybrid-client.d.ts.map +0 -1
  853. package/packages/mcp/dist/hybrid-client.js +0 -23
  854. package/packages/mcp/dist/hybrid-client.js.map +0 -1
  855. package/packages/mcp/dist/index.d.ts +0 -11
  856. package/packages/mcp/dist/index.d.ts.map +0 -1
  857. package/packages/mcp/dist/index.js +0 -25
  858. package/packages/mcp/dist/index.js.map +0 -1
  859. package/packages/mcp/dist/install-cli.d.ts +0 -35
  860. package/packages/mcp/dist/install-cli.d.ts.map +0 -1
  861. package/packages/mcp/dist/install-cli.js +0 -157
  862. package/packages/mcp/dist/install-cli.js.map +0 -1
  863. package/packages/mcp/dist/install.d.ts +0 -123
  864. package/packages/mcp/dist/install.d.ts.map +0 -1
  865. package/packages/mcp/dist/install.js +0 -661
  866. package/packages/mcp/dist/install.js.map +0 -1
  867. package/packages/mcp/dist/prompts/index.d.ts +0 -2
  868. package/packages/mcp/dist/prompts/index.d.ts.map +0 -1
  869. package/packages/mcp/dist/prompts/index.js +0 -2
  870. package/packages/mcp/dist/prompts/index.js.map +0 -1
  871. package/packages/mcp/dist/prompts/protocol.d.ts +0 -11
  872. package/packages/mcp/dist/prompts/protocol.d.ts.map +0 -1
  873. package/packages/mcp/dist/prompts/protocol.js +0 -160
  874. package/packages/mcp/dist/prompts/protocol.js.map +0 -1
  875. package/packages/mcp/dist/resources/agents.d.ts +0 -11
  876. package/packages/mcp/dist/resources/agents.d.ts.map +0 -1
  877. package/packages/mcp/dist/resources/agents.js +0 -17
  878. package/packages/mcp/dist/resources/agents.js.map +0 -1
  879. package/packages/mcp/dist/resources/inbox.d.ts +0 -11
  880. package/packages/mcp/dist/resources/inbox.d.ts.map +0 -1
  881. package/packages/mcp/dist/resources/inbox.js +0 -17
  882. package/packages/mcp/dist/resources/inbox.js.map +0 -1
  883. package/packages/mcp/dist/resources/index.d.ts +0 -4
  884. package/packages/mcp/dist/resources/index.d.ts.map +0 -1
  885. package/packages/mcp/dist/resources/index.js +0 -4
  886. package/packages/mcp/dist/resources/index.js.map +0 -1
  887. package/packages/mcp/dist/resources/project.d.ts +0 -11
  888. package/packages/mcp/dist/resources/project.d.ts.map +0 -1
  889. package/packages/mcp/dist/resources/project.js +0 -21
  890. package/packages/mcp/dist/resources/project.js.map +0 -1
  891. package/packages/mcp/dist/server.d.ts +0 -23
  892. package/packages/mcp/dist/server.d.ts.map +0 -1
  893. package/packages/mcp/dist/server.js +0 -317
  894. package/packages/mcp/dist/server.js.map +0 -1
  895. package/packages/mcp/dist/simple.d.ts +0 -170
  896. package/packages/mcp/dist/simple.d.ts.map +0 -1
  897. package/packages/mcp/dist/simple.js +0 -120
  898. package/packages/mcp/dist/simple.js.map +0 -1
  899. package/packages/mcp/dist/tools/index.d.ts +0 -20
  900. package/packages/mcp/dist/tools/index.d.ts.map +0 -1
  901. package/packages/mcp/dist/tools/index.js +0 -20
  902. package/packages/mcp/dist/tools/index.js.map +0 -1
  903. package/packages/mcp/dist/tools/relay-broadcast.d.ts +0 -20
  904. package/packages/mcp/dist/tools/relay-broadcast.d.ts.map +0 -1
  905. package/packages/mcp/dist/tools/relay-broadcast.js +0 -25
  906. package/packages/mcp/dist/tools/relay-broadcast.js.map +0 -1
  907. package/packages/mcp/dist/tools/relay-channel.d.ts +0 -75
  908. package/packages/mcp/dist/tools/relay-channel.d.ts.map +0 -1
  909. package/packages/mcp/dist/tools/relay-channel.js +0 -124
  910. package/packages/mcp/dist/tools/relay-channel.js.map +0 -1
  911. package/packages/mcp/dist/tools/relay-connected.d.ts +0 -17
  912. package/packages/mcp/dist/tools/relay-connected.d.ts.map +0 -1
  913. package/packages/mcp/dist/tools/relay-connected.js +0 -54
  914. package/packages/mcp/dist/tools/relay-connected.js.map +0 -1
  915. package/packages/mcp/dist/tools/relay-consensus.d.ts +0 -45
  916. package/packages/mcp/dist/tools/relay-consensus.d.ts.map +0 -1
  917. package/packages/mcp/dist/tools/relay-consensus.js +0 -80
  918. package/packages/mcp/dist/tools/relay-consensus.js.map +0 -1
  919. package/packages/mcp/dist/tools/relay-continuity.d.ts +0 -35
  920. package/packages/mcp/dist/tools/relay-continuity.d.ts.map +0 -1
  921. package/packages/mcp/dist/tools/relay-continuity.js +0 -101
  922. package/packages/mcp/dist/tools/relay-continuity.js.map +0 -1
  923. package/packages/mcp/dist/tools/relay-health.d.ts +0 -20
  924. package/packages/mcp/dist/tools/relay-health.d.ts.map +0 -1
  925. package/packages/mcp/dist/tools/relay-health.js +0 -130
  926. package/packages/mcp/dist/tools/relay-health.js.map +0 -1
  927. package/packages/mcp/dist/tools/relay-inbox.d.ts +0 -26
  928. package/packages/mcp/dist/tools/relay-inbox.d.ts.map +0 -1
  929. package/packages/mcp/dist/tools/relay-inbox.js +0 -58
  930. package/packages/mcp/dist/tools/relay-inbox.js.map +0 -1
  931. package/packages/mcp/dist/tools/relay-logs.d.ts +0 -20
  932. package/packages/mcp/dist/tools/relay-logs.d.ts.map +0 -1
  933. package/packages/mcp/dist/tools/relay-logs.js +0 -90
  934. package/packages/mcp/dist/tools/relay-logs.js.map +0 -1
  935. package/packages/mcp/dist/tools/relay-messages.d.ts +0 -32
  936. package/packages/mcp/dist/tools/relay-messages.d.ts.map +0 -1
  937. package/packages/mcp/dist/tools/relay-messages.js +0 -61
  938. package/packages/mcp/dist/tools/relay-messages.js.map +0 -1
  939. package/packages/mcp/dist/tools/relay-metrics.d.ts +0 -17
  940. package/packages/mcp/dist/tools/relay-metrics.d.ts.map +0 -1
  941. package/packages/mcp/dist/tools/relay-metrics.js +0 -124
  942. package/packages/mcp/dist/tools/relay-metrics.js.map +0 -1
  943. package/packages/mcp/dist/tools/relay-release.d.ts +0 -20
  944. package/packages/mcp/dist/tools/relay-release.d.ts.map +0 -1
  945. package/packages/mcp/dist/tools/relay-release.js +0 -44
  946. package/packages/mcp/dist/tools/relay-release.js.map +0 -1
  947. package/packages/mcp/dist/tools/relay-remove-agent.d.ts +0 -20
  948. package/packages/mcp/dist/tools/relay-remove-agent.d.ts.map +0 -1
  949. package/packages/mcp/dist/tools/relay-remove-agent.js +0 -50
  950. package/packages/mcp/dist/tools/relay-remove-agent.js.map +0 -1
  951. package/packages/mcp/dist/tools/relay-send.d.ts +0 -29
  952. package/packages/mcp/dist/tools/relay-send.d.ts.map +0 -1
  953. package/packages/mcp/dist/tools/relay-send.js +0 -73
  954. package/packages/mcp/dist/tools/relay-send.js.map +0 -1
  955. package/packages/mcp/dist/tools/relay-set-model.d.ts +0 -23
  956. package/packages/mcp/dist/tools/relay-set-model.d.ts.map +0 -1
  957. package/packages/mcp/dist/tools/relay-set-model.js +0 -52
  958. package/packages/mcp/dist/tools/relay-set-model.js.map +0 -1
  959. package/packages/mcp/dist/tools/relay-shadow.d.ts +0 -30
  960. package/packages/mcp/dist/tools/relay-shadow.d.ts.map +0 -1
  961. package/packages/mcp/dist/tools/relay-shadow.js +0 -55
  962. package/packages/mcp/dist/tools/relay-shadow.js.map +0 -1
  963. package/packages/mcp/dist/tools/relay-spawn.d.ts +0 -36
  964. package/packages/mcp/dist/tools/relay-spawn.d.ts.map +0 -1
  965. package/packages/mcp/dist/tools/relay-spawn.js +0 -73
  966. package/packages/mcp/dist/tools/relay-spawn.js.map +0 -1
  967. package/packages/mcp/dist/tools/relay-status.d.ts +0 -11
  968. package/packages/mcp/dist/tools/relay-status.d.ts.map +0 -1
  969. package/packages/mcp/dist/tools/relay-status.js +0 -43
  970. package/packages/mcp/dist/tools/relay-status.js.map +0 -1
  971. package/packages/mcp/dist/tools/relay-subscribe.d.ts +0 -27
  972. package/packages/mcp/dist/tools/relay-subscribe.d.ts.map +0 -1
  973. package/packages/mcp/dist/tools/relay-subscribe.js +0 -49
  974. package/packages/mcp/dist/tools/relay-subscribe.js.map +0 -1
  975. package/packages/mcp/dist/tools/relay-who.d.ts +0 -20
  976. package/packages/mcp/dist/tools/relay-who.d.ts.map +0 -1
  977. package/packages/mcp/dist/tools/relay-who.js +0 -62
  978. package/packages/mcp/dist/tools/relay-who.js.map +0 -1
  979. package/packages/mcp/package.json +0 -82
  980. package/packages/mcp/src/bin.ts +0 -200
  981. package/packages/mcp/src/client-adapter.ts +0 -358
  982. package/packages/mcp/src/cloud.ts +0 -41
  983. package/packages/mcp/src/errors.ts +0 -17
  984. package/packages/mcp/src/file-transport.ts +0 -275
  985. package/packages/mcp/src/hybrid-client.ts +0 -25
  986. package/packages/mcp/src/index.ts +0 -143
  987. package/packages/mcp/src/install-cli.ts +0 -210
  988. package/packages/mcp/src/install.ts +0 -820
  989. package/packages/mcp/src/prompts/index.ts +0 -1
  990. package/packages/mcp/src/prompts/protocol.ts +0 -164
  991. package/packages/mcp/src/resources/agents.ts +0 -21
  992. package/packages/mcp/src/resources/inbox.ts +0 -21
  993. package/packages/mcp/src/resources/index.ts +0 -3
  994. package/packages/mcp/src/resources/project.ts +0 -29
  995. package/packages/mcp/src/server.ts +0 -475
  996. package/packages/mcp/src/simple.ts +0 -214
  997. package/packages/mcp/src/tools/index.ts +0 -155
  998. package/packages/mcp/src/tools/relay-broadcast.ts +0 -32
  999. package/packages/mcp/src/tools/relay-channel.ts +0 -151
  1000. package/packages/mcp/src/tools/relay-connected.ts +0 -67
  1001. package/packages/mcp/src/tools/relay-consensus.ts +0 -92
  1002. package/packages/mcp/src/tools/relay-continuity.ts +0 -127
  1003. package/packages/mcp/src/tools/relay-health.ts +0 -148
  1004. package/packages/mcp/src/tools/relay-inbox.ts +0 -70
  1005. package/packages/mcp/src/tools/relay-logs.ts +0 -106
  1006. package/packages/mcp/src/tools/relay-messages.ts +0 -66
  1007. package/packages/mcp/src/tools/relay-metrics.ts +0 -142
  1008. package/packages/mcp/src/tools/relay-release.ts +0 -54
  1009. package/packages/mcp/src/tools/relay-remove-agent.ts +0 -58
  1010. package/packages/mcp/src/tools/relay-send.ts +0 -84
  1011. package/packages/mcp/src/tools/relay-set-model.ts +0 -62
  1012. package/packages/mcp/src/tools/relay-shadow.ts +0 -67
  1013. package/packages/mcp/src/tools/relay-spawn.ts +0 -87
  1014. package/packages/mcp/src/tools/relay-status.ts +0 -57
  1015. package/packages/mcp/src/tools/relay-subscribe.ts +0 -61
  1016. package/packages/mcp/src/tools/relay-who.ts +0 -75
  1017. package/packages/mcp/tests/client.test.ts +0 -451
  1018. package/packages/mcp/tests/discover.test.ts +0 -256
  1019. package/packages/mcp/tests/install.test.ts +0 -123
  1020. package/packages/mcp/tests/prompts.test.ts +0 -12
  1021. package/packages/mcp/tests/resources.test.ts +0 -53
  1022. package/packages/mcp/tests/tools.test.ts +0 -1516
  1023. package/packages/mcp/tsconfig.json +0 -22
  1024. package/packages/mcp/vitest.config.ts +0 -9
  1025. package/packages/protocol/dist/channels.d.ts +0 -137
  1026. package/packages/protocol/dist/channels.d.ts.map +0 -1
  1027. package/packages/protocol/dist/channels.js +0 -154
  1028. package/packages/protocol/dist/channels.js.map +0 -1
  1029. package/packages/protocol/dist/framing.d.ts +0 -80
  1030. package/packages/protocol/dist/framing.d.ts.map +0 -1
  1031. package/packages/protocol/dist/framing.js +0 -206
  1032. package/packages/protocol/dist/framing.js.map +0 -1
  1033. package/packages/protocol/dist/id-generator.d.ts +0 -35
  1034. package/packages/protocol/dist/id-generator.d.ts.map +0 -1
  1035. package/packages/protocol/dist/id-generator.js +0 -60
  1036. package/packages/protocol/dist/id-generator.js.map +0 -1
  1037. package/packages/protocol/dist/index.d.ts +0 -5
  1038. package/packages/protocol/dist/index.d.ts.map +0 -1
  1039. package/packages/protocol/dist/index.js +0 -5
  1040. package/packages/protocol/dist/index.js.map +0 -1
  1041. package/packages/protocol/dist/relay-pty-schemas.d.ts +0 -340
  1042. package/packages/protocol/dist/relay-pty-schemas.d.ts.map +0 -1
  1043. package/packages/protocol/dist/relay-pty-schemas.js +0 -60
  1044. package/packages/protocol/dist/relay-pty-schemas.js.map +0 -1
  1045. package/packages/protocol/dist/types.d.ts +0 -793
  1046. package/packages/protocol/dist/types.d.ts.map +0 -1
  1047. package/packages/protocol/dist/types.js +0 -8
  1048. package/packages/protocol/dist/types.js.map +0 -1
  1049. package/packages/protocol/package.json +0 -61
  1050. package/packages/protocol/src/channels.test.ts +0 -330
  1051. package/packages/protocol/src/channels.ts +0 -270
  1052. package/packages/protocol/src/framing.test.ts +0 -164
  1053. package/packages/protocol/src/framing.ts +0 -242
  1054. package/packages/protocol/src/id-generator.ts +0 -69
  1055. package/packages/protocol/src/index.ts +0 -4
  1056. package/packages/protocol/src/relay-pty-schemas.ts +0 -400
  1057. package/packages/protocol/src/types.test.ts +0 -271
  1058. package/packages/protocol/src/types.ts +0 -988
  1059. package/packages/protocol/tsconfig.json +0 -21
  1060. package/packages/protocol/vitest.config.ts +0 -9
  1061. package/packages/resiliency/dist/cgroup-manager.d.ts +0 -152
  1062. package/packages/resiliency/dist/cgroup-manager.d.ts.map +0 -1
  1063. package/packages/resiliency/dist/cgroup-manager.js +0 -394
  1064. package/packages/resiliency/dist/cgroup-manager.js.map +0 -1
  1065. package/packages/resiliency/dist/context-persistence.d.ts +0 -140
  1066. package/packages/resiliency/dist/context-persistence.d.ts.map +0 -1
  1067. package/packages/resiliency/dist/context-persistence.js +0 -397
  1068. package/packages/resiliency/dist/context-persistence.js.map +0 -1
  1069. package/packages/resiliency/dist/crash-insights.d.ts +0 -156
  1070. package/packages/resiliency/dist/crash-insights.d.ts.map +0 -1
  1071. package/packages/resiliency/dist/crash-insights.js +0 -492
  1072. package/packages/resiliency/dist/crash-insights.js.map +0 -1
  1073. package/packages/resiliency/dist/gossip-health.d.ts +0 -137
  1074. package/packages/resiliency/dist/gossip-health.d.ts.map +0 -1
  1075. package/packages/resiliency/dist/gossip-health.js +0 -241
  1076. package/packages/resiliency/dist/gossip-health.js.map +0 -1
  1077. package/packages/resiliency/dist/health-monitor.d.ts +0 -97
  1078. package/packages/resiliency/dist/health-monitor.d.ts.map +0 -1
  1079. package/packages/resiliency/dist/health-monitor.js +0 -291
  1080. package/packages/resiliency/dist/health-monitor.js.map +0 -1
  1081. package/packages/resiliency/dist/index.d.ts +0 -69
  1082. package/packages/resiliency/dist/index.d.ts.map +0 -1
  1083. package/packages/resiliency/dist/index.js +0 -69
  1084. package/packages/resiliency/dist/index.js.map +0 -1
  1085. package/packages/resiliency/dist/leader-watchdog.d.ts +0 -109
  1086. package/packages/resiliency/dist/leader-watchdog.d.ts.map +0 -1
  1087. package/packages/resiliency/dist/leader-watchdog.js +0 -189
  1088. package/packages/resiliency/dist/leader-watchdog.js.map +0 -1
  1089. package/packages/resiliency/dist/logger.d.ts +0 -114
  1090. package/packages/resiliency/dist/logger.d.ts.map +0 -1
  1091. package/packages/resiliency/dist/logger.js +0 -250
  1092. package/packages/resiliency/dist/logger.js.map +0 -1
  1093. package/packages/resiliency/dist/memory-monitor.d.ts +0 -172
  1094. package/packages/resiliency/dist/memory-monitor.d.ts.map +0 -1
  1095. package/packages/resiliency/dist/memory-monitor.js +0 -599
  1096. package/packages/resiliency/dist/memory-monitor.js.map +0 -1
  1097. package/packages/resiliency/dist/metrics.d.ts +0 -115
  1098. package/packages/resiliency/dist/metrics.d.ts.map +0 -1
  1099. package/packages/resiliency/dist/metrics.js +0 -239
  1100. package/packages/resiliency/dist/metrics.js.map +0 -1
  1101. package/packages/resiliency/dist/provider-context.d.ts +0 -100
  1102. package/packages/resiliency/dist/provider-context.d.ts.map +0 -1
  1103. package/packages/resiliency/dist/provider-context.js +0 -362
  1104. package/packages/resiliency/dist/provider-context.js.map +0 -1
  1105. package/packages/resiliency/dist/stateless-lead.d.ts +0 -149
  1106. package/packages/resiliency/dist/stateless-lead.d.ts.map +0 -1
  1107. package/packages/resiliency/dist/stateless-lead.js +0 -308
  1108. package/packages/resiliency/dist/stateless-lead.js.map +0 -1
  1109. package/packages/resiliency/dist/supervisor.d.ts +0 -147
  1110. package/packages/resiliency/dist/supervisor.d.ts.map +0 -1
  1111. package/packages/resiliency/dist/supervisor.js +0 -459
  1112. package/packages/resiliency/dist/supervisor.js.map +0 -1
  1113. package/packages/resiliency/package.json +0 -38
  1114. package/packages/resiliency/src/cgroup-manager.ts +0 -468
  1115. package/packages/resiliency/src/context-persistence.ts +0 -538
  1116. package/packages/resiliency/src/crash-insights.test.ts +0 -620
  1117. package/packages/resiliency/src/crash-insights.ts +0 -660
  1118. package/packages/resiliency/src/gossip-health.ts +0 -333
  1119. package/packages/resiliency/src/health-monitor.ts +0 -371
  1120. package/packages/resiliency/src/index.ts +0 -157
  1121. package/packages/resiliency/src/leader-watchdog.ts +0 -260
  1122. package/packages/resiliency/src/logger.ts +0 -320
  1123. package/packages/resiliency/src/memory-monitor.test.ts +0 -637
  1124. package/packages/resiliency/src/memory-monitor.ts +0 -740
  1125. package/packages/resiliency/src/metrics.ts +0 -311
  1126. package/packages/resiliency/src/provider-context.ts +0 -452
  1127. package/packages/resiliency/src/stateless-lead.ts +0 -408
  1128. package/packages/resiliency/src/supervisor.ts +0 -578
  1129. package/packages/resiliency/tsconfig.json +0 -21
  1130. package/packages/resiliency/vitest.config.ts +0 -9
  1131. package/packages/sdk/dist/discovery.d.ts +0 -10
  1132. package/packages/sdk/dist/discovery.d.ts.map +0 -1
  1133. package/packages/sdk/dist/discovery.js +0 -22
  1134. package/packages/sdk/dist/discovery.js.map +0 -1
  1135. package/packages/sdk/dist/errors.d.ts +0 -9
  1136. package/packages/sdk/dist/errors.d.ts.map +0 -1
  1137. package/packages/sdk/dist/errors.js +0 -9
  1138. package/packages/sdk/dist/errors.js.map +0 -1
  1139. package/packages/sdk/dist/protocol/index.d.ts +0 -8
  1140. package/packages/sdk/dist/protocol/index.d.ts.map +0 -1
  1141. package/packages/sdk/dist/protocol/index.js +0 -8
  1142. package/packages/sdk/dist/protocol/index.js.map +0 -1
  1143. package/packages/sdk/examples/SWARM_CAPABILITIES.md +0 -498
  1144. package/packages/sdk/examples/SWARM_PATTERNS.md +0 -541
  1145. package/packages/sdk/src/client.test.ts +0 -1041
  1146. package/packages/sdk/src/discovery.ts +0 -38
  1147. package/packages/sdk/src/errors.ts +0 -17
  1148. package/packages/sdk/src/logs.test.ts +0 -98
  1149. package/packages/sdk/src/protocol/framing.test.ts +0 -164
  1150. package/packages/sdk/src/protocol/index.ts +0 -8
  1151. package/packages/spawner/.trajectories/index.json +0 -5
  1152. package/packages/spawner/API.md +0 -256
  1153. package/packages/spawner/dist/index.d.ts +0 -8
  1154. package/packages/spawner/dist/index.d.ts.map +0 -1
  1155. package/packages/spawner/dist/index.js +0 -8
  1156. package/packages/spawner/dist/index.js.map +0 -1
  1157. package/packages/spawner/dist/types.d.ts +0 -552
  1158. package/packages/spawner/dist/types.d.ts.map +0 -1
  1159. package/packages/spawner/dist/types.js +0 -193
  1160. package/packages/spawner/dist/types.js.map +0 -1
  1161. package/packages/spawner/package.json +0 -47
  1162. package/packages/spawner/src/index.ts +0 -8
  1163. package/packages/spawner/src/types.test.ts +0 -385
  1164. package/packages/spawner/src/types.ts +0 -228
  1165. package/packages/spawner/tsconfig.json +0 -19
  1166. package/packages/spawner/vitest.config.ts +0 -9
  1167. package/packages/state/dist/agent-state.d.ts +0 -40
  1168. package/packages/state/dist/agent-state.d.ts.map +0 -1
  1169. package/packages/state/dist/agent-state.js +0 -120
  1170. package/packages/state/dist/agent-state.js.map +0 -1
  1171. package/packages/state/dist/index.d.ts +0 -8
  1172. package/packages/state/dist/index.d.ts.map +0 -1
  1173. package/packages/state/dist/index.js +0 -8
  1174. package/packages/state/dist/index.js.map +0 -1
  1175. package/packages/state/package.json +0 -37
  1176. package/packages/state/src/agent-state.test.ts +0 -335
  1177. package/packages/state/src/agent-state.ts +0 -153
  1178. package/packages/state/src/index.ts +0 -12
  1179. package/packages/state/tsconfig.json +0 -21
  1180. package/packages/state/vitest.config.ts +0 -9
  1181. package/packages/storage/dist/adapter.d.ts +0 -189
  1182. package/packages/storage/dist/adapter.d.ts.map +0 -1
  1183. package/packages/storage/dist/adapter.js +0 -267
  1184. package/packages/storage/dist/adapter.js.map +0 -1
  1185. package/packages/storage/dist/batched-sqlite-adapter.d.ts +0 -75
  1186. package/packages/storage/dist/batched-sqlite-adapter.d.ts.map +0 -1
  1187. package/packages/storage/dist/batched-sqlite-adapter.js +0 -189
  1188. package/packages/storage/dist/batched-sqlite-adapter.js.map +0 -1
  1189. package/packages/storage/dist/dead-letter-queue.d.ts +0 -196
  1190. package/packages/storage/dist/dead-letter-queue.d.ts.map +0 -1
  1191. package/packages/storage/dist/dead-letter-queue.js +0 -427
  1192. package/packages/storage/dist/dead-letter-queue.js.map +0 -1
  1193. package/packages/storage/dist/dlq-adapter.d.ts +0 -195
  1194. package/packages/storage/dist/dlq-adapter.d.ts.map +0 -1
  1195. package/packages/storage/dist/dlq-adapter.js +0 -664
  1196. package/packages/storage/dist/dlq-adapter.js.map +0 -1
  1197. package/packages/storage/dist/index.d.ts +0 -6
  1198. package/packages/storage/dist/index.d.ts.map +0 -1
  1199. package/packages/storage/dist/index.js +0 -7
  1200. package/packages/storage/dist/index.js.map +0 -1
  1201. package/packages/storage/dist/jsonl-adapter.d.ts +0 -91
  1202. package/packages/storage/dist/jsonl-adapter.d.ts.map +0 -1
  1203. package/packages/storage/dist/jsonl-adapter.js +0 -580
  1204. package/packages/storage/dist/jsonl-adapter.js.map +0 -1
  1205. package/packages/storage/dist/sqlite-adapter.d.ts +0 -131
  1206. package/packages/storage/dist/sqlite-adapter.d.ts.map +0 -1
  1207. package/packages/storage/dist/sqlite-adapter.js +0 -865
  1208. package/packages/storage/dist/sqlite-adapter.js.map +0 -1
  1209. package/packages/storage/package.json +0 -74
  1210. package/packages/storage/src/adapter.ts +0 -446
  1211. package/packages/storage/src/batched-sqlite-adapter.test.ts +0 -256
  1212. package/packages/storage/src/batched-sqlite-adapter.ts +0 -239
  1213. package/packages/storage/src/dead-letter-queue.ts +0 -643
  1214. package/packages/storage/src/dlq-adapter.test.ts +0 -509
  1215. package/packages/storage/src/dlq-adapter.ts +0 -954
  1216. package/packages/storage/src/index.ts +0 -6
  1217. package/packages/storage/src/jsonl-adapter.test.ts +0 -239
  1218. package/packages/storage/src/jsonl-adapter.ts +0 -704
  1219. package/packages/storage/src/memory-adapter.test.ts +0 -36
  1220. package/packages/storage/src/sqlite-adapter.test.ts +0 -580
  1221. package/packages/storage/src/sqlite-adapter.ts +0 -1099
  1222. package/packages/storage/tsconfig.json +0 -21
  1223. package/packages/storage/vitest.config.ts +0 -9
  1224. package/packages/wrapper/dist/__fixtures__/claude-outputs.d.ts +0 -49
  1225. package/packages/wrapper/dist/__fixtures__/claude-outputs.d.ts.map +0 -1
  1226. package/packages/wrapper/dist/__fixtures__/claude-outputs.js +0 -443
  1227. package/packages/wrapper/dist/__fixtures__/claude-outputs.js.map +0 -1
  1228. package/packages/wrapper/dist/__fixtures__/codex-outputs.d.ts +0 -9
  1229. package/packages/wrapper/dist/__fixtures__/codex-outputs.d.ts.map +0 -1
  1230. package/packages/wrapper/dist/__fixtures__/codex-outputs.js +0 -94
  1231. package/packages/wrapper/dist/__fixtures__/codex-outputs.js.map +0 -1
  1232. package/packages/wrapper/dist/__fixtures__/gemini-outputs.d.ts +0 -19
  1233. package/packages/wrapper/dist/__fixtures__/gemini-outputs.d.ts.map +0 -1
  1234. package/packages/wrapper/dist/__fixtures__/gemini-outputs.js +0 -144
  1235. package/packages/wrapper/dist/__fixtures__/gemini-outputs.js.map +0 -1
  1236. package/packages/wrapper/dist/__fixtures__/index.d.ts +0 -68
  1237. package/packages/wrapper/dist/__fixtures__/index.d.ts.map +0 -1
  1238. package/packages/wrapper/dist/__fixtures__/index.js +0 -44
  1239. package/packages/wrapper/dist/__fixtures__/index.js.map +0 -1
  1240. package/packages/wrapper/dist/auth-detection.d.ts +0 -49
  1241. package/packages/wrapper/dist/auth-detection.d.ts.map +0 -1
  1242. package/packages/wrapper/dist/auth-detection.js +0 -199
  1243. package/packages/wrapper/dist/auth-detection.js.map +0 -1
  1244. package/packages/wrapper/dist/base-wrapper.d.ts +0 -254
  1245. package/packages/wrapper/dist/base-wrapper.d.ts.map +0 -1
  1246. package/packages/wrapper/dist/base-wrapper.js +0 -664
  1247. package/packages/wrapper/dist/base-wrapper.js.map +0 -1
  1248. package/packages/wrapper/dist/client.d.ts +0 -291
  1249. package/packages/wrapper/dist/client.d.ts.map +0 -1
  1250. package/packages/wrapper/dist/client.js +0 -926
  1251. package/packages/wrapper/dist/client.js.map +0 -1
  1252. package/packages/wrapper/dist/id-generator.d.ts +0 -35
  1253. package/packages/wrapper/dist/id-generator.d.ts.map +0 -1
  1254. package/packages/wrapper/dist/id-generator.js +0 -60
  1255. package/packages/wrapper/dist/id-generator.js.map +0 -1
  1256. package/packages/wrapper/dist/idle-detector.d.ts +0 -114
  1257. package/packages/wrapper/dist/idle-detector.d.ts.map +0 -1
  1258. package/packages/wrapper/dist/idle-detector.js +0 -317
  1259. package/packages/wrapper/dist/idle-detector.js.map +0 -1
  1260. package/packages/wrapper/dist/inbox.d.ts +0 -37
  1261. package/packages/wrapper/dist/inbox.d.ts.map +0 -1
  1262. package/packages/wrapper/dist/inbox.js +0 -73
  1263. package/packages/wrapper/dist/inbox.js.map +0 -1
  1264. package/packages/wrapper/dist/index.d.ts +0 -40
  1265. package/packages/wrapper/dist/index.d.ts.map +0 -1
  1266. package/packages/wrapper/dist/index.js +0 -53
  1267. package/packages/wrapper/dist/index.js.map +0 -1
  1268. package/packages/wrapper/dist/opencode-api.d.ts +0 -106
  1269. package/packages/wrapper/dist/opencode-api.d.ts.map +0 -1
  1270. package/packages/wrapper/dist/opencode-api.js +0 -219
  1271. package/packages/wrapper/dist/opencode-api.js.map +0 -1
  1272. package/packages/wrapper/dist/opencode-wrapper.d.ts +0 -161
  1273. package/packages/wrapper/dist/opencode-wrapper.d.ts.map +0 -1
  1274. package/packages/wrapper/dist/opencode-wrapper.js +0 -438
  1275. package/packages/wrapper/dist/opencode-wrapper.js.map +0 -1
  1276. package/packages/wrapper/dist/parser.d.ts +0 -236
  1277. package/packages/wrapper/dist/parser.d.ts.map +0 -1
  1278. package/packages/wrapper/dist/parser.js +0 -1238
  1279. package/packages/wrapper/dist/parser.js.map +0 -1
  1280. package/packages/wrapper/dist/prompt-composer.d.ts +0 -67
  1281. package/packages/wrapper/dist/prompt-composer.d.ts.map +0 -1
  1282. package/packages/wrapper/dist/prompt-composer.js +0 -168
  1283. package/packages/wrapper/dist/prompt-composer.js.map +0 -1
  1284. package/packages/wrapper/dist/relay-pty-orchestrator.d.ts +0 -486
  1285. package/packages/wrapper/dist/relay-pty-orchestrator.d.ts.map +0 -1
  1286. package/packages/wrapper/dist/relay-pty-orchestrator.js +0 -2550
  1287. package/packages/wrapper/dist/relay-pty-orchestrator.js.map +0 -1
  1288. package/packages/wrapper/dist/shared.d.ts +0 -262
  1289. package/packages/wrapper/dist/shared.d.ts.map +0 -1
  1290. package/packages/wrapper/dist/shared.js +0 -507
  1291. package/packages/wrapper/dist/shared.js.map +0 -1
  1292. package/packages/wrapper/dist/stuck-detector.d.ts +0 -161
  1293. package/packages/wrapper/dist/stuck-detector.d.ts.map +0 -1
  1294. package/packages/wrapper/dist/stuck-detector.js +0 -402
  1295. package/packages/wrapper/dist/stuck-detector.js.map +0 -1
  1296. package/packages/wrapper/dist/tmux-resolver.d.ts +0 -55
  1297. package/packages/wrapper/dist/tmux-resolver.d.ts.map +0 -1
  1298. package/packages/wrapper/dist/tmux-resolver.js +0 -175
  1299. package/packages/wrapper/dist/tmux-resolver.js.map +0 -1
  1300. package/packages/wrapper/dist/tmux-wrapper.d.ts +0 -352
  1301. package/packages/wrapper/dist/tmux-wrapper.d.ts.map +0 -1
  1302. package/packages/wrapper/dist/tmux-wrapper.js +0 -1816
  1303. package/packages/wrapper/dist/tmux-wrapper.js.map +0 -1
  1304. package/packages/wrapper/dist/trajectory-integration.d.ts +0 -292
  1305. package/packages/wrapper/dist/trajectory-integration.d.ts.map +0 -1
  1306. package/packages/wrapper/dist/trajectory-integration.js +0 -979
  1307. package/packages/wrapper/dist/trajectory-integration.js.map +0 -1
  1308. package/packages/wrapper/dist/wrapper-events.d.ts +0 -489
  1309. package/packages/wrapper/dist/wrapper-events.d.ts.map +0 -1
  1310. package/packages/wrapper/dist/wrapper-events.js +0 -252
  1311. package/packages/wrapper/dist/wrapper-events.js.map +0 -1
  1312. package/packages/wrapper/dist/wrapper-types.d.ts +0 -41
  1313. package/packages/wrapper/dist/wrapper-types.d.ts.map +0 -1
  1314. package/packages/wrapper/dist/wrapper-types.js +0 -7
  1315. package/packages/wrapper/dist/wrapper-types.js.map +0 -1
  1316. package/packages/wrapper/package.json +0 -60
  1317. package/packages/wrapper/src/__fixtures__/claude-outputs.ts +0 -471
  1318. package/packages/wrapper/src/__fixtures__/codex-outputs.ts +0 -99
  1319. package/packages/wrapper/src/__fixtures__/gemini-outputs.ts +0 -151
  1320. package/packages/wrapper/src/__fixtures__/index.ts +0 -47
  1321. package/packages/wrapper/src/auth-detection.ts +0 -244
  1322. package/packages/wrapper/src/base-wrapper.test.ts +0 -589
  1323. package/packages/wrapper/src/base-wrapper.ts +0 -841
  1324. package/packages/wrapper/src/client.test.ts +0 -351
  1325. package/packages/wrapper/src/client.ts +0 -1166
  1326. package/packages/wrapper/src/id-generator.test.ts +0 -71
  1327. package/packages/wrapper/src/id-generator.ts +0 -69
  1328. package/packages/wrapper/src/idle-detector.test.ts +0 -418
  1329. package/packages/wrapper/src/idle-detector.ts +0 -384
  1330. package/packages/wrapper/src/inbox.test.ts +0 -233
  1331. package/packages/wrapper/src/inbox.ts +0 -89
  1332. package/packages/wrapper/src/index.ts +0 -199
  1333. package/packages/wrapper/src/opencode-api.test.ts +0 -292
  1334. package/packages/wrapper/src/opencode-api.ts +0 -285
  1335. package/packages/wrapper/src/opencode-wrapper.ts +0 -541
  1336. package/packages/wrapper/src/parser.regression.test.ts +0 -251
  1337. package/packages/wrapper/src/parser.test.ts +0 -1359
  1338. package/packages/wrapper/src/parser.ts +0 -1477
  1339. package/packages/wrapper/src/prompt-composer.test.ts +0 -219
  1340. package/packages/wrapper/src/prompt-composer.ts +0 -231
  1341. package/packages/wrapper/src/relay-pty-orchestrator.test.ts +0 -1386
  1342. package/packages/wrapper/src/relay-pty-orchestrator.ts +0 -3041
  1343. package/packages/wrapper/src/shared.test.ts +0 -467
  1344. package/packages/wrapper/src/shared.ts +0 -652
  1345. package/packages/wrapper/src/stuck-detector.test.ts +0 -303
  1346. package/packages/wrapper/src/stuck-detector.ts +0 -511
  1347. package/packages/wrapper/src/tmux-resolver.test.ts +0 -104
  1348. package/packages/wrapper/src/tmux-resolver.ts +0 -207
  1349. package/packages/wrapper/src/tmux-wrapper.test.ts +0 -316
  1350. package/packages/wrapper/src/tmux-wrapper.ts +0 -2095
  1351. package/packages/wrapper/src/trajectory-detection.test.ts +0 -151
  1352. package/packages/wrapper/src/trajectory-integration.ts +0 -1261
  1353. package/packages/wrapper/src/wrapper-events.ts +0 -395
  1354. package/packages/wrapper/src/wrapper-types.ts +0 -45
  1355. package/packages/wrapper/tsconfig.json +0 -19
  1356. package/packages/wrapper/vitest.config.ts +0 -9
  1357. /package/packages/{broker-sdk → sdk}/dist/__tests__/facade.test.d.ts +0 -0
  1358. /package/packages/{broker-sdk → sdk}/dist/__tests__/facade.test.d.ts.map +0 -0
  1359. /package/packages/{broker-sdk → sdk}/dist/__tests__/integration.test.d.ts +0 -0
  1360. /package/packages/{broker-sdk → sdk}/dist/__tests__/integration.test.d.ts.map +0 -0
  1361. /package/packages/{broker-sdk → sdk}/dist/__tests__/quickstart.test.d.ts +0 -0
  1362. /package/packages/{broker-sdk → sdk}/dist/__tests__/quickstart.test.d.ts.map +0 -0
  1363. /package/packages/{broker-sdk → sdk}/dist/__tests__/unit.test.d.ts +0 -0
  1364. /package/packages/{broker-sdk → sdk}/dist/__tests__/unit.test.d.ts.map +0 -0
  1365. /package/packages/{broker-sdk → sdk}/dist/browser.d.ts +0 -0
  1366. /package/packages/{broker-sdk → sdk}/dist/browser.d.ts.map +0 -0
  1367. /package/packages/{broker-sdk → sdk}/dist/browser.js +0 -0
  1368. /package/packages/{broker-sdk → sdk}/dist/browser.js.map +0 -0
  1369. /package/packages/{broker-sdk → sdk}/dist/consensus-helpers.d.ts +0 -0
  1370. /package/packages/{broker-sdk → sdk}/dist/consensus-helpers.d.ts.map +0 -0
  1371. /package/packages/{broker-sdk → sdk}/dist/consensus-helpers.js +0 -0
  1372. /package/packages/{broker-sdk → sdk}/dist/consensus-helpers.js.map +0 -0
  1373. /package/packages/{broker-sdk → sdk}/dist/consensus.d.ts +0 -0
  1374. /package/packages/{broker-sdk → sdk}/dist/consensus.d.ts.map +0 -0
  1375. /package/packages/{broker-sdk → sdk}/dist/consensus.js +0 -0
  1376. /package/packages/{broker-sdk → sdk}/dist/consensus.js.map +0 -0
  1377. /package/packages/{broker-sdk → sdk}/dist/examples/demo.d.ts +0 -0
  1378. /package/packages/{broker-sdk → sdk}/dist/examples/demo.d.ts.map +0 -0
  1379. /package/packages/{broker-sdk → sdk}/dist/examples/demo.js +0 -0
  1380. /package/packages/{broker-sdk → sdk}/dist/examples/demo.js.map +0 -0
  1381. /package/packages/{broker-sdk → sdk}/dist/examples/example.d.ts +0 -0
  1382. /package/packages/{broker-sdk → sdk}/dist/examples/example.d.ts.map +0 -0
  1383. /package/packages/{broker-sdk → sdk}/dist/examples/example.js +0 -0
  1384. /package/packages/{broker-sdk → sdk}/dist/examples/example.js.map +0 -0
  1385. /package/packages/{broker-sdk → sdk}/dist/examples/quickstart.d.ts +0 -0
  1386. /package/packages/{broker-sdk → sdk}/dist/examples/quickstart.d.ts.map +0 -0
  1387. /package/packages/{broker-sdk → sdk}/dist/examples/quickstart.js +0 -0
  1388. /package/packages/{broker-sdk → sdk}/dist/examples/quickstart.js.map +0 -0
  1389. /package/packages/{broker-sdk → sdk}/dist/examples/ralph-loop.d.ts +0 -0
  1390. /package/packages/{broker-sdk → sdk}/dist/examples/ralph-loop.d.ts.map +0 -0
  1391. /package/packages/{broker-sdk → sdk}/dist/examples/ralph-loop.js +0 -0
  1392. /package/packages/{broker-sdk → sdk}/dist/examples/ralph-loop.js.map +0 -0
  1393. /package/packages/{broker-sdk → sdk}/dist/protocol.js +0 -0
  1394. /package/packages/{broker-sdk → sdk}/dist/protocol.js.map +0 -0
  1395. /package/packages/{broker-sdk → sdk}/dist/pty.d.ts +0 -0
  1396. /package/packages/{broker-sdk → sdk}/dist/shadow.js +0 -0
  1397. /package/packages/{broker-sdk → sdk}/dist/workflows/barrier.d.ts +0 -0
  1398. /package/packages/{broker-sdk → sdk}/dist/workflows/barrier.d.ts.map +0 -0
  1399. /package/packages/{broker-sdk → sdk}/dist/workflows/barrier.js +0 -0
  1400. /package/packages/{broker-sdk → sdk}/dist/workflows/barrier.js.map +0 -0
  1401. /package/packages/{broker-sdk → sdk}/dist/workflows/memory-db.d.ts +0 -0
  1402. /package/packages/{broker-sdk → sdk}/dist/workflows/memory-db.d.ts.map +0 -0
  1403. /package/packages/{broker-sdk → sdk}/dist/workflows/memory-db.js +0 -0
  1404. /package/packages/{broker-sdk → sdk}/dist/workflows/memory-db.js.map +0 -0
  1405. /package/packages/{broker-sdk → sdk}/dist/workflows/state.d.ts +0 -0
  1406. /package/packages/{broker-sdk → sdk}/dist/workflows/state.d.ts.map +0 -0
  1407. /package/packages/{broker-sdk → sdk}/dist/workflows/state.js +0 -0
  1408. /package/packages/{broker-sdk → sdk}/dist/workflows/state.js.map +0 -0
  1409. /package/packages/{broker-sdk → sdk}/src/__tests__/workflow-trajectory.test.ts +0 -0
  1410. /package/packages/{broker-sdk → sdk}/src/browser.ts +0 -0
  1411. /package/packages/{broker-sdk → sdk}/src/consensus-helpers.ts +0 -0
  1412. /package/packages/{broker-sdk → sdk}/src/consensus.ts +0 -0
  1413. /package/packages/{broker-sdk → sdk}/src/examples/demo.ts +0 -0
  1414. /package/packages/{broker-sdk → sdk}/src/examples/example.ts +0 -0
  1415. /package/packages/{broker-sdk → sdk}/src/examples/quickstart.ts +0 -0
  1416. /package/packages/{broker-sdk → sdk}/src/examples/ralph-loop.ts +0 -0
  1417. /package/packages/{broker-sdk → sdk}/src/examples/sample-prd.json +0 -0
  1418. /package/packages/{broker-sdk → sdk}/src/workflows/barrier.ts +0 -0
  1419. /package/packages/{broker-sdk → sdk}/src/workflows/memory-db.ts +0 -0
  1420. /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
- });