agent-relay 2.3.13 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1421) hide show
  1. package/README.md +42 -176
  2. package/bin/agent-relay-broker-darwin-arm64 +0 -0
  3. package/bin/agent-relay-broker-darwin-x64 +0 -0
  4. package/bin/agent-relay-broker-linux-arm64 +0 -0
  5. package/bin/agent-relay-broker-linux-x64 +0 -0
  6. package/dist/index.cjs +50288 -63371
  7. package/dist/src/cli/bootstrap.d.ts +6 -0
  8. package/dist/src/cli/bootstrap.d.ts.map +1 -0
  9. package/dist/src/cli/bootstrap.js +109 -0
  10. package/dist/src/cli/bootstrap.js.map +1 -0
  11. package/dist/src/cli/commands/agent-management.d.ts +51 -0
  12. package/dist/src/cli/commands/agent-management.d.ts.map +1 -0
  13. package/dist/src/cli/commands/agent-management.js +290 -0
  14. package/dist/src/cli/commands/agent-management.js.map +1 -0
  15. package/dist/src/cli/commands/auth.d.ts +9 -0
  16. package/dist/src/cli/commands/auth.d.ts.map +1 -0
  17. package/dist/src/cli/commands/auth.js +33 -0
  18. package/dist/src/cli/commands/auth.js.map +1 -0
  19. package/dist/src/cli/commands/cloud.d.ts +18 -0
  20. package/dist/src/cli/commands/cloud.d.ts.map +1 -0
  21. package/dist/src/cli/commands/cloud.js +392 -0
  22. package/dist/src/cli/commands/cloud.js.map +1 -0
  23. package/dist/src/cli/commands/core.d.ts +107 -0
  24. package/dist/src/cli/commands/core.d.ts.map +1 -0
  25. package/dist/src/cli/commands/core.js +299 -0
  26. package/dist/src/cli/commands/core.js.map +1 -0
  27. package/dist/src/cli/commands/doctor.d.ts +1 -1
  28. package/dist/src/cli/commands/doctor.d.ts.map +1 -1
  29. package/dist/src/cli/commands/doctor.js +1 -485
  30. package/dist/src/cli/commands/doctor.js.map +1 -1
  31. package/dist/src/cli/commands/messaging.d.ts +61 -0
  32. package/dist/src/cli/commands/messaging.d.ts.map +1 -0
  33. package/dist/src/cli/commands/messaging.js +213 -0
  34. package/dist/src/cli/commands/messaging.js.map +1 -0
  35. package/dist/src/cli/commands/monitoring.d.ts +57 -0
  36. package/dist/src/cli/commands/monitoring.d.ts.map +1 -0
  37. package/dist/src/cli/commands/monitoring.js +350 -0
  38. package/dist/src/cli/commands/monitoring.js.map +1 -0
  39. package/dist/src/cli/commands/setup.d.ts +29 -0
  40. package/dist/src/cli/commands/setup.d.ts.map +1 -0
  41. package/dist/src/cli/commands/setup.js +324 -0
  42. package/dist/src/cli/commands/setup.js.map +1 -0
  43. package/dist/src/cli/commands/swarm.d.ts +3 -0
  44. package/dist/src/cli/commands/swarm.d.ts.map +1 -0
  45. package/dist/src/cli/commands/swarm.js +108 -0
  46. package/dist/src/cli/commands/swarm.js.map +1 -0
  47. package/dist/src/cli/index.d.ts +1 -28
  48. package/dist/src/cli/index.d.ts.map +1 -1
  49. package/dist/src/cli/index.js +4 -4936
  50. package/dist/src/cli/index.js.map +1 -1
  51. package/dist/src/cli/lib/agent-management-listing.d.ts +39 -0
  52. package/dist/src/cli/lib/agent-management-listing.d.ts.map +1 -0
  53. package/dist/src/cli/lib/agent-management-listing.js +253 -0
  54. package/dist/src/cli/lib/agent-management-listing.js.map +1 -0
  55. package/dist/src/cli/lib/auth-ssh.d.ts +48 -0
  56. package/dist/src/cli/lib/auth-ssh.d.ts.map +1 -0
  57. package/dist/src/cli/lib/auth-ssh.js +572 -0
  58. package/dist/src/cli/lib/auth-ssh.js.map +1 -0
  59. package/dist/src/cli/lib/bridge.d.ts +8 -0
  60. package/dist/src/cli/lib/bridge.d.ts.map +1 -0
  61. package/dist/src/cli/lib/bridge.js +100 -0
  62. package/dist/src/cli/lib/bridge.js.map +1 -0
  63. package/dist/src/cli/lib/broker-lifecycle.d.ts +20 -0
  64. package/dist/src/cli/lib/broker-lifecycle.d.ts.map +1 -0
  65. package/dist/src/cli/lib/broker-lifecycle.js +843 -0
  66. package/dist/src/cli/lib/broker-lifecycle.js.map +1 -0
  67. package/dist/src/cli/lib/client-factory.d.ts +24 -0
  68. package/dist/src/cli/lib/client-factory.d.ts.map +1 -0
  69. package/dist/src/cli/lib/client-factory.js +20 -0
  70. package/dist/src/cli/lib/client-factory.js.map +1 -0
  71. package/dist/src/cli/lib/cloud-client.d.ts +39 -0
  72. package/dist/src/cli/lib/cloud-client.d.ts.map +1 -0
  73. package/dist/src/cli/lib/cloud-client.js +120 -0
  74. package/dist/src/cli/lib/cloud-client.js.map +1 -0
  75. package/dist/src/cli/lib/core-maintenance.d.ts +13 -0
  76. package/dist/src/cli/lib/core-maintenance.d.ts.map +1 -0
  77. package/dist/src/cli/lib/core-maintenance.js +250 -0
  78. package/dist/src/cli/lib/core-maintenance.js.map +1 -0
  79. package/dist/src/cli/lib/doctor.d.ts +2 -0
  80. package/dist/src/cli/lib/doctor.d.ts.map +1 -0
  81. package/dist/src/cli/lib/doctor.js +484 -0
  82. package/dist/src/cli/lib/doctor.js.map +1 -0
  83. package/dist/src/cli/lib/formatting.d.ts +8 -0
  84. package/dist/src/cli/lib/formatting.d.ts.map +1 -0
  85. package/dist/src/cli/lib/formatting.js +48 -0
  86. package/dist/src/cli/lib/formatting.js.map +1 -0
  87. package/dist/src/cli/lib/index.d.ts +5 -0
  88. package/dist/src/cli/lib/index.d.ts.map +1 -0
  89. package/dist/src/cli/lib/index.js +5 -0
  90. package/dist/src/cli/lib/index.js.map +1 -0
  91. package/dist/src/cli/lib/jsonc.d.ts +8 -0
  92. package/dist/src/cli/lib/jsonc.d.ts.map +1 -0
  93. package/dist/src/cli/lib/jsonc.js +88 -0
  94. package/dist/src/cli/lib/jsonc.js.map +1 -0
  95. package/dist/src/cli/lib/monitoring-health.d.ts +32 -0
  96. package/dist/src/cli/lib/monitoring-health.d.ts.map +1 -0
  97. package/dist/src/cli/lib/monitoring-health.js +2 -0
  98. package/dist/src/cli/lib/monitoring-health.js.map +1 -0
  99. package/dist/src/cli/lib/paths.d.ts +2 -0
  100. package/dist/src/cli/lib/paths.d.ts.map +1 -0
  101. package/dist/src/cli/lib/paths.js +5 -0
  102. package/dist/src/cli/lib/paths.js.map +1 -0
  103. package/dist/src/index.d.ts +1 -5
  104. package/dist/src/index.d.ts.map +1 -1
  105. package/dist/src/index.js +1 -5
  106. package/dist/src/index.js.map +1 -1
  107. package/install.sh +0 -30
  108. package/package.json +84 -98
  109. package/packages/acp-bridge/README.md +8 -8
  110. package/packages/acp-bridge/dist/acp-agent.d.ts +8 -7
  111. package/packages/acp-bridge/dist/acp-agent.d.ts.map +1 -1
  112. package/packages/acp-bridge/dist/acp-agent.js +118 -143
  113. package/packages/acp-bridge/dist/acp-agent.js.map +1 -1
  114. package/packages/acp-bridge/dist/cli.d.ts +1 -1
  115. package/packages/acp-bridge/dist/cli.js +3 -3
  116. package/packages/acp-bridge/dist/index.d.ts +2 -2
  117. package/packages/acp-bridge/dist/index.d.ts.map +1 -1
  118. package/packages/acp-bridge/dist/index.js +1 -1
  119. package/packages/acp-bridge/dist/index.js.map +1 -1
  120. package/packages/acp-bridge/dist/types.d.ts +3 -3
  121. package/packages/acp-bridge/package.json +3 -3
  122. package/packages/acp-bridge/src/acp-agent.ts +123 -160
  123. package/packages/acp-bridge/src/cli.ts +3 -3
  124. package/packages/acp-bridge/src/index.ts +2 -2
  125. package/packages/acp-bridge/src/types.ts +3 -3
  126. package/packages/config/dist/bridge-config.d.ts +5 -5
  127. package/packages/config/dist/bridge-config.d.ts.map +1 -1
  128. package/packages/config/dist/bridge-config.js +16 -9
  129. package/packages/config/dist/bridge-config.js.map +1 -1
  130. package/packages/config/dist/cli-auth-config.d.ts +1 -1
  131. package/packages/config/dist/cli-auth-config.js +1 -1
  132. package/packages/config/dist/cli-registry.generated.d.ts +340 -0
  133. package/packages/config/dist/cli-registry.generated.d.ts.map +1 -0
  134. package/packages/config/dist/cli-registry.generated.js +297 -0
  135. package/packages/config/dist/cli-registry.generated.js.map +1 -0
  136. package/packages/config/dist/index.d.ts +1 -0
  137. package/packages/config/dist/index.d.ts.map +1 -1
  138. package/packages/config/dist/index.js +1 -0
  139. package/packages/config/dist/index.js.map +1 -1
  140. package/packages/config/dist/project-namespace.d.ts +9 -9
  141. package/packages/config/dist/project-namespace.js +3 -3
  142. package/packages/config/dist/relay-config.d.ts +1 -1
  143. package/packages/config/dist/relay-config.js +1 -1
  144. package/packages/config/dist/schemas.js +1 -1
  145. package/packages/config/dist/shadow-config.d.ts +2 -1
  146. package/packages/config/dist/shadow-config.d.ts.map +1 -1
  147. package/packages/config/dist/shadow-config.js.map +1 -1
  148. package/packages/config/package.json +2 -3
  149. package/packages/config/src/bridge-config.test.ts +20 -6
  150. package/packages/config/src/bridge-config.ts +20 -10
  151. package/packages/config/src/cli-auth-config.ts +1 -1
  152. package/packages/config/src/cli-registry.generated.ts +328 -0
  153. package/packages/config/src/index.ts +1 -0
  154. package/packages/config/src/project-namespace.ts +9 -9
  155. package/packages/config/src/relay-config.ts +1 -1
  156. package/packages/config/src/schemas.ts +1 -1
  157. package/packages/config/src/shadow-config.ts +8 -1
  158. package/packages/contracts/fixtures/error-fixtures.json +42 -0
  159. package/packages/contracts/fixtures/event-fixtures.json +161 -0
  160. package/packages/contracts/fixtures/health-fixtures.json +35 -0
  161. package/packages/contracts/fixtures/identity-fixtures.json +58 -0
  162. package/packages/contracts/fixtures/replay-fixtures.json +33 -0
  163. package/packages/hooks/dist/inbox-check/types.d.ts +2 -2
  164. package/packages/hooks/dist/types.d.ts +9 -3
  165. package/packages/hooks/dist/types.d.ts.map +1 -1
  166. package/packages/hooks/dist/types.js +1 -1
  167. package/packages/hooks/dist/types.js.map +1 -1
  168. package/packages/hooks/package.json +5 -5
  169. package/packages/hooks/src/inbox-check/types.ts +2 -2
  170. package/packages/hooks/src/types.ts +11 -3
  171. package/packages/memory/package.json +2 -2
  172. package/packages/policy/package.json +2 -2
  173. package/packages/sdk/.mcp.json +14 -0
  174. package/packages/sdk/.trajectories/active/traj_1771875803391_84ca57b2.json +50 -0
  175. package/packages/sdk/.trajectories/active/traj_1771891934534_06504121.json +50 -0
  176. package/packages/sdk/.trajectories/active/traj_1771891957929_211afc4e.json +50 -0
  177. package/packages/sdk/.trajectories/active/traj_1771891982509_38c84638.json +50 -0
  178. package/packages/sdk/.trajectories/completed/traj_1771875803188_cd6d181c.json +80 -0
  179. package/packages/sdk/.trajectories/completed/traj_1771875803204_f2aeb8c8.json +80 -0
  180. package/packages/sdk/.trajectories/completed/traj_1771875803210_d65f3f1a.json +80 -0
  181. package/packages/sdk/.trajectories/completed/traj_1771875803218_e454a25d.json +80 -0
  182. package/packages/sdk/.trajectories/completed/traj_1771875803223_d7a64815.json +80 -0
  183. package/packages/sdk/.trajectories/completed/traj_1771875803227_7e56da5b.json +80 -0
  184. package/packages/sdk/.trajectories/completed/traj_1771875803235_4fbf93b4.json +80 -0
  185. package/packages/sdk/.trajectories/completed/traj_1771875803243_47931c71.json +80 -0
  186. package/packages/sdk/.trajectories/completed/traj_1771875803258_3816f3fe.json +80 -0
  187. package/packages/sdk/.trajectories/completed/traj_1771875803268_8061140e.json +80 -0
  188. package/packages/sdk/.trajectories/completed/traj_1771875803326_ae6f9c78.json +80 -0
  189. package/packages/sdk/.trajectories/completed/traj_1771875808396_cbde0a6c.json +91 -0
  190. package/packages/sdk/.trajectories/completed/traj_1771875812026_aa2442bb.json +91 -0
  191. package/packages/sdk/.trajectories/completed/traj_1771875815431_c2c656c5.json +91 -0
  192. package/packages/sdk/.trajectories/completed/traj_1771875818645_3a4dbf02.json +91 -0
  193. package/packages/sdk/.trajectories/completed/traj_1771891934403_24923c03.json +80 -0
  194. package/packages/sdk/.trajectories/completed/traj_1771891934421_dca16e24.json +80 -0
  195. package/packages/sdk/.trajectories/completed/traj_1771891934430_057706f7.json +80 -0
  196. package/packages/sdk/.trajectories/completed/traj_1771891934442_faf97382.json +80 -0
  197. package/packages/sdk/.trajectories/completed/traj_1771891934454_5542ecd5.json +80 -0
  198. package/packages/sdk/.trajectories/completed/traj_1771891934464_12202a08.json +80 -0
  199. package/packages/sdk/.trajectories/completed/traj_1771891934487_94378275.json +80 -0
  200. package/packages/sdk/.trajectories/completed/traj_1771891934503_ca728c13.json +80 -0
  201. package/packages/sdk/.trajectories/completed/traj_1771891934519_100af69a.json +80 -0
  202. package/packages/sdk/.trajectories/completed/traj_1771891934536_62ad39d9.json +80 -0
  203. package/packages/sdk/.trajectories/completed/traj_1771891934553_d6798a52.json +80 -0
  204. package/packages/sdk/.trajectories/completed/traj_1771891939537_541c8096.json +91 -0
  205. package/packages/sdk/.trajectories/completed/traj_1771891942985_36ab9a4d.json +91 -0
  206. package/packages/sdk/.trajectories/completed/traj_1771891946453_e8a6e05f.json +91 -0
  207. package/packages/sdk/.trajectories/completed/traj_1771891949838_5de0de84.json +91 -0
  208. package/packages/sdk/.trajectories/completed/traj_1771891957807_0ecfb4f4.json +80 -0
  209. package/packages/sdk/.trajectories/completed/traj_1771891957827_c4539239.json +80 -0
  210. package/packages/sdk/.trajectories/completed/traj_1771891957836_91168b48.json +80 -0
  211. package/packages/sdk/.trajectories/completed/traj_1771891957848_8c5cad0b.json +80 -0
  212. package/packages/sdk/.trajectories/completed/traj_1771891957857_0986b293.json +80 -0
  213. package/packages/sdk/.trajectories/completed/traj_1771891957872_8a3113af.json +80 -0
  214. package/packages/sdk/.trajectories/completed/traj_1771891957884_0bb85208.json +80 -0
  215. package/packages/sdk/.trajectories/completed/traj_1771891957892_86c75e2e.json +80 -0
  216. package/packages/sdk/.trajectories/completed/traj_1771891957907_98ca0e6f.json +80 -0
  217. package/packages/sdk/.trajectories/completed/traj_1771891957918_d9091231.json +80 -0
  218. package/packages/sdk/.trajectories/completed/traj_1771891957931_dcaf77ed.json +80 -0
  219. package/packages/sdk/.trajectories/completed/traj_1771891962931_eb1fdee2.json +91 -0
  220. package/packages/sdk/.trajectories/completed/traj_1771891966262_9061a93f.json +91 -0
  221. package/packages/sdk/.trajectories/completed/traj_1771891969915_1adaba19.json +91 -0
  222. package/packages/sdk/.trajectories/completed/traj_1771891973588_f08b79e9.json +91 -0
  223. package/packages/sdk/.trajectories/completed/traj_1771891982421_f1985bce.json +80 -0
  224. package/packages/sdk/.trajectories/completed/traj_1771891982432_e7a84163.json +80 -0
  225. package/packages/sdk/.trajectories/completed/traj_1771891982447_369b842a.json +80 -0
  226. package/packages/sdk/.trajectories/completed/traj_1771891982469_5fc45199.json +80 -0
  227. package/packages/sdk/.trajectories/completed/traj_1771891982495_454c7cb3.json +80 -0
  228. package/packages/sdk/.trajectories/completed/traj_1771891982514_08098e03.json +80 -0
  229. package/packages/sdk/.trajectories/completed/traj_1771891982526_b351d778.json +80 -0
  230. package/packages/sdk/.trajectories/completed/traj_1771891982533_fa542d83.json +80 -0
  231. package/packages/sdk/.trajectories/completed/traj_1771891982540_18ab24dc.json +80 -0
  232. package/packages/sdk/.trajectories/completed/traj_1771891982544_5b4fa163.json +80 -0
  233. package/packages/sdk/.trajectories/completed/traj_1771891982548_c13f089a.json +80 -0
  234. package/packages/sdk/.trajectories/completed/traj_1771891987510_23f6da1f.json +91 -0
  235. package/packages/sdk/.trajectories/completed/traj_1771891991466_912c2e04.json +91 -0
  236. package/packages/sdk/.trajectories/completed/traj_1771891994891_60604be2.json +91 -0
  237. package/packages/sdk/.trajectories/completed/traj_1771891998370_cfaf9b8b.json +91 -0
  238. package/packages/sdk/README.md +68 -838
  239. package/packages/sdk/bin/agent-relay-broker +0 -0
  240. package/packages/sdk/dist/__tests__/contract-fixtures.test.d.ts +2 -0
  241. package/packages/sdk/dist/__tests__/contract-fixtures.test.d.ts.map +1 -0
  242. package/packages/sdk/dist/__tests__/contract-fixtures.test.js +85 -0
  243. package/packages/sdk/dist/__tests__/contract-fixtures.test.js.map +1 -0
  244. package/packages/sdk/dist/__tests__/facade.test.js +305 -0
  245. package/packages/sdk/dist/__tests__/facade.test.js.map +1 -0
  246. package/packages/sdk/dist/__tests__/integration.test.js +169 -0
  247. package/packages/sdk/dist/__tests__/integration.test.js.map +1 -0
  248. package/packages/sdk/dist/__tests__/pty.test.d.ts +2 -0
  249. package/packages/sdk/dist/__tests__/pty.test.d.ts.map +1 -0
  250. package/packages/sdk/dist/__tests__/pty.test.js +20 -0
  251. package/packages/sdk/dist/__tests__/pty.test.js.map +1 -0
  252. package/packages/sdk/dist/__tests__/quickstart.test.js +176 -0
  253. package/packages/sdk/dist/__tests__/quickstart.test.js.map +1 -0
  254. package/packages/sdk/dist/__tests__/spawn-from-env.test.d.ts +2 -0
  255. package/packages/sdk/dist/__tests__/spawn-from-env.test.d.ts.map +1 -0
  256. package/packages/sdk/dist/__tests__/spawn-from-env.test.js +206 -0
  257. package/packages/sdk/dist/__tests__/spawn-from-env.test.js.map +1 -0
  258. package/packages/sdk/dist/__tests__/unit.test.js +347 -0
  259. package/packages/sdk/dist/__tests__/unit.test.js.map +1 -0
  260. package/packages/sdk/dist/client.d.ts +140 -526
  261. package/packages/sdk/dist/client.d.ts.map +1 -1
  262. package/packages/sdk/dist/client.js +416 -1509
  263. package/packages/sdk/dist/client.js.map +1 -1
  264. package/packages/sdk/dist/examples/workflow-superiority.d.ts +32 -0
  265. package/packages/sdk/dist/examples/workflow-superiority.d.ts.map +1 -0
  266. package/packages/sdk/dist/examples/workflow-superiority.js +1421 -0
  267. package/packages/sdk/dist/examples/workflow-superiority.js.map +1 -0
  268. package/packages/sdk/dist/index.d.ts +13 -20
  269. package/packages/sdk/dist/index.d.ts.map +1 -1
  270. package/packages/sdk/dist/index.js +12 -26
  271. package/packages/sdk/dist/index.js.map +1 -1
  272. package/packages/sdk/dist/logs.d.ts +70 -25
  273. package/packages/sdk/dist/logs.d.ts.map +1 -1
  274. package/packages/sdk/dist/logs.js +238 -42
  275. package/packages/sdk/dist/logs.js.map +1 -1
  276. package/packages/sdk/dist/models.d.ts +9 -0
  277. package/packages/sdk/dist/models.d.ts.map +1 -0
  278. package/packages/sdk/dist/models.js +17 -0
  279. package/packages/sdk/dist/models.js.map +1 -0
  280. package/packages/sdk/dist/protocol.d.ts +366 -0
  281. package/packages/sdk/dist/protocol.d.ts.map +1 -0
  282. package/packages/sdk/dist/pty.d.ts.map +1 -0
  283. package/packages/sdk/dist/pty.js +26 -0
  284. package/packages/sdk/dist/pty.js.map +1 -0
  285. package/packages/sdk/dist/relay-adapter.d.ts +139 -0
  286. package/packages/sdk/dist/relay-adapter.d.ts.map +1 -0
  287. package/packages/sdk/dist/relay-adapter.js +210 -0
  288. package/packages/sdk/dist/relay-adapter.js.map +1 -0
  289. package/packages/sdk/dist/relay.d.ts +304 -0
  290. package/packages/sdk/dist/relay.d.ts.map +1 -0
  291. package/packages/sdk/dist/relay.js +910 -0
  292. package/packages/sdk/dist/relay.js.map +1 -0
  293. package/packages/sdk/dist/shadow.d.ts +101 -0
  294. package/packages/sdk/dist/shadow.d.ts.map +1 -0
  295. package/packages/sdk/dist/shadow.js.map +1 -0
  296. package/packages/sdk/dist/spawn-from-env.d.ts +77 -0
  297. package/packages/sdk/dist/spawn-from-env.d.ts.map +1 -0
  298. package/packages/sdk/dist/spawn-from-env.js +172 -0
  299. package/packages/sdk/dist/spawn-from-env.js.map +1 -0
  300. package/packages/sdk/dist/workflows/builder.d.ts +114 -0
  301. package/packages/sdk/dist/workflows/builder.d.ts.map +1 -0
  302. package/packages/sdk/dist/workflows/builder.js +201 -0
  303. package/packages/sdk/dist/workflows/builder.js.map +1 -0
  304. package/packages/sdk/dist/workflows/cli.d.ts +11 -0
  305. package/packages/sdk/dist/workflows/cli.d.ts.map +1 -0
  306. package/packages/sdk/dist/workflows/cli.js +144 -0
  307. package/packages/sdk/dist/workflows/cli.js.map +1 -0
  308. package/packages/sdk/dist/workflows/coordinator.d.ts +73 -0
  309. package/packages/sdk/dist/workflows/coordinator.d.ts.map +1 -0
  310. package/packages/sdk/dist/workflows/coordinator.js +647 -0
  311. package/packages/sdk/dist/workflows/coordinator.js.map +1 -0
  312. package/packages/sdk/dist/workflows/custom-steps.d.ts +73 -0
  313. package/packages/sdk/dist/workflows/custom-steps.d.ts.map +1 -0
  314. package/packages/sdk/dist/workflows/custom-steps.js +321 -0
  315. package/packages/sdk/dist/workflows/custom-steps.js.map +1 -0
  316. package/packages/sdk/dist/workflows/dry-run-format.d.ts +6 -0
  317. package/packages/sdk/dist/workflows/dry-run-format.d.ts.map +1 -0
  318. package/packages/sdk/dist/workflows/dry-run-format.js +68 -0
  319. package/packages/sdk/dist/workflows/dry-run-format.js.map +1 -0
  320. package/packages/sdk/dist/workflows/file-db.d.ts +33 -0
  321. package/packages/sdk/dist/workflows/file-db.d.ts.map +1 -0
  322. package/packages/sdk/dist/workflows/file-db.js +108 -0
  323. package/packages/sdk/dist/workflows/file-db.js.map +1 -0
  324. package/packages/sdk/dist/workflows/index.d.ts +15 -0
  325. package/packages/sdk/dist/workflows/index.d.ts.map +1 -0
  326. package/packages/sdk/dist/workflows/index.js +15 -0
  327. package/packages/sdk/dist/workflows/index.js.map +1 -0
  328. package/packages/sdk/dist/workflows/run.d.ts +38 -0
  329. package/packages/sdk/dist/workflows/run.d.ts.map +1 -0
  330. package/packages/sdk/dist/workflows/run.js +25 -0
  331. package/packages/sdk/dist/workflows/run.js.map +1 -0
  332. package/packages/sdk/dist/workflows/runner.d.ts +320 -0
  333. package/packages/sdk/dist/workflows/runner.d.ts.map +1 -0
  334. package/packages/sdk/dist/workflows/runner.js +2821 -0
  335. package/packages/sdk/dist/workflows/runner.js.map +1 -0
  336. package/packages/sdk/dist/workflows/templates.d.ts +47 -0
  337. package/packages/sdk/dist/workflows/templates.d.ts.map +1 -0
  338. package/packages/sdk/dist/workflows/templates.js +405 -0
  339. package/packages/sdk/dist/workflows/templates.js.map +1 -0
  340. package/packages/sdk/dist/workflows/trajectory.d.ts +87 -0
  341. package/packages/sdk/dist/workflows/trajectory.d.ts.map +1 -0
  342. package/packages/sdk/dist/workflows/trajectory.js +441 -0
  343. package/packages/sdk/dist/workflows/trajectory.js.map +1 -0
  344. package/packages/sdk/dist/workflows/types.d.ts +306 -0
  345. package/packages/sdk/dist/workflows/types.d.ts.map +1 -0
  346. package/packages/sdk/dist/workflows/types.js +23 -0
  347. package/packages/sdk/dist/workflows/types.js.map +1 -0
  348. package/packages/sdk/dist/workflows/validator.d.ts +11 -0
  349. package/packages/sdk/dist/workflows/validator.d.ts.map +1 -0
  350. package/packages/sdk/dist/workflows/validator.js +128 -0
  351. package/packages/sdk/dist/workflows/validator.js.map +1 -0
  352. package/packages/sdk/package.json +59 -53
  353. package/packages/sdk/scripts/bundle-agent-relay.mjs +53 -0
  354. package/packages/sdk/src/__tests__/contract-fixtures.test.ts +122 -0
  355. package/packages/sdk/src/__tests__/error-scenarios.test.ts +682 -0
  356. package/packages/sdk/src/__tests__/facade.test.ts +364 -0
  357. package/packages/sdk/src/__tests__/idle-nudge.test.ts +438 -0
  358. package/packages/sdk/src/__tests__/integration.test.ts +204 -0
  359. package/packages/sdk/src/__tests__/orchestration-upgrades.test.ts +797 -0
  360. package/packages/sdk/src/__tests__/pty.test.ts +24 -0
  361. package/packages/sdk/src/__tests__/quickstart.test.ts +198 -0
  362. package/packages/sdk/src/__tests__/spawn-from-env.test.ts +282 -0
  363. package/packages/sdk/src/__tests__/swarm-coordinator.test.ts +909 -0
  364. package/packages/sdk/src/__tests__/unit.test.ts +435 -0
  365. package/packages/sdk/src/__tests__/workflow-runner.test.ts +489 -0
  366. package/packages/sdk/src/__tests__/yaml-validation.test.ts +890 -0
  367. package/packages/sdk/src/client.ts +514 -1912
  368. package/packages/sdk/src/examples/workflow-superiority.ts +1485 -0
  369. package/packages/sdk/src/examples/workflows/README.md +156 -0
  370. package/packages/sdk/src/examples/workflows/ralph-overnight.yaml +421 -0
  371. package/packages/sdk/src/examples/workflows/ralph-swarm.yaml +411 -0
  372. package/packages/sdk/src/examples/workflows/ralph-tdd.yaml +259 -0
  373. package/packages/sdk/src/index.ts +13 -116
  374. package/packages/sdk/src/logs.ts +282 -54
  375. package/packages/sdk/src/models.ts +36 -0
  376. package/packages/sdk/src/protocol.ts +385 -0
  377. package/packages/sdk/src/pty.ts +35 -0
  378. package/packages/sdk/src/relay-adapter.ts +316 -0
  379. package/packages/sdk/src/relay.ts +1147 -0
  380. package/packages/sdk/src/shadow.ts +228 -0
  381. package/packages/sdk/src/spawn-from-env.ts +245 -0
  382. package/packages/sdk/src/workflows/README.md +656 -0
  383. package/packages/sdk/src/workflows/builder.ts +278 -0
  384. package/packages/sdk/src/workflows/builtin-templates/bug-fix.yaml +135 -0
  385. package/packages/sdk/src/workflows/builtin-templates/code-review.yaml +133 -0
  386. package/packages/sdk/src/workflows/builtin-templates/competitive.yaml +103 -0
  387. package/packages/sdk/src/workflows/builtin-templates/documentation.yaml +120 -0
  388. package/packages/sdk/src/workflows/builtin-templates/feature-dev.yaml +142 -0
  389. package/packages/sdk/src/workflows/builtin-templates/refactor.yaml +141 -0
  390. package/packages/sdk/src/workflows/builtin-templates/review-loop.yaml +223 -0
  391. package/packages/sdk/src/workflows/builtin-templates/security-audit.yaml +129 -0
  392. package/packages/sdk/src/workflows/cli.ts +162 -0
  393. package/packages/sdk/src/workflows/coordinator.ts +842 -0
  394. package/packages/sdk/src/workflows/custom-steps.ts +450 -0
  395. package/packages/sdk/src/workflows/dry-run-format.ts +75 -0
  396. package/packages/sdk/src/workflows/file-db.ts +117 -0
  397. package/packages/sdk/src/workflows/index.ts +24 -0
  398. package/packages/sdk/src/workflows/run.ts +72 -0
  399. package/packages/sdk/src/workflows/runner.ts +3409 -0
  400. package/packages/sdk/src/workflows/schema.json +651 -0
  401. package/packages/sdk/src/workflows/templates.ts +552 -0
  402. package/packages/sdk/src/workflows/trajectory.ts +631 -0
  403. package/packages/sdk/src/workflows/types.ts +389 -0
  404. package/packages/sdk/src/workflows/validator.ts +151 -0
  405. package/packages/sdk/tsconfig.build.json +25 -0
  406. package/packages/sdk/tsconfig.json +17 -18
  407. package/packages/sdk/vitest.config.ts +1 -1
  408. package/packages/sdk-py/README.md +106 -21
  409. package/packages/sdk-py/agent_relay/__init__.py +21 -0
  410. package/packages/sdk-py/agent_relay/models.py +206 -0
  411. package/packages/sdk-py/pyproject.toml +2 -2
  412. package/packages/sdk-py/src/agent_relay/__init__.py +76 -0
  413. package/packages/sdk-py/src/agent_relay/builder.py +430 -109
  414. package/packages/sdk-py/src/agent_relay/templates.py +197 -0
  415. package/packages/sdk-py/src/agent_relay/types.py +489 -15
  416. package/packages/sdk-py/tests/test_builder.py +115 -1
  417. package/packages/sdk-py/tests/test_workflow_templates.py +450 -0
  418. package/packages/shared/cli-registry.yaml +193 -0
  419. package/packages/shared/codegen-py.mjs +215 -0
  420. package/packages/shared/codegen-ts.mjs +227 -0
  421. package/packages/telemetry/dist/events.d.ts +8 -8
  422. package/packages/telemetry/dist/index.d.ts +1 -1
  423. package/packages/telemetry/package.json +2 -2
  424. package/packages/telemetry/src/events.ts +9 -9
  425. package/packages/telemetry/src/index.ts +2 -2
  426. package/packages/trajectory/package.json +2 -2
  427. package/packages/user-directory/dist/user-directory.js +1 -1
  428. package/packages/user-directory/dist/user-directory.js.map +1 -1
  429. package/packages/user-directory/package.json +2 -2
  430. package/packages/user-directory/src/user-directory.ts +1 -1
  431. package/packages/utils/dist/cjs/client-helpers.js +4 -4
  432. package/packages/utils/dist/cjs/discovery.js +9 -6
  433. package/packages/utils/dist/cjs/errors.js +5 -5
  434. package/packages/utils/dist/cjs/legacy-protocol.js +70 -0
  435. package/packages/utils/dist/cjs/logger.js +3 -3
  436. package/packages/utils/dist/cjs/precompiled-patterns.js +33 -2
  437. package/packages/utils/dist/cjs/relay-pty-path.js +0 -6
  438. package/packages/utils/dist/client-helpers.d.ts +1 -1
  439. package/packages/utils/dist/client-helpers.d.ts.map +1 -1
  440. package/packages/utils/dist/client-helpers.js +1 -1
  441. package/packages/utils/dist/client-helpers.js.map +1 -1
  442. package/packages/utils/dist/discovery.d.ts +7 -7
  443. package/packages/utils/dist/discovery.d.ts.map +1 -1
  444. package/packages/utils/dist/discovery.js +20 -17
  445. package/packages/utils/dist/discovery.js.map +1 -1
  446. package/packages/utils/dist/errors.d.ts +1 -1
  447. package/packages/utils/dist/errors.js +3 -3
  448. package/packages/utils/dist/legacy-protocol.d.ts +46 -0
  449. package/packages/utils/dist/legacy-protocol.d.ts.map +1 -0
  450. package/packages/utils/dist/legacy-protocol.js +47 -0
  451. package/packages/utils/dist/legacy-protocol.js.map +1 -0
  452. package/packages/utils/dist/logger.d.ts +2 -2
  453. package/packages/utils/dist/logger.js +2 -2
  454. package/packages/utils/dist/precompiled-patterns.d.ts.map +1 -1
  455. package/packages/utils/dist/precompiled-patterns.js +28 -2
  456. package/packages/utils/dist/precompiled-patterns.js.map +1 -1
  457. package/packages/utils/dist/relay-pty-path.d.ts.map +1 -1
  458. package/packages/utils/dist/relay-pty-path.js +1 -10
  459. package/packages/utils/dist/relay-pty-path.js.map +1 -1
  460. package/packages/utils/package.json +2 -3
  461. package/packages/utils/src/client-helpers.ts +1 -1
  462. package/packages/utils/src/consolidation.test.ts +3 -3
  463. package/packages/utils/src/discovery.test.ts +3 -3
  464. package/packages/utils/src/discovery.ts +21 -18
  465. package/packages/utils/src/errors.test.ts +6 -11
  466. package/packages/utils/src/errors.ts +3 -3
  467. package/packages/utils/src/legacy-protocol.ts +151 -0
  468. package/packages/utils/src/logger.ts +2 -2
  469. package/packages/utils/src/precompiled-patterns.test.ts +8 -0
  470. package/packages/utils/src/precompiled-patterns.ts +40 -2
  471. package/packages/utils/src/relay-pty-path.test.ts +23 -34
  472. package/packages/utils/src/relay-pty-path.ts +1 -11
  473. package/relay-snippets/agent-relay-protocol.md +6 -43
  474. package/relay-snippets/agent-relay-snippet.md +59 -203
  475. package/scripts/postinstall.js +44 -171
  476. package/bin/relay-pty-darwin-arm64 +0 -0
  477. package/bin/relay-pty-darwin-x64 +0 -0
  478. package/bin/relay-pty-linux-arm64 +0 -0
  479. package/bin/relay-pty-linux-x64 +0 -0
  480. package/dist/src/bridge/index.d.ts +0 -8
  481. package/dist/src/bridge/index.d.ts.map +0 -1
  482. package/dist/src/bridge/index.js +0 -8
  483. package/dist/src/bridge/index.js.map +0 -1
  484. package/dist/src/continuity/index.d.ts +0 -5
  485. package/dist/src/continuity/index.d.ts.map +0 -1
  486. package/dist/src/continuity/index.js +0 -5
  487. package/dist/src/continuity/index.js.map +0 -1
  488. package/dist/src/daemon/index.d.ts +0 -8
  489. package/dist/src/daemon/index.d.ts.map +0 -1
  490. package/dist/src/daemon/index.js +0 -9
  491. package/dist/src/daemon/index.js.map +0 -1
  492. package/dist/src/protocol/index.d.ts +0 -8
  493. package/dist/src/protocol/index.d.ts.map +0 -1
  494. package/dist/src/protocol/index.js +0 -8
  495. package/dist/src/protocol/index.js.map +0 -1
  496. package/dist/src/resiliency/index.d.ts +0 -5
  497. package/dist/src/resiliency/index.d.ts.map +0 -1
  498. package/dist/src/resiliency/index.js +0 -5
  499. package/dist/src/resiliency/index.js.map +0 -1
  500. package/dist/src/state/index.d.ts +0 -5
  501. package/dist/src/state/index.d.ts.map +0 -1
  502. package/dist/src/state/index.js +0 -5
  503. package/dist/src/state/index.js.map +0 -1
  504. package/dist/src/storage/index.d.ts +0 -8
  505. package/dist/src/storage/index.d.ts.map +0 -1
  506. package/dist/src/storage/index.js +0 -8
  507. package/dist/src/storage/index.js.map +0 -1
  508. package/dist/src/wrapper/index.d.ts +0 -8
  509. package/dist/src/wrapper/index.d.ts.map +0 -1
  510. package/dist/src/wrapper/index.js +0 -11
  511. package/dist/src/wrapper/index.js.map +0 -1
  512. package/packages/bridge/dist/cli-resolution.d.ts +0 -32
  513. package/packages/bridge/dist/cli-resolution.d.ts.map +0 -1
  514. package/packages/bridge/dist/cli-resolution.js +0 -88
  515. package/packages/bridge/dist/cli-resolution.js.map +0 -1
  516. package/packages/bridge/dist/index.d.ts +0 -9
  517. package/packages/bridge/dist/index.d.ts.map +0 -1
  518. package/packages/bridge/dist/index.js +0 -11
  519. package/packages/bridge/dist/index.js.map +0 -1
  520. package/packages/bridge/dist/multi-project-client.d.ts +0 -99
  521. package/packages/bridge/dist/multi-project-client.d.ts.map +0 -1
  522. package/packages/bridge/dist/multi-project-client.js +0 -389
  523. package/packages/bridge/dist/multi-project-client.js.map +0 -1
  524. package/packages/bridge/dist/shadow-cli.d.ts +0 -17
  525. package/packages/bridge/dist/shadow-cli.d.ts.map +0 -1
  526. package/packages/bridge/dist/shadow-cli.js +0 -75
  527. package/packages/bridge/dist/shadow-cli.js.map +0 -1
  528. package/packages/bridge/dist/spawner.d.ts +0 -263
  529. package/packages/bridge/dist/spawner.d.ts.map +0 -1
  530. package/packages/bridge/dist/spawner.js +0 -1758
  531. package/packages/bridge/dist/spawner.js.map +0 -1
  532. package/packages/bridge/dist/types.d.ts +0 -141
  533. package/packages/bridge/dist/types.d.ts.map +0 -1
  534. package/packages/bridge/dist/types.js +0 -6
  535. package/packages/bridge/dist/types.js.map +0 -1
  536. package/packages/bridge/dist/utils.d.ts +0 -39
  537. package/packages/bridge/dist/utils.d.ts.map +0 -1
  538. package/packages/bridge/dist/utils.js +0 -98
  539. package/packages/bridge/dist/utils.js.map +0 -1
  540. package/packages/bridge/package.json +0 -45
  541. package/packages/bridge/src/cli-resolution.test.ts +0 -225
  542. package/packages/bridge/src/cli-resolution.ts +0 -100
  543. package/packages/bridge/src/index.ts +0 -34
  544. package/packages/bridge/src/multi-project-client.test.ts +0 -340
  545. package/packages/bridge/src/multi-project-client.ts +0 -469
  546. package/packages/bridge/src/shadow-cli.ts +0 -95
  547. package/packages/bridge/src/spawner-mcp.test.ts +0 -505
  548. package/packages/bridge/src/spawner.ts +0 -2067
  549. package/packages/bridge/src/types.ts +0 -153
  550. package/packages/bridge/src/utils.test.ts +0 -235
  551. package/packages/bridge/src/utils.ts +0 -113
  552. package/packages/bridge/tsconfig.json +0 -29
  553. package/packages/bridge/vitest.config.ts +0 -9
  554. package/packages/broker-sdk/README.md +0 -97
  555. package/packages/broker-sdk/dist/__tests__/facade.test.js +0 -257
  556. package/packages/broker-sdk/dist/__tests__/facade.test.js.map +0 -1
  557. package/packages/broker-sdk/dist/__tests__/integration.test.js +0 -139
  558. package/packages/broker-sdk/dist/__tests__/integration.test.js.map +0 -1
  559. package/packages/broker-sdk/dist/__tests__/quickstart.test.js +0 -176
  560. package/packages/broker-sdk/dist/__tests__/quickstart.test.js.map +0 -1
  561. package/packages/broker-sdk/dist/__tests__/unit.test.js +0 -192
  562. package/packages/broker-sdk/dist/__tests__/unit.test.js.map +0 -1
  563. package/packages/broker-sdk/dist/client.d.ts +0 -95
  564. package/packages/broker-sdk/dist/client.d.ts.map +0 -1
  565. package/packages/broker-sdk/dist/client.js +0 -372
  566. package/packages/broker-sdk/dist/client.js.map +0 -1
  567. package/packages/broker-sdk/dist/index.d.ts +0 -10
  568. package/packages/broker-sdk/dist/index.d.ts.map +0 -1
  569. package/packages/broker-sdk/dist/index.js +0 -10
  570. package/packages/broker-sdk/dist/index.js.map +0 -1
  571. package/packages/broker-sdk/dist/logs.d.ts +0 -47
  572. package/packages/broker-sdk/dist/logs.d.ts.map +0 -1
  573. package/packages/broker-sdk/dist/logs.js +0 -137
  574. package/packages/broker-sdk/dist/logs.js.map +0 -1
  575. package/packages/broker-sdk/dist/protocol.d.ts +0 -254
  576. package/packages/broker-sdk/dist/protocol.d.ts.map +0 -1
  577. package/packages/broker-sdk/dist/pty.d.ts.map +0 -1
  578. package/packages/broker-sdk/dist/pty.js +0 -14
  579. package/packages/broker-sdk/dist/pty.js.map +0 -1
  580. package/packages/broker-sdk/dist/relay.d.ts +0 -172
  581. package/packages/broker-sdk/dist/relay.d.ts.map +0 -1
  582. package/packages/broker-sdk/dist/relay.js +0 -486
  583. package/packages/broker-sdk/dist/relay.js.map +0 -1
  584. package/packages/broker-sdk/dist/relaycast.d.ts +0 -67
  585. package/packages/broker-sdk/dist/relaycast.d.ts.map +0 -1
  586. package/packages/broker-sdk/dist/relaycast.js +0 -150
  587. package/packages/broker-sdk/dist/relaycast.js.map +0 -1
  588. package/packages/broker-sdk/dist/shadow.d.ts +0 -100
  589. package/packages/broker-sdk/dist/shadow.d.ts.map +0 -1
  590. package/packages/broker-sdk/dist/shadow.js.map +0 -1
  591. package/packages/broker-sdk/dist/workflows/builder.d.ts +0 -101
  592. package/packages/broker-sdk/dist/workflows/builder.d.ts.map +0 -1
  593. package/packages/broker-sdk/dist/workflows/builder.js +0 -179
  594. package/packages/broker-sdk/dist/workflows/builder.js.map +0 -1
  595. package/packages/broker-sdk/dist/workflows/cli.d.ts +0 -10
  596. package/packages/broker-sdk/dist/workflows/cli.d.ts.map +0 -1
  597. package/packages/broker-sdk/dist/workflows/cli.js +0 -82
  598. package/packages/broker-sdk/dist/workflows/cli.js.map +0 -1
  599. package/packages/broker-sdk/dist/workflows/coordinator.d.ts +0 -69
  600. package/packages/broker-sdk/dist/workflows/coordinator.d.ts.map +0 -1
  601. package/packages/broker-sdk/dist/workflows/coordinator.js +0 -585
  602. package/packages/broker-sdk/dist/workflows/coordinator.js.map +0 -1
  603. package/packages/broker-sdk/dist/workflows/index.d.ts +0 -11
  604. package/packages/broker-sdk/dist/workflows/index.d.ts.map +0 -1
  605. package/packages/broker-sdk/dist/workflows/index.js +0 -11
  606. package/packages/broker-sdk/dist/workflows/index.js.map +0 -1
  607. package/packages/broker-sdk/dist/workflows/run.d.ts +0 -33
  608. package/packages/broker-sdk/dist/workflows/run.d.ts.map +0 -1
  609. package/packages/broker-sdk/dist/workflows/run.js +0 -28
  610. package/packages/broker-sdk/dist/workflows/run.js.map +0 -1
  611. package/packages/broker-sdk/dist/workflows/runner.d.ts +0 -136
  612. package/packages/broker-sdk/dist/workflows/runner.d.ts.map +0 -1
  613. package/packages/broker-sdk/dist/workflows/runner.js +0 -900
  614. package/packages/broker-sdk/dist/workflows/runner.js.map +0 -1
  615. package/packages/broker-sdk/dist/workflows/templates.d.ts +0 -47
  616. package/packages/broker-sdk/dist/workflows/templates.d.ts.map +0 -1
  617. package/packages/broker-sdk/dist/workflows/templates.js +0 -395
  618. package/packages/broker-sdk/dist/workflows/templates.js.map +0 -1
  619. package/packages/broker-sdk/dist/workflows/trajectory.d.ts +0 -80
  620. package/packages/broker-sdk/dist/workflows/trajectory.d.ts.map +0 -1
  621. package/packages/broker-sdk/dist/workflows/trajectory.js +0 -362
  622. package/packages/broker-sdk/dist/workflows/trajectory.js.map +0 -1
  623. package/packages/broker-sdk/dist/workflows/types.d.ts +0 -140
  624. package/packages/broker-sdk/dist/workflows/types.d.ts.map +0 -1
  625. package/packages/broker-sdk/dist/workflows/types.js +0 -8
  626. package/packages/broker-sdk/dist/workflows/types.js.map +0 -1
  627. package/packages/broker-sdk/package.json +0 -81
  628. package/packages/broker-sdk/scripts/bundle-agent-relay.mjs +0 -53
  629. package/packages/broker-sdk/src/__tests__/error-scenarios.test.ts +0 -682
  630. package/packages/broker-sdk/src/__tests__/facade.test.ts +0 -296
  631. package/packages/broker-sdk/src/__tests__/integration.test.ts +0 -170
  632. package/packages/broker-sdk/src/__tests__/quickstart.test.ts +0 -198
  633. package/packages/broker-sdk/src/__tests__/swarm-coordinator.test.ts +0 -772
  634. package/packages/broker-sdk/src/__tests__/unit.test.ts +0 -243
  635. package/packages/broker-sdk/src/__tests__/workflow-runner.test.ts +0 -333
  636. package/packages/broker-sdk/src/client.ts +0 -510
  637. package/packages/broker-sdk/src/index.ts +0 -9
  638. package/packages/broker-sdk/src/logs.ts +0 -163
  639. package/packages/broker-sdk/src/protocol.ts +0 -271
  640. package/packages/broker-sdk/src/pty.ts +0 -16
  641. package/packages/broker-sdk/src/relay.ts +0 -614
  642. package/packages/broker-sdk/src/relaycast.ts +0 -185
  643. package/packages/broker-sdk/src/shadow.ts +0 -230
  644. package/packages/broker-sdk/src/workflows/README.md +0 -514
  645. package/packages/broker-sdk/src/workflows/builder.ts +0 -241
  646. package/packages/broker-sdk/src/workflows/builtin-templates/bug-fix.yaml +0 -75
  647. package/packages/broker-sdk/src/workflows/builtin-templates/code-review.yaml +0 -82
  648. package/packages/broker-sdk/src/workflows/builtin-templates/documentation.yaml +0 -70
  649. package/packages/broker-sdk/src/workflows/builtin-templates/feature-dev.yaml +0 -76
  650. package/packages/broker-sdk/src/workflows/builtin-templates/refactor.yaml +0 -82
  651. package/packages/broker-sdk/src/workflows/builtin-templates/security-audit.yaml +0 -84
  652. package/packages/broker-sdk/src/workflows/cli.ts +0 -93
  653. package/packages/broker-sdk/src/workflows/coordinator.ts +0 -758
  654. package/packages/broker-sdk/src/workflows/index.ts +0 -10
  655. package/packages/broker-sdk/src/workflows/run.ts +0 -55
  656. package/packages/broker-sdk/src/workflows/runner.ts +0 -1184
  657. package/packages/broker-sdk/src/workflows/schema.json +0 -333
  658. package/packages/broker-sdk/src/workflows/templates.ts +0 -544
  659. package/packages/broker-sdk/src/workflows/trajectory.ts +0 -507
  660. package/packages/broker-sdk/src/workflows/types.ts +0 -208
  661. package/packages/broker-sdk/tsconfig.json +0 -22
  662. package/packages/broker-sdk/vitest.config.ts +0 -9
  663. package/packages/continuity/dist/formatter.d.ts +0 -57
  664. package/packages/continuity/dist/formatter.d.ts.map +0 -1
  665. package/packages/continuity/dist/formatter.js +0 -448
  666. package/packages/continuity/dist/formatter.js.map +0 -1
  667. package/packages/continuity/dist/handoff-store.d.ts +0 -67
  668. package/packages/continuity/dist/handoff-store.d.ts.map +0 -1
  669. package/packages/continuity/dist/handoff-store.js +0 -472
  670. package/packages/continuity/dist/handoff-store.js.map +0 -1
  671. package/packages/continuity/dist/index.d.ts +0 -10
  672. package/packages/continuity/dist/index.d.ts.map +0 -1
  673. package/packages/continuity/dist/index.js +0 -11
  674. package/packages/continuity/dist/index.js.map +0 -1
  675. package/packages/continuity/dist/ledger-store.d.ts +0 -110
  676. package/packages/continuity/dist/ledger-store.d.ts.map +0 -1
  677. package/packages/continuity/dist/ledger-store.js +0 -500
  678. package/packages/continuity/dist/ledger-store.js.map +0 -1
  679. package/packages/continuity/dist/manager.d.ts +0 -183
  680. package/packages/continuity/dist/manager.d.ts.map +0 -1
  681. package/packages/continuity/dist/manager.js +0 -616
  682. package/packages/continuity/dist/manager.js.map +0 -1
  683. package/packages/continuity/dist/parser.d.ts +0 -76
  684. package/packages/continuity/dist/parser.d.ts.map +0 -1
  685. package/packages/continuity/dist/parser.js +0 -579
  686. package/packages/continuity/dist/parser.js.map +0 -1
  687. package/packages/continuity/dist/types.d.ts +0 -180
  688. package/packages/continuity/dist/types.d.ts.map +0 -1
  689. package/packages/continuity/dist/types.js +0 -2
  690. package/packages/continuity/dist/types.js.map +0 -1
  691. package/packages/continuity/package.json +0 -40
  692. package/packages/continuity/src/formatter.ts +0 -536
  693. package/packages/continuity/src/handoff-store.ts +0 -523
  694. package/packages/continuity/src/index.ts +0 -12
  695. package/packages/continuity/src/ledger-store.ts +0 -594
  696. package/packages/continuity/src/manager.test.ts +0 -291
  697. package/packages/continuity/src/manager.ts +0 -774
  698. package/packages/continuity/src/parser.test.ts +0 -292
  699. package/packages/continuity/src/parser.ts +0 -680
  700. package/packages/continuity/src/types.ts +0 -211
  701. package/packages/continuity/tsconfig.json +0 -21
  702. package/packages/continuity/vitest.config.ts +0 -9
  703. package/packages/daemon/dist/agent-manager.d.ts +0 -134
  704. package/packages/daemon/dist/agent-manager.d.ts.map +0 -1
  705. package/packages/daemon/dist/agent-manager.js +0 -578
  706. package/packages/daemon/dist/agent-manager.js.map +0 -1
  707. package/packages/daemon/dist/agent-registry.d.ts +0 -99
  708. package/packages/daemon/dist/agent-registry.d.ts.map +0 -1
  709. package/packages/daemon/dist/agent-registry.js +0 -213
  710. package/packages/daemon/dist/agent-registry.js.map +0 -1
  711. package/packages/daemon/dist/agent-signing.d.ts +0 -158
  712. package/packages/daemon/dist/agent-signing.d.ts.map +0 -1
  713. package/packages/daemon/dist/agent-signing.js +0 -523
  714. package/packages/daemon/dist/agent-signing.js.map +0 -1
  715. package/packages/daemon/dist/api.d.ts +0 -106
  716. package/packages/daemon/dist/api.d.ts.map +0 -1
  717. package/packages/daemon/dist/api.js +0 -895
  718. package/packages/daemon/dist/api.js.map +0 -1
  719. package/packages/daemon/dist/auth.d.ts +0 -94
  720. package/packages/daemon/dist/auth.d.ts.map +0 -1
  721. package/packages/daemon/dist/auth.js +0 -197
  722. package/packages/daemon/dist/auth.js.map +0 -1
  723. package/packages/daemon/dist/channel-membership-store.d.ts +0 -55
  724. package/packages/daemon/dist/channel-membership-store.d.ts.map +0 -1
  725. package/packages/daemon/dist/channel-membership-store.js +0 -176
  726. package/packages/daemon/dist/channel-membership-store.js.map +0 -1
  727. package/packages/daemon/dist/cli-auth.d.ts +0 -97
  728. package/packages/daemon/dist/cli-auth.d.ts.map +0 -1
  729. package/packages/daemon/dist/cli-auth.js +0 -808
  730. package/packages/daemon/dist/cli-auth.js.map +0 -1
  731. package/packages/daemon/dist/cloud-sync.d.ts +0 -263
  732. package/packages/daemon/dist/cloud-sync.d.ts.map +0 -1
  733. package/packages/daemon/dist/cloud-sync.js +0 -820
  734. package/packages/daemon/dist/cloud-sync.js.map +0 -1
  735. package/packages/daemon/dist/connection.d.ts +0 -137
  736. package/packages/daemon/dist/connection.d.ts.map +0 -1
  737. package/packages/daemon/dist/connection.js +0 -465
  738. package/packages/daemon/dist/connection.js.map +0 -1
  739. package/packages/daemon/dist/consensus-integration.d.ts +0 -168
  740. package/packages/daemon/dist/consensus-integration.d.ts.map +0 -1
  741. package/packages/daemon/dist/consensus-integration.js +0 -371
  742. package/packages/daemon/dist/consensus-integration.js.map +0 -1
  743. package/packages/daemon/dist/consensus.d.ts +0 -269
  744. package/packages/daemon/dist/consensus.d.ts.map +0 -1
  745. package/packages/daemon/dist/consensus.js +0 -632
  746. package/packages/daemon/dist/consensus.js.map +0 -1
  747. package/packages/daemon/dist/delivery-tracker.d.ts +0 -34
  748. package/packages/daemon/dist/delivery-tracker.d.ts.map +0 -1
  749. package/packages/daemon/dist/delivery-tracker.js +0 -104
  750. package/packages/daemon/dist/delivery-tracker.js.map +0 -1
  751. package/packages/daemon/dist/enhanced-features.d.ts +0 -118
  752. package/packages/daemon/dist/enhanced-features.d.ts.map +0 -1
  753. package/packages/daemon/dist/enhanced-features.js +0 -177
  754. package/packages/daemon/dist/enhanced-features.js.map +0 -1
  755. package/packages/daemon/dist/index.d.ts +0 -29
  756. package/packages/daemon/dist/index.d.ts.map +0 -1
  757. package/packages/daemon/dist/index.js +0 -34
  758. package/packages/daemon/dist/index.js.map +0 -1
  759. package/packages/daemon/dist/orchestrator.d.ts +0 -217
  760. package/packages/daemon/dist/orchestrator.d.ts.map +0 -1
  761. package/packages/daemon/dist/orchestrator.js +0 -1172
  762. package/packages/daemon/dist/orchestrator.js.map +0 -1
  763. package/packages/daemon/dist/rate-limiter.d.ts +0 -68
  764. package/packages/daemon/dist/rate-limiter.d.ts.map +0 -1
  765. package/packages/daemon/dist/rate-limiter.js +0 -130
  766. package/packages/daemon/dist/rate-limiter.js.map +0 -1
  767. package/packages/daemon/dist/registry.d.ts +0 -9
  768. package/packages/daemon/dist/registry.d.ts.map +0 -1
  769. package/packages/daemon/dist/registry.js +0 -9
  770. package/packages/daemon/dist/registry.js.map +0 -1
  771. package/packages/daemon/dist/repo-manager.d.ts +0 -116
  772. package/packages/daemon/dist/repo-manager.d.ts.map +0 -1
  773. package/packages/daemon/dist/repo-manager.js +0 -384
  774. package/packages/daemon/dist/repo-manager.js.map +0 -1
  775. package/packages/daemon/dist/router.d.ts +0 -389
  776. package/packages/daemon/dist/router.d.ts.map +0 -1
  777. package/packages/daemon/dist/router.js +0 -1607
  778. package/packages/daemon/dist/router.js.map +0 -1
  779. package/packages/daemon/dist/server.d.ts +0 -201
  780. package/packages/daemon/dist/server.d.ts.map +0 -1
  781. package/packages/daemon/dist/server.js +0 -1791
  782. package/packages/daemon/dist/server.js.map +0 -1
  783. package/packages/daemon/dist/spawn-manager.d.ts +0 -119
  784. package/packages/daemon/dist/spawn-manager.d.ts.map +0 -1
  785. package/packages/daemon/dist/spawn-manager.js +0 -319
  786. package/packages/daemon/dist/spawn-manager.js.map +0 -1
  787. package/packages/daemon/dist/sync-queue.d.ts +0 -116
  788. package/packages/daemon/dist/sync-queue.d.ts.map +0 -1
  789. package/packages/daemon/dist/sync-queue.js +0 -361
  790. package/packages/daemon/dist/sync-queue.js.map +0 -1
  791. package/packages/daemon/dist/types.d.ts +0 -133
  792. package/packages/daemon/dist/types.d.ts.map +0 -1
  793. package/packages/daemon/dist/types.js +0 -6
  794. package/packages/daemon/dist/types.js.map +0 -1
  795. package/packages/daemon/dist/workspace-manager.d.ts +0 -80
  796. package/packages/daemon/dist/workspace-manager.d.ts.map +0 -1
  797. package/packages/daemon/dist/workspace-manager.js +0 -314
  798. package/packages/daemon/dist/workspace-manager.js.map +0 -1
  799. package/packages/daemon/package.json +0 -56
  800. package/packages/daemon/src/agent-manager.ts +0 -679
  801. package/packages/daemon/src/agent-registry.ts +0 -284
  802. package/packages/daemon/src/agent-signing.ts +0 -707
  803. package/packages/daemon/src/api.ts +0 -1034
  804. package/packages/daemon/src/auth.ts +0 -276
  805. package/packages/daemon/src/channel-membership-store.ts +0 -217
  806. package/packages/daemon/src/cli-auth.ts +0 -945
  807. package/packages/daemon/src/cloud-sync.ts +0 -1100
  808. package/packages/daemon/src/connection.ts +0 -561
  809. package/packages/daemon/src/consensus-integration.ts +0 -510
  810. package/packages/daemon/src/consensus.ts +0 -848
  811. package/packages/daemon/src/delivery-tracker.ts +0 -145
  812. package/packages/daemon/src/enhanced-features.ts +0 -390
  813. package/packages/daemon/src/index.ts +0 -48
  814. package/packages/daemon/src/orchestrator.test.ts +0 -231
  815. package/packages/daemon/src/orchestrator.ts +0 -1376
  816. package/packages/daemon/src/rate-limiter.ts +0 -172
  817. package/packages/daemon/src/registry.ts +0 -8
  818. package/packages/daemon/src/repo-manager.ts +0 -468
  819. package/packages/daemon/src/router.test.ts +0 -181
  820. package/packages/daemon/src/router.ts +0 -1925
  821. package/packages/daemon/src/server.ts +0 -2051
  822. package/packages/daemon/src/spawn-manager-set-model.test.ts +0 -144
  823. package/packages/daemon/src/spawn-manager.ts +0 -415
  824. package/packages/daemon/src/sync-queue.ts +0 -477
  825. package/packages/daemon/src/types.ts +0 -158
  826. package/packages/daemon/src/workspace-manager.ts +0 -371
  827. package/packages/daemon/tsconfig.json +0 -21
  828. package/packages/daemon/vitest.config.ts +0 -9
  829. package/packages/mcp/CHANGELOG.md +0 -28
  830. package/packages/mcp/LICENSE +0 -190
  831. package/packages/mcp/README.md +0 -266
  832. package/packages/mcp/dist/bin.d.ts +0 -12
  833. package/packages/mcp/dist/bin.d.ts.map +0 -1
  834. package/packages/mcp/dist/bin.js +0 -179
  835. package/packages/mcp/dist/bin.js.map +0 -1
  836. package/packages/mcp/dist/client-adapter.d.ts +0 -164
  837. package/packages/mcp/dist/client-adapter.d.ts.map +0 -1
  838. package/packages/mcp/dist/client-adapter.js +0 -231
  839. package/packages/mcp/dist/client-adapter.js.map +0 -1
  840. package/packages/mcp/dist/cloud.d.ts +0 -13
  841. package/packages/mcp/dist/cloud.d.ts.map +0 -1
  842. package/packages/mcp/dist/cloud.js +0 -25
  843. package/packages/mcp/dist/cloud.js.map +0 -1
  844. package/packages/mcp/dist/errors.d.ts +0 -9
  845. package/packages/mcp/dist/errors.d.ts.map +0 -1
  846. package/packages/mcp/dist/errors.js +0 -9
  847. package/packages/mcp/dist/errors.js.map +0 -1
  848. package/packages/mcp/dist/file-transport.d.ts +0 -103
  849. package/packages/mcp/dist/file-transport.d.ts.map +0 -1
  850. package/packages/mcp/dist/file-transport.js +0 -204
  851. package/packages/mcp/dist/file-transport.js.map +0 -1
  852. package/packages/mcp/dist/hybrid-client.d.ts +0 -5
  853. package/packages/mcp/dist/hybrid-client.d.ts.map +0 -1
  854. package/packages/mcp/dist/hybrid-client.js +0 -23
  855. package/packages/mcp/dist/hybrid-client.js.map +0 -1
  856. package/packages/mcp/dist/index.d.ts +0 -11
  857. package/packages/mcp/dist/index.d.ts.map +0 -1
  858. package/packages/mcp/dist/index.js +0 -25
  859. package/packages/mcp/dist/index.js.map +0 -1
  860. package/packages/mcp/dist/install-cli.d.ts +0 -35
  861. package/packages/mcp/dist/install-cli.d.ts.map +0 -1
  862. package/packages/mcp/dist/install-cli.js +0 -157
  863. package/packages/mcp/dist/install-cli.js.map +0 -1
  864. package/packages/mcp/dist/install.d.ts +0 -123
  865. package/packages/mcp/dist/install.d.ts.map +0 -1
  866. package/packages/mcp/dist/install.js +0 -661
  867. package/packages/mcp/dist/install.js.map +0 -1
  868. package/packages/mcp/dist/prompts/index.d.ts +0 -2
  869. package/packages/mcp/dist/prompts/index.d.ts.map +0 -1
  870. package/packages/mcp/dist/prompts/index.js +0 -2
  871. package/packages/mcp/dist/prompts/index.js.map +0 -1
  872. package/packages/mcp/dist/prompts/protocol.d.ts +0 -11
  873. package/packages/mcp/dist/prompts/protocol.d.ts.map +0 -1
  874. package/packages/mcp/dist/prompts/protocol.js +0 -160
  875. package/packages/mcp/dist/prompts/protocol.js.map +0 -1
  876. package/packages/mcp/dist/resources/agents.d.ts +0 -11
  877. package/packages/mcp/dist/resources/agents.d.ts.map +0 -1
  878. package/packages/mcp/dist/resources/agents.js +0 -17
  879. package/packages/mcp/dist/resources/agents.js.map +0 -1
  880. package/packages/mcp/dist/resources/inbox.d.ts +0 -11
  881. package/packages/mcp/dist/resources/inbox.d.ts.map +0 -1
  882. package/packages/mcp/dist/resources/inbox.js +0 -17
  883. package/packages/mcp/dist/resources/inbox.js.map +0 -1
  884. package/packages/mcp/dist/resources/index.d.ts +0 -4
  885. package/packages/mcp/dist/resources/index.d.ts.map +0 -1
  886. package/packages/mcp/dist/resources/index.js +0 -4
  887. package/packages/mcp/dist/resources/index.js.map +0 -1
  888. package/packages/mcp/dist/resources/project.d.ts +0 -11
  889. package/packages/mcp/dist/resources/project.d.ts.map +0 -1
  890. package/packages/mcp/dist/resources/project.js +0 -21
  891. package/packages/mcp/dist/resources/project.js.map +0 -1
  892. package/packages/mcp/dist/server.d.ts +0 -23
  893. package/packages/mcp/dist/server.d.ts.map +0 -1
  894. package/packages/mcp/dist/server.js +0 -317
  895. package/packages/mcp/dist/server.js.map +0 -1
  896. package/packages/mcp/dist/simple.d.ts +0 -170
  897. package/packages/mcp/dist/simple.d.ts.map +0 -1
  898. package/packages/mcp/dist/simple.js +0 -120
  899. package/packages/mcp/dist/simple.js.map +0 -1
  900. package/packages/mcp/dist/tools/index.d.ts +0 -20
  901. package/packages/mcp/dist/tools/index.d.ts.map +0 -1
  902. package/packages/mcp/dist/tools/index.js +0 -20
  903. package/packages/mcp/dist/tools/index.js.map +0 -1
  904. package/packages/mcp/dist/tools/relay-broadcast.d.ts +0 -20
  905. package/packages/mcp/dist/tools/relay-broadcast.d.ts.map +0 -1
  906. package/packages/mcp/dist/tools/relay-broadcast.js +0 -25
  907. package/packages/mcp/dist/tools/relay-broadcast.js.map +0 -1
  908. package/packages/mcp/dist/tools/relay-channel.d.ts +0 -75
  909. package/packages/mcp/dist/tools/relay-channel.d.ts.map +0 -1
  910. package/packages/mcp/dist/tools/relay-channel.js +0 -124
  911. package/packages/mcp/dist/tools/relay-channel.js.map +0 -1
  912. package/packages/mcp/dist/tools/relay-connected.d.ts +0 -17
  913. package/packages/mcp/dist/tools/relay-connected.d.ts.map +0 -1
  914. package/packages/mcp/dist/tools/relay-connected.js +0 -54
  915. package/packages/mcp/dist/tools/relay-connected.js.map +0 -1
  916. package/packages/mcp/dist/tools/relay-consensus.d.ts +0 -45
  917. package/packages/mcp/dist/tools/relay-consensus.d.ts.map +0 -1
  918. package/packages/mcp/dist/tools/relay-consensus.js +0 -80
  919. package/packages/mcp/dist/tools/relay-consensus.js.map +0 -1
  920. package/packages/mcp/dist/tools/relay-continuity.d.ts +0 -35
  921. package/packages/mcp/dist/tools/relay-continuity.d.ts.map +0 -1
  922. package/packages/mcp/dist/tools/relay-continuity.js +0 -101
  923. package/packages/mcp/dist/tools/relay-continuity.js.map +0 -1
  924. package/packages/mcp/dist/tools/relay-health.d.ts +0 -20
  925. package/packages/mcp/dist/tools/relay-health.d.ts.map +0 -1
  926. package/packages/mcp/dist/tools/relay-health.js +0 -130
  927. package/packages/mcp/dist/tools/relay-health.js.map +0 -1
  928. package/packages/mcp/dist/tools/relay-inbox.d.ts +0 -26
  929. package/packages/mcp/dist/tools/relay-inbox.d.ts.map +0 -1
  930. package/packages/mcp/dist/tools/relay-inbox.js +0 -58
  931. package/packages/mcp/dist/tools/relay-inbox.js.map +0 -1
  932. package/packages/mcp/dist/tools/relay-logs.d.ts +0 -20
  933. package/packages/mcp/dist/tools/relay-logs.d.ts.map +0 -1
  934. package/packages/mcp/dist/tools/relay-logs.js +0 -90
  935. package/packages/mcp/dist/tools/relay-logs.js.map +0 -1
  936. package/packages/mcp/dist/tools/relay-messages.d.ts +0 -32
  937. package/packages/mcp/dist/tools/relay-messages.d.ts.map +0 -1
  938. package/packages/mcp/dist/tools/relay-messages.js +0 -61
  939. package/packages/mcp/dist/tools/relay-messages.js.map +0 -1
  940. package/packages/mcp/dist/tools/relay-metrics.d.ts +0 -17
  941. package/packages/mcp/dist/tools/relay-metrics.d.ts.map +0 -1
  942. package/packages/mcp/dist/tools/relay-metrics.js +0 -124
  943. package/packages/mcp/dist/tools/relay-metrics.js.map +0 -1
  944. package/packages/mcp/dist/tools/relay-release.d.ts +0 -20
  945. package/packages/mcp/dist/tools/relay-release.d.ts.map +0 -1
  946. package/packages/mcp/dist/tools/relay-release.js +0 -44
  947. package/packages/mcp/dist/tools/relay-release.js.map +0 -1
  948. package/packages/mcp/dist/tools/relay-remove-agent.d.ts +0 -20
  949. package/packages/mcp/dist/tools/relay-remove-agent.d.ts.map +0 -1
  950. package/packages/mcp/dist/tools/relay-remove-agent.js +0 -50
  951. package/packages/mcp/dist/tools/relay-remove-agent.js.map +0 -1
  952. package/packages/mcp/dist/tools/relay-send.d.ts +0 -29
  953. package/packages/mcp/dist/tools/relay-send.d.ts.map +0 -1
  954. package/packages/mcp/dist/tools/relay-send.js +0 -73
  955. package/packages/mcp/dist/tools/relay-send.js.map +0 -1
  956. package/packages/mcp/dist/tools/relay-set-model.d.ts +0 -23
  957. package/packages/mcp/dist/tools/relay-set-model.d.ts.map +0 -1
  958. package/packages/mcp/dist/tools/relay-set-model.js +0 -52
  959. package/packages/mcp/dist/tools/relay-set-model.js.map +0 -1
  960. package/packages/mcp/dist/tools/relay-shadow.d.ts +0 -30
  961. package/packages/mcp/dist/tools/relay-shadow.d.ts.map +0 -1
  962. package/packages/mcp/dist/tools/relay-shadow.js +0 -55
  963. package/packages/mcp/dist/tools/relay-shadow.js.map +0 -1
  964. package/packages/mcp/dist/tools/relay-spawn.d.ts +0 -36
  965. package/packages/mcp/dist/tools/relay-spawn.d.ts.map +0 -1
  966. package/packages/mcp/dist/tools/relay-spawn.js +0 -73
  967. package/packages/mcp/dist/tools/relay-spawn.js.map +0 -1
  968. package/packages/mcp/dist/tools/relay-status.d.ts +0 -11
  969. package/packages/mcp/dist/tools/relay-status.d.ts.map +0 -1
  970. package/packages/mcp/dist/tools/relay-status.js +0 -43
  971. package/packages/mcp/dist/tools/relay-status.js.map +0 -1
  972. package/packages/mcp/dist/tools/relay-subscribe.d.ts +0 -27
  973. package/packages/mcp/dist/tools/relay-subscribe.d.ts.map +0 -1
  974. package/packages/mcp/dist/tools/relay-subscribe.js +0 -49
  975. package/packages/mcp/dist/tools/relay-subscribe.js.map +0 -1
  976. package/packages/mcp/dist/tools/relay-who.d.ts +0 -20
  977. package/packages/mcp/dist/tools/relay-who.d.ts.map +0 -1
  978. package/packages/mcp/dist/tools/relay-who.js +0 -62
  979. package/packages/mcp/dist/tools/relay-who.js.map +0 -1
  980. package/packages/mcp/package.json +0 -82
  981. package/packages/mcp/src/bin.ts +0 -200
  982. package/packages/mcp/src/client-adapter.ts +0 -358
  983. package/packages/mcp/src/cloud.ts +0 -41
  984. package/packages/mcp/src/errors.ts +0 -17
  985. package/packages/mcp/src/file-transport.ts +0 -275
  986. package/packages/mcp/src/hybrid-client.ts +0 -25
  987. package/packages/mcp/src/index.ts +0 -143
  988. package/packages/mcp/src/install-cli.ts +0 -210
  989. package/packages/mcp/src/install.ts +0 -820
  990. package/packages/mcp/src/prompts/index.ts +0 -1
  991. package/packages/mcp/src/prompts/protocol.ts +0 -164
  992. package/packages/mcp/src/resources/agents.ts +0 -21
  993. package/packages/mcp/src/resources/inbox.ts +0 -21
  994. package/packages/mcp/src/resources/index.ts +0 -3
  995. package/packages/mcp/src/resources/project.ts +0 -29
  996. package/packages/mcp/src/server.ts +0 -475
  997. package/packages/mcp/src/simple.ts +0 -214
  998. package/packages/mcp/src/tools/index.ts +0 -155
  999. package/packages/mcp/src/tools/relay-broadcast.ts +0 -32
  1000. package/packages/mcp/src/tools/relay-channel.ts +0 -151
  1001. package/packages/mcp/src/tools/relay-connected.ts +0 -67
  1002. package/packages/mcp/src/tools/relay-consensus.ts +0 -92
  1003. package/packages/mcp/src/tools/relay-continuity.ts +0 -127
  1004. package/packages/mcp/src/tools/relay-health.ts +0 -148
  1005. package/packages/mcp/src/tools/relay-inbox.ts +0 -70
  1006. package/packages/mcp/src/tools/relay-logs.ts +0 -106
  1007. package/packages/mcp/src/tools/relay-messages.ts +0 -66
  1008. package/packages/mcp/src/tools/relay-metrics.ts +0 -142
  1009. package/packages/mcp/src/tools/relay-release.ts +0 -54
  1010. package/packages/mcp/src/tools/relay-remove-agent.ts +0 -58
  1011. package/packages/mcp/src/tools/relay-send.ts +0 -84
  1012. package/packages/mcp/src/tools/relay-set-model.ts +0 -62
  1013. package/packages/mcp/src/tools/relay-shadow.ts +0 -67
  1014. package/packages/mcp/src/tools/relay-spawn.ts +0 -87
  1015. package/packages/mcp/src/tools/relay-status.ts +0 -57
  1016. package/packages/mcp/src/tools/relay-subscribe.ts +0 -61
  1017. package/packages/mcp/src/tools/relay-who.ts +0 -75
  1018. package/packages/mcp/tests/client.test.ts +0 -451
  1019. package/packages/mcp/tests/discover.test.ts +0 -256
  1020. package/packages/mcp/tests/install.test.ts +0 -123
  1021. package/packages/mcp/tests/prompts.test.ts +0 -12
  1022. package/packages/mcp/tests/resources.test.ts +0 -53
  1023. package/packages/mcp/tests/tools.test.ts +0 -1516
  1024. package/packages/mcp/tsconfig.json +0 -22
  1025. package/packages/mcp/vitest.config.ts +0 -9
  1026. package/packages/protocol/dist/channels.d.ts +0 -137
  1027. package/packages/protocol/dist/channels.d.ts.map +0 -1
  1028. package/packages/protocol/dist/channels.js +0 -154
  1029. package/packages/protocol/dist/channels.js.map +0 -1
  1030. package/packages/protocol/dist/framing.d.ts +0 -80
  1031. package/packages/protocol/dist/framing.d.ts.map +0 -1
  1032. package/packages/protocol/dist/framing.js +0 -206
  1033. package/packages/protocol/dist/framing.js.map +0 -1
  1034. package/packages/protocol/dist/id-generator.d.ts +0 -35
  1035. package/packages/protocol/dist/id-generator.d.ts.map +0 -1
  1036. package/packages/protocol/dist/id-generator.js +0 -60
  1037. package/packages/protocol/dist/id-generator.js.map +0 -1
  1038. package/packages/protocol/dist/index.d.ts +0 -5
  1039. package/packages/protocol/dist/index.d.ts.map +0 -1
  1040. package/packages/protocol/dist/index.js +0 -5
  1041. package/packages/protocol/dist/index.js.map +0 -1
  1042. package/packages/protocol/dist/relay-pty-schemas.d.ts +0 -340
  1043. package/packages/protocol/dist/relay-pty-schemas.d.ts.map +0 -1
  1044. package/packages/protocol/dist/relay-pty-schemas.js +0 -60
  1045. package/packages/protocol/dist/relay-pty-schemas.js.map +0 -1
  1046. package/packages/protocol/dist/types.d.ts +0 -793
  1047. package/packages/protocol/dist/types.d.ts.map +0 -1
  1048. package/packages/protocol/dist/types.js +0 -8
  1049. package/packages/protocol/dist/types.js.map +0 -1
  1050. package/packages/protocol/package.json +0 -61
  1051. package/packages/protocol/src/channels.test.ts +0 -330
  1052. package/packages/protocol/src/channels.ts +0 -270
  1053. package/packages/protocol/src/framing.test.ts +0 -164
  1054. package/packages/protocol/src/framing.ts +0 -242
  1055. package/packages/protocol/src/id-generator.ts +0 -69
  1056. package/packages/protocol/src/index.ts +0 -4
  1057. package/packages/protocol/src/relay-pty-schemas.ts +0 -400
  1058. package/packages/protocol/src/types.test.ts +0 -271
  1059. package/packages/protocol/src/types.ts +0 -988
  1060. package/packages/protocol/tsconfig.json +0 -21
  1061. package/packages/protocol/vitest.config.ts +0 -9
  1062. package/packages/resiliency/dist/cgroup-manager.d.ts +0 -152
  1063. package/packages/resiliency/dist/cgroup-manager.d.ts.map +0 -1
  1064. package/packages/resiliency/dist/cgroup-manager.js +0 -394
  1065. package/packages/resiliency/dist/cgroup-manager.js.map +0 -1
  1066. package/packages/resiliency/dist/context-persistence.d.ts +0 -140
  1067. package/packages/resiliency/dist/context-persistence.d.ts.map +0 -1
  1068. package/packages/resiliency/dist/context-persistence.js +0 -397
  1069. package/packages/resiliency/dist/context-persistence.js.map +0 -1
  1070. package/packages/resiliency/dist/crash-insights.d.ts +0 -156
  1071. package/packages/resiliency/dist/crash-insights.d.ts.map +0 -1
  1072. package/packages/resiliency/dist/crash-insights.js +0 -492
  1073. package/packages/resiliency/dist/crash-insights.js.map +0 -1
  1074. package/packages/resiliency/dist/gossip-health.d.ts +0 -137
  1075. package/packages/resiliency/dist/gossip-health.d.ts.map +0 -1
  1076. package/packages/resiliency/dist/gossip-health.js +0 -241
  1077. package/packages/resiliency/dist/gossip-health.js.map +0 -1
  1078. package/packages/resiliency/dist/health-monitor.d.ts +0 -97
  1079. package/packages/resiliency/dist/health-monitor.d.ts.map +0 -1
  1080. package/packages/resiliency/dist/health-monitor.js +0 -291
  1081. package/packages/resiliency/dist/health-monitor.js.map +0 -1
  1082. package/packages/resiliency/dist/index.d.ts +0 -69
  1083. package/packages/resiliency/dist/index.d.ts.map +0 -1
  1084. package/packages/resiliency/dist/index.js +0 -69
  1085. package/packages/resiliency/dist/index.js.map +0 -1
  1086. package/packages/resiliency/dist/leader-watchdog.d.ts +0 -109
  1087. package/packages/resiliency/dist/leader-watchdog.d.ts.map +0 -1
  1088. package/packages/resiliency/dist/leader-watchdog.js +0 -189
  1089. package/packages/resiliency/dist/leader-watchdog.js.map +0 -1
  1090. package/packages/resiliency/dist/logger.d.ts +0 -114
  1091. package/packages/resiliency/dist/logger.d.ts.map +0 -1
  1092. package/packages/resiliency/dist/logger.js +0 -250
  1093. package/packages/resiliency/dist/logger.js.map +0 -1
  1094. package/packages/resiliency/dist/memory-monitor.d.ts +0 -172
  1095. package/packages/resiliency/dist/memory-monitor.d.ts.map +0 -1
  1096. package/packages/resiliency/dist/memory-monitor.js +0 -599
  1097. package/packages/resiliency/dist/memory-monitor.js.map +0 -1
  1098. package/packages/resiliency/dist/metrics.d.ts +0 -115
  1099. package/packages/resiliency/dist/metrics.d.ts.map +0 -1
  1100. package/packages/resiliency/dist/metrics.js +0 -239
  1101. package/packages/resiliency/dist/metrics.js.map +0 -1
  1102. package/packages/resiliency/dist/provider-context.d.ts +0 -100
  1103. package/packages/resiliency/dist/provider-context.d.ts.map +0 -1
  1104. package/packages/resiliency/dist/provider-context.js +0 -362
  1105. package/packages/resiliency/dist/provider-context.js.map +0 -1
  1106. package/packages/resiliency/dist/stateless-lead.d.ts +0 -149
  1107. package/packages/resiliency/dist/stateless-lead.d.ts.map +0 -1
  1108. package/packages/resiliency/dist/stateless-lead.js +0 -308
  1109. package/packages/resiliency/dist/stateless-lead.js.map +0 -1
  1110. package/packages/resiliency/dist/supervisor.d.ts +0 -147
  1111. package/packages/resiliency/dist/supervisor.d.ts.map +0 -1
  1112. package/packages/resiliency/dist/supervisor.js +0 -459
  1113. package/packages/resiliency/dist/supervisor.js.map +0 -1
  1114. package/packages/resiliency/package.json +0 -38
  1115. package/packages/resiliency/src/cgroup-manager.ts +0 -468
  1116. package/packages/resiliency/src/context-persistence.ts +0 -538
  1117. package/packages/resiliency/src/crash-insights.test.ts +0 -620
  1118. package/packages/resiliency/src/crash-insights.ts +0 -660
  1119. package/packages/resiliency/src/gossip-health.ts +0 -333
  1120. package/packages/resiliency/src/health-monitor.ts +0 -371
  1121. package/packages/resiliency/src/index.ts +0 -157
  1122. package/packages/resiliency/src/leader-watchdog.ts +0 -260
  1123. package/packages/resiliency/src/logger.ts +0 -320
  1124. package/packages/resiliency/src/memory-monitor.test.ts +0 -637
  1125. package/packages/resiliency/src/memory-monitor.ts +0 -740
  1126. package/packages/resiliency/src/metrics.ts +0 -311
  1127. package/packages/resiliency/src/provider-context.ts +0 -452
  1128. package/packages/resiliency/src/stateless-lead.ts +0 -408
  1129. package/packages/resiliency/src/supervisor.ts +0 -578
  1130. package/packages/resiliency/tsconfig.json +0 -21
  1131. package/packages/resiliency/vitest.config.ts +0 -9
  1132. package/packages/sdk/dist/discovery.d.ts +0 -10
  1133. package/packages/sdk/dist/discovery.d.ts.map +0 -1
  1134. package/packages/sdk/dist/discovery.js +0 -22
  1135. package/packages/sdk/dist/discovery.js.map +0 -1
  1136. package/packages/sdk/dist/errors.d.ts +0 -9
  1137. package/packages/sdk/dist/errors.d.ts.map +0 -1
  1138. package/packages/sdk/dist/errors.js +0 -9
  1139. package/packages/sdk/dist/errors.js.map +0 -1
  1140. package/packages/sdk/dist/protocol/index.d.ts +0 -8
  1141. package/packages/sdk/dist/protocol/index.d.ts.map +0 -1
  1142. package/packages/sdk/dist/protocol/index.js +0 -8
  1143. package/packages/sdk/dist/protocol/index.js.map +0 -1
  1144. package/packages/sdk/examples/SWARM_CAPABILITIES.md +0 -498
  1145. package/packages/sdk/examples/SWARM_PATTERNS.md +0 -541
  1146. package/packages/sdk/src/client.test.ts +0 -1041
  1147. package/packages/sdk/src/discovery.ts +0 -38
  1148. package/packages/sdk/src/errors.ts +0 -17
  1149. package/packages/sdk/src/logs.test.ts +0 -98
  1150. package/packages/sdk/src/protocol/framing.test.ts +0 -164
  1151. package/packages/sdk/src/protocol/index.ts +0 -8
  1152. package/packages/spawner/.trajectories/index.json +0 -5
  1153. package/packages/spawner/API.md +0 -256
  1154. package/packages/spawner/dist/index.d.ts +0 -8
  1155. package/packages/spawner/dist/index.d.ts.map +0 -1
  1156. package/packages/spawner/dist/index.js +0 -8
  1157. package/packages/spawner/dist/index.js.map +0 -1
  1158. package/packages/spawner/dist/types.d.ts +0 -552
  1159. package/packages/spawner/dist/types.d.ts.map +0 -1
  1160. package/packages/spawner/dist/types.js +0 -193
  1161. package/packages/spawner/dist/types.js.map +0 -1
  1162. package/packages/spawner/package.json +0 -47
  1163. package/packages/spawner/src/index.ts +0 -8
  1164. package/packages/spawner/src/types.test.ts +0 -385
  1165. package/packages/spawner/src/types.ts +0 -228
  1166. package/packages/spawner/tsconfig.json +0 -19
  1167. package/packages/spawner/vitest.config.ts +0 -9
  1168. package/packages/state/dist/agent-state.d.ts +0 -40
  1169. package/packages/state/dist/agent-state.d.ts.map +0 -1
  1170. package/packages/state/dist/agent-state.js +0 -120
  1171. package/packages/state/dist/agent-state.js.map +0 -1
  1172. package/packages/state/dist/index.d.ts +0 -8
  1173. package/packages/state/dist/index.d.ts.map +0 -1
  1174. package/packages/state/dist/index.js +0 -8
  1175. package/packages/state/dist/index.js.map +0 -1
  1176. package/packages/state/package.json +0 -37
  1177. package/packages/state/src/agent-state.test.ts +0 -335
  1178. package/packages/state/src/agent-state.ts +0 -153
  1179. package/packages/state/src/index.ts +0 -12
  1180. package/packages/state/tsconfig.json +0 -21
  1181. package/packages/state/vitest.config.ts +0 -9
  1182. package/packages/storage/dist/adapter.d.ts +0 -189
  1183. package/packages/storage/dist/adapter.d.ts.map +0 -1
  1184. package/packages/storage/dist/adapter.js +0 -267
  1185. package/packages/storage/dist/adapter.js.map +0 -1
  1186. package/packages/storage/dist/batched-sqlite-adapter.d.ts +0 -75
  1187. package/packages/storage/dist/batched-sqlite-adapter.d.ts.map +0 -1
  1188. package/packages/storage/dist/batched-sqlite-adapter.js +0 -189
  1189. package/packages/storage/dist/batched-sqlite-adapter.js.map +0 -1
  1190. package/packages/storage/dist/dead-letter-queue.d.ts +0 -196
  1191. package/packages/storage/dist/dead-letter-queue.d.ts.map +0 -1
  1192. package/packages/storage/dist/dead-letter-queue.js +0 -427
  1193. package/packages/storage/dist/dead-letter-queue.js.map +0 -1
  1194. package/packages/storage/dist/dlq-adapter.d.ts +0 -195
  1195. package/packages/storage/dist/dlq-adapter.d.ts.map +0 -1
  1196. package/packages/storage/dist/dlq-adapter.js +0 -664
  1197. package/packages/storage/dist/dlq-adapter.js.map +0 -1
  1198. package/packages/storage/dist/index.d.ts +0 -6
  1199. package/packages/storage/dist/index.d.ts.map +0 -1
  1200. package/packages/storage/dist/index.js +0 -7
  1201. package/packages/storage/dist/index.js.map +0 -1
  1202. package/packages/storage/dist/jsonl-adapter.d.ts +0 -91
  1203. package/packages/storage/dist/jsonl-adapter.d.ts.map +0 -1
  1204. package/packages/storage/dist/jsonl-adapter.js +0 -580
  1205. package/packages/storage/dist/jsonl-adapter.js.map +0 -1
  1206. package/packages/storage/dist/sqlite-adapter.d.ts +0 -131
  1207. package/packages/storage/dist/sqlite-adapter.d.ts.map +0 -1
  1208. package/packages/storage/dist/sqlite-adapter.js +0 -865
  1209. package/packages/storage/dist/sqlite-adapter.js.map +0 -1
  1210. package/packages/storage/package.json +0 -74
  1211. package/packages/storage/src/adapter.ts +0 -446
  1212. package/packages/storage/src/batched-sqlite-adapter.test.ts +0 -256
  1213. package/packages/storage/src/batched-sqlite-adapter.ts +0 -239
  1214. package/packages/storage/src/dead-letter-queue.ts +0 -643
  1215. package/packages/storage/src/dlq-adapter.test.ts +0 -509
  1216. package/packages/storage/src/dlq-adapter.ts +0 -954
  1217. package/packages/storage/src/index.ts +0 -6
  1218. package/packages/storage/src/jsonl-adapter.test.ts +0 -239
  1219. package/packages/storage/src/jsonl-adapter.ts +0 -704
  1220. package/packages/storage/src/memory-adapter.test.ts +0 -36
  1221. package/packages/storage/src/sqlite-adapter.test.ts +0 -580
  1222. package/packages/storage/src/sqlite-adapter.ts +0 -1099
  1223. package/packages/storage/tsconfig.json +0 -21
  1224. package/packages/storage/vitest.config.ts +0 -9
  1225. package/packages/wrapper/dist/__fixtures__/claude-outputs.d.ts +0 -49
  1226. package/packages/wrapper/dist/__fixtures__/claude-outputs.d.ts.map +0 -1
  1227. package/packages/wrapper/dist/__fixtures__/claude-outputs.js +0 -443
  1228. package/packages/wrapper/dist/__fixtures__/claude-outputs.js.map +0 -1
  1229. package/packages/wrapper/dist/__fixtures__/codex-outputs.d.ts +0 -9
  1230. package/packages/wrapper/dist/__fixtures__/codex-outputs.d.ts.map +0 -1
  1231. package/packages/wrapper/dist/__fixtures__/codex-outputs.js +0 -94
  1232. package/packages/wrapper/dist/__fixtures__/codex-outputs.js.map +0 -1
  1233. package/packages/wrapper/dist/__fixtures__/gemini-outputs.d.ts +0 -19
  1234. package/packages/wrapper/dist/__fixtures__/gemini-outputs.d.ts.map +0 -1
  1235. package/packages/wrapper/dist/__fixtures__/gemini-outputs.js +0 -144
  1236. package/packages/wrapper/dist/__fixtures__/gemini-outputs.js.map +0 -1
  1237. package/packages/wrapper/dist/__fixtures__/index.d.ts +0 -68
  1238. package/packages/wrapper/dist/__fixtures__/index.d.ts.map +0 -1
  1239. package/packages/wrapper/dist/__fixtures__/index.js +0 -44
  1240. package/packages/wrapper/dist/__fixtures__/index.js.map +0 -1
  1241. package/packages/wrapper/dist/auth-detection.d.ts +0 -49
  1242. package/packages/wrapper/dist/auth-detection.d.ts.map +0 -1
  1243. package/packages/wrapper/dist/auth-detection.js +0 -199
  1244. package/packages/wrapper/dist/auth-detection.js.map +0 -1
  1245. package/packages/wrapper/dist/base-wrapper.d.ts +0 -254
  1246. package/packages/wrapper/dist/base-wrapper.d.ts.map +0 -1
  1247. package/packages/wrapper/dist/base-wrapper.js +0 -664
  1248. package/packages/wrapper/dist/base-wrapper.js.map +0 -1
  1249. package/packages/wrapper/dist/client.d.ts +0 -291
  1250. package/packages/wrapper/dist/client.d.ts.map +0 -1
  1251. package/packages/wrapper/dist/client.js +0 -926
  1252. package/packages/wrapper/dist/client.js.map +0 -1
  1253. package/packages/wrapper/dist/id-generator.d.ts +0 -35
  1254. package/packages/wrapper/dist/id-generator.d.ts.map +0 -1
  1255. package/packages/wrapper/dist/id-generator.js +0 -60
  1256. package/packages/wrapper/dist/id-generator.js.map +0 -1
  1257. package/packages/wrapper/dist/idle-detector.d.ts +0 -114
  1258. package/packages/wrapper/dist/idle-detector.d.ts.map +0 -1
  1259. package/packages/wrapper/dist/idle-detector.js +0 -317
  1260. package/packages/wrapper/dist/idle-detector.js.map +0 -1
  1261. package/packages/wrapper/dist/inbox.d.ts +0 -37
  1262. package/packages/wrapper/dist/inbox.d.ts.map +0 -1
  1263. package/packages/wrapper/dist/inbox.js +0 -73
  1264. package/packages/wrapper/dist/inbox.js.map +0 -1
  1265. package/packages/wrapper/dist/index.d.ts +0 -40
  1266. package/packages/wrapper/dist/index.d.ts.map +0 -1
  1267. package/packages/wrapper/dist/index.js +0 -53
  1268. package/packages/wrapper/dist/index.js.map +0 -1
  1269. package/packages/wrapper/dist/opencode-api.d.ts +0 -106
  1270. package/packages/wrapper/dist/opencode-api.d.ts.map +0 -1
  1271. package/packages/wrapper/dist/opencode-api.js +0 -219
  1272. package/packages/wrapper/dist/opencode-api.js.map +0 -1
  1273. package/packages/wrapper/dist/opencode-wrapper.d.ts +0 -161
  1274. package/packages/wrapper/dist/opencode-wrapper.d.ts.map +0 -1
  1275. package/packages/wrapper/dist/opencode-wrapper.js +0 -438
  1276. package/packages/wrapper/dist/opencode-wrapper.js.map +0 -1
  1277. package/packages/wrapper/dist/parser.d.ts +0 -236
  1278. package/packages/wrapper/dist/parser.d.ts.map +0 -1
  1279. package/packages/wrapper/dist/parser.js +0 -1238
  1280. package/packages/wrapper/dist/parser.js.map +0 -1
  1281. package/packages/wrapper/dist/prompt-composer.d.ts +0 -67
  1282. package/packages/wrapper/dist/prompt-composer.d.ts.map +0 -1
  1283. package/packages/wrapper/dist/prompt-composer.js +0 -168
  1284. package/packages/wrapper/dist/prompt-composer.js.map +0 -1
  1285. package/packages/wrapper/dist/relay-pty-orchestrator.d.ts +0 -486
  1286. package/packages/wrapper/dist/relay-pty-orchestrator.d.ts.map +0 -1
  1287. package/packages/wrapper/dist/relay-pty-orchestrator.js +0 -2550
  1288. package/packages/wrapper/dist/relay-pty-orchestrator.js.map +0 -1
  1289. package/packages/wrapper/dist/shared.d.ts +0 -262
  1290. package/packages/wrapper/dist/shared.d.ts.map +0 -1
  1291. package/packages/wrapper/dist/shared.js +0 -507
  1292. package/packages/wrapper/dist/shared.js.map +0 -1
  1293. package/packages/wrapper/dist/stuck-detector.d.ts +0 -161
  1294. package/packages/wrapper/dist/stuck-detector.d.ts.map +0 -1
  1295. package/packages/wrapper/dist/stuck-detector.js +0 -402
  1296. package/packages/wrapper/dist/stuck-detector.js.map +0 -1
  1297. package/packages/wrapper/dist/tmux-resolver.d.ts +0 -55
  1298. package/packages/wrapper/dist/tmux-resolver.d.ts.map +0 -1
  1299. package/packages/wrapper/dist/tmux-resolver.js +0 -175
  1300. package/packages/wrapper/dist/tmux-resolver.js.map +0 -1
  1301. package/packages/wrapper/dist/tmux-wrapper.d.ts +0 -352
  1302. package/packages/wrapper/dist/tmux-wrapper.d.ts.map +0 -1
  1303. package/packages/wrapper/dist/tmux-wrapper.js +0 -1816
  1304. package/packages/wrapper/dist/tmux-wrapper.js.map +0 -1
  1305. package/packages/wrapper/dist/trajectory-integration.d.ts +0 -292
  1306. package/packages/wrapper/dist/trajectory-integration.d.ts.map +0 -1
  1307. package/packages/wrapper/dist/trajectory-integration.js +0 -979
  1308. package/packages/wrapper/dist/trajectory-integration.js.map +0 -1
  1309. package/packages/wrapper/dist/wrapper-events.d.ts +0 -489
  1310. package/packages/wrapper/dist/wrapper-events.d.ts.map +0 -1
  1311. package/packages/wrapper/dist/wrapper-events.js +0 -252
  1312. package/packages/wrapper/dist/wrapper-events.js.map +0 -1
  1313. package/packages/wrapper/dist/wrapper-types.d.ts +0 -41
  1314. package/packages/wrapper/dist/wrapper-types.d.ts.map +0 -1
  1315. package/packages/wrapper/dist/wrapper-types.js +0 -7
  1316. package/packages/wrapper/dist/wrapper-types.js.map +0 -1
  1317. package/packages/wrapper/package.json +0 -60
  1318. package/packages/wrapper/src/__fixtures__/claude-outputs.ts +0 -471
  1319. package/packages/wrapper/src/__fixtures__/codex-outputs.ts +0 -99
  1320. package/packages/wrapper/src/__fixtures__/gemini-outputs.ts +0 -151
  1321. package/packages/wrapper/src/__fixtures__/index.ts +0 -47
  1322. package/packages/wrapper/src/auth-detection.ts +0 -244
  1323. package/packages/wrapper/src/base-wrapper.test.ts +0 -589
  1324. package/packages/wrapper/src/base-wrapper.ts +0 -841
  1325. package/packages/wrapper/src/client.test.ts +0 -351
  1326. package/packages/wrapper/src/client.ts +0 -1166
  1327. package/packages/wrapper/src/id-generator.test.ts +0 -71
  1328. package/packages/wrapper/src/id-generator.ts +0 -69
  1329. package/packages/wrapper/src/idle-detector.test.ts +0 -418
  1330. package/packages/wrapper/src/idle-detector.ts +0 -384
  1331. package/packages/wrapper/src/inbox.test.ts +0 -233
  1332. package/packages/wrapper/src/inbox.ts +0 -89
  1333. package/packages/wrapper/src/index.ts +0 -199
  1334. package/packages/wrapper/src/opencode-api.test.ts +0 -292
  1335. package/packages/wrapper/src/opencode-api.ts +0 -285
  1336. package/packages/wrapper/src/opencode-wrapper.ts +0 -541
  1337. package/packages/wrapper/src/parser.regression.test.ts +0 -251
  1338. package/packages/wrapper/src/parser.test.ts +0 -1359
  1339. package/packages/wrapper/src/parser.ts +0 -1477
  1340. package/packages/wrapper/src/prompt-composer.test.ts +0 -219
  1341. package/packages/wrapper/src/prompt-composer.ts +0 -231
  1342. package/packages/wrapper/src/relay-pty-orchestrator.test.ts +0 -1386
  1343. package/packages/wrapper/src/relay-pty-orchestrator.ts +0 -3041
  1344. package/packages/wrapper/src/shared.test.ts +0 -467
  1345. package/packages/wrapper/src/shared.ts +0 -652
  1346. package/packages/wrapper/src/stuck-detector.test.ts +0 -303
  1347. package/packages/wrapper/src/stuck-detector.ts +0 -511
  1348. package/packages/wrapper/src/tmux-resolver.test.ts +0 -104
  1349. package/packages/wrapper/src/tmux-resolver.ts +0 -207
  1350. package/packages/wrapper/src/tmux-wrapper.test.ts +0 -316
  1351. package/packages/wrapper/src/tmux-wrapper.ts +0 -2095
  1352. package/packages/wrapper/src/trajectory-detection.test.ts +0 -151
  1353. package/packages/wrapper/src/trajectory-integration.ts +0 -1261
  1354. package/packages/wrapper/src/wrapper-events.ts +0 -395
  1355. package/packages/wrapper/src/wrapper-types.ts +0 -45
  1356. package/packages/wrapper/tsconfig.json +0 -19
  1357. package/packages/wrapper/vitest.config.ts +0 -9
  1358. /package/packages/{broker-sdk → sdk}/dist/__tests__/facade.test.d.ts +0 -0
  1359. /package/packages/{broker-sdk → sdk}/dist/__tests__/facade.test.d.ts.map +0 -0
  1360. /package/packages/{broker-sdk → sdk}/dist/__tests__/integration.test.d.ts +0 -0
  1361. /package/packages/{broker-sdk → sdk}/dist/__tests__/integration.test.d.ts.map +0 -0
  1362. /package/packages/{broker-sdk → sdk}/dist/__tests__/quickstart.test.d.ts +0 -0
  1363. /package/packages/{broker-sdk → sdk}/dist/__tests__/quickstart.test.d.ts.map +0 -0
  1364. /package/packages/{broker-sdk → sdk}/dist/__tests__/unit.test.d.ts +0 -0
  1365. /package/packages/{broker-sdk → sdk}/dist/__tests__/unit.test.d.ts.map +0 -0
  1366. /package/packages/{broker-sdk → sdk}/dist/browser.d.ts +0 -0
  1367. /package/packages/{broker-sdk → sdk}/dist/browser.d.ts.map +0 -0
  1368. /package/packages/{broker-sdk → sdk}/dist/browser.js +0 -0
  1369. /package/packages/{broker-sdk → sdk}/dist/browser.js.map +0 -0
  1370. /package/packages/{broker-sdk → sdk}/dist/consensus-helpers.d.ts +0 -0
  1371. /package/packages/{broker-sdk → sdk}/dist/consensus-helpers.d.ts.map +0 -0
  1372. /package/packages/{broker-sdk → sdk}/dist/consensus-helpers.js +0 -0
  1373. /package/packages/{broker-sdk → sdk}/dist/consensus-helpers.js.map +0 -0
  1374. /package/packages/{broker-sdk → sdk}/dist/consensus.d.ts +0 -0
  1375. /package/packages/{broker-sdk → sdk}/dist/consensus.d.ts.map +0 -0
  1376. /package/packages/{broker-sdk → sdk}/dist/consensus.js +0 -0
  1377. /package/packages/{broker-sdk → sdk}/dist/consensus.js.map +0 -0
  1378. /package/packages/{broker-sdk → sdk}/dist/examples/demo.d.ts +0 -0
  1379. /package/packages/{broker-sdk → sdk}/dist/examples/demo.d.ts.map +0 -0
  1380. /package/packages/{broker-sdk → sdk}/dist/examples/demo.js +0 -0
  1381. /package/packages/{broker-sdk → sdk}/dist/examples/demo.js.map +0 -0
  1382. /package/packages/{broker-sdk → sdk}/dist/examples/example.d.ts +0 -0
  1383. /package/packages/{broker-sdk → sdk}/dist/examples/example.d.ts.map +0 -0
  1384. /package/packages/{broker-sdk → sdk}/dist/examples/example.js +0 -0
  1385. /package/packages/{broker-sdk → sdk}/dist/examples/example.js.map +0 -0
  1386. /package/packages/{broker-sdk → sdk}/dist/examples/quickstart.d.ts +0 -0
  1387. /package/packages/{broker-sdk → sdk}/dist/examples/quickstart.d.ts.map +0 -0
  1388. /package/packages/{broker-sdk → sdk}/dist/examples/quickstart.js +0 -0
  1389. /package/packages/{broker-sdk → sdk}/dist/examples/quickstart.js.map +0 -0
  1390. /package/packages/{broker-sdk → sdk}/dist/examples/ralph-loop.d.ts +0 -0
  1391. /package/packages/{broker-sdk → sdk}/dist/examples/ralph-loop.d.ts.map +0 -0
  1392. /package/packages/{broker-sdk → sdk}/dist/examples/ralph-loop.js +0 -0
  1393. /package/packages/{broker-sdk → sdk}/dist/examples/ralph-loop.js.map +0 -0
  1394. /package/packages/{broker-sdk → sdk}/dist/protocol.js +0 -0
  1395. /package/packages/{broker-sdk → sdk}/dist/protocol.js.map +0 -0
  1396. /package/packages/{broker-sdk → sdk}/dist/pty.d.ts +0 -0
  1397. /package/packages/{broker-sdk → sdk}/dist/shadow.js +0 -0
  1398. /package/packages/{broker-sdk → sdk}/dist/workflows/barrier.d.ts +0 -0
  1399. /package/packages/{broker-sdk → sdk}/dist/workflows/barrier.d.ts.map +0 -0
  1400. /package/packages/{broker-sdk → sdk}/dist/workflows/barrier.js +0 -0
  1401. /package/packages/{broker-sdk → sdk}/dist/workflows/barrier.js.map +0 -0
  1402. /package/packages/{broker-sdk → sdk}/dist/workflows/memory-db.d.ts +0 -0
  1403. /package/packages/{broker-sdk → sdk}/dist/workflows/memory-db.d.ts.map +0 -0
  1404. /package/packages/{broker-sdk → sdk}/dist/workflows/memory-db.js +0 -0
  1405. /package/packages/{broker-sdk → sdk}/dist/workflows/memory-db.js.map +0 -0
  1406. /package/packages/{broker-sdk → sdk}/dist/workflows/state.d.ts +0 -0
  1407. /package/packages/{broker-sdk → sdk}/dist/workflows/state.d.ts.map +0 -0
  1408. /package/packages/{broker-sdk → sdk}/dist/workflows/state.js +0 -0
  1409. /package/packages/{broker-sdk → sdk}/dist/workflows/state.js.map +0 -0
  1410. /package/packages/{broker-sdk → sdk}/src/__tests__/workflow-trajectory.test.ts +0 -0
  1411. /package/packages/{broker-sdk → sdk}/src/browser.ts +0 -0
  1412. /package/packages/{broker-sdk → sdk}/src/consensus-helpers.ts +0 -0
  1413. /package/packages/{broker-sdk → sdk}/src/consensus.ts +0 -0
  1414. /package/packages/{broker-sdk → sdk}/src/examples/demo.ts +0 -0
  1415. /package/packages/{broker-sdk → sdk}/src/examples/example.ts +0 -0
  1416. /package/packages/{broker-sdk → sdk}/src/examples/quickstart.ts +0 -0
  1417. /package/packages/{broker-sdk → sdk}/src/examples/ralph-loop.ts +0 -0
  1418. /package/packages/{broker-sdk → sdk}/src/examples/sample-prd.json +0 -0
  1419. /package/packages/{broker-sdk → sdk}/src/workflows/barrier.ts +0 -0
  1420. /package/packages/{broker-sdk → sdk}/src/workflows/memory-db.ts +0 -0
  1421. /package/packages/{broker-sdk → sdk}/src/workflows/state.ts +0 -0
@@ -1,1376 +0,0 @@
1
- /**
2
- * Daemon Orchestrator
3
- *
4
- * Manages multiple workspace daemons and provides a unified API for the dashboard.
5
- * This is the top-level service that runs by default, handling workspace switching
6
- * and agent management across all connected repositories.
7
- */
8
-
9
- import * as http from 'http';
10
- import * as path from 'path';
11
- import * as fs from 'fs';
12
- import { EventEmitter } from 'events';
13
- import { WebSocketServer, WebSocket } from 'ws';
14
- import {
15
- createLogger,
16
- metrics,
17
- getSupervisor,
18
- getMemoryMonitor,
19
- formatBytes,
20
- type MemoryAlert,
21
- type MemorySnapshot,
22
- } from '@agent-relay/resiliency';
23
- import { Daemon } from './server.js';
24
- import { AgentSpawner } from '@agent-relay/bridge';
25
- import { getProjectPaths } from '@agent-relay/config';
26
- import { getCloudSync, createCloudPersistenceHandler } from './cloud-sync.js';
27
- import type {
28
- Workspace,
29
- Agent,
30
- DaemonEvent,
31
- UserSession,
32
- ProviderType,
33
- AddWorkspaceRequest,
34
- SpawnAgentRequest,
35
- } from './types.js';
36
-
37
- const logger = createLogger('orchestrator');
38
-
39
- function generateId(): string {
40
- return Math.random().toString(36).substring(2, 15);
41
- }
42
-
43
- export interface OrchestratorConfig {
44
- /** Port for HTTP/WebSocket API */
45
- port: number;
46
- /** Host to bind to */
47
- host: string;
48
- /** Data directory for persistence */
49
- dataDir: string;
50
- /** Auto-start daemons for workspaces */
51
- autoStartDaemons: boolean;
52
- }
53
-
54
- /**
55
- * Determine the default host binding.
56
- * - In cloud environments, bind to '::' for IPv6+IPv4 dual-stack (required for Fly.io 6PN)
57
- * - Locally, bind to localhost for security
58
- * - Can be overridden with AGENT_RELAY_API_HOST env var
59
- */
60
- function getDefaultHost(): string {
61
- // Explicit override
62
- if (process.env.AGENT_RELAY_API_HOST) {
63
- return process.env.AGENT_RELAY_API_HOST;
64
- }
65
- // Cloud environment detection - bind to :: for IPv6 + IPv4 dual-stack
66
- // Fly.io internal network uses IPv6 (fdaa:...), so 0.0.0.0 won't work
67
- const isCloudEnvironment =
68
- process.env.FLY_APP_NAME || // Fly.io
69
- process.env.WORKSPACE_ID || // Agent Relay workspace
70
- process.env.RELAY_WORKSPACE_ID || // Alternative workspace ID
71
- process.env.RUNNING_IN_DOCKER === 'true'; // Docker container
72
- return isCloudEnvironment ? '::' : 'localhost';
73
- }
74
-
75
- const DEFAULT_CONFIG: OrchestratorConfig = {
76
- port: 3456,
77
- host: getDefaultHost(),
78
- dataDir: path.join(process.env.HOME || '', '.agent-relay', 'orchestrator'),
79
- autoStartDaemons: true,
80
- };
81
-
82
- interface ManagedWorkspace extends Workspace {
83
- daemon?: Daemon;
84
- spawner?: AgentSpawner;
85
- }
86
-
87
- interface AgentHealthState {
88
- key: string;
89
- workspaceId: string;
90
- agentName: string;
91
- pid: number;
92
- lastHeartbeatAt?: Date;
93
- lastSampleAt?: Date;
94
- lastRssBytes?: number;
95
- lastCpuPercent?: number;
96
- releasing?: boolean;
97
- lastCpuAlertAt?: number;
98
- }
99
-
100
- const HEARTBEAT_INTERVAL_MS = 10_000;
101
- const RESOURCE_ALERT_COOLDOWN_MS = 60_000;
102
- const parsedCpuThreshold = parseFloat(process.env.AGENT_CPU_ALERT_THRESHOLD || '300');
103
- const CPU_ALERT_THRESHOLD = Number.isFinite(parsedCpuThreshold) ? parsedCpuThreshold : 300;
104
-
105
- export class Orchestrator extends EventEmitter {
106
- private config: OrchestratorConfig;
107
- private workspaces = new Map<string, ManagedWorkspace>();
108
- private activeWorkspaceId?: string;
109
- private server?: http.Server;
110
- private wss?: WebSocketServer;
111
- private sessions = new Map<WebSocket, UserSession>();
112
- private supervisor = getSupervisor({
113
- autoRestart: true,
114
- maxRestarts: 5,
115
- contextPersistence: { enabled: true, autoInjectOnRestart: true },
116
- });
117
- private workspacesFile: string;
118
-
119
- // Track alive status for ping/pong keepalive
120
- private clientAlive = new WeakMap<WebSocket, boolean>();
121
- private pingInterval?: NodeJS.Timeout;
122
- private heartbeatInterval?: NodeJS.Timeout;
123
- private memoryMonitor = getMemoryMonitor({ checkIntervalMs: 10_000 });
124
- private agentHealth = new Map<string, AgentHealthState>();
125
-
126
- // Event handler references for cleanup
127
- private memorySampleHandler?: (event: { name: string; snapshot: MemorySnapshot }) => void;
128
- private memoryAlertHandler?: (alert: MemoryAlert) => void;
129
-
130
- constructor(config: Partial<OrchestratorConfig> = {}) {
131
- super();
132
- this.config = { ...DEFAULT_CONFIG, ...config };
133
- this.workspacesFile = path.join(this.config.dataDir, 'workspaces.json');
134
-
135
- // Ensure data directory exists
136
- if (!fs.existsSync(this.config.dataDir)) {
137
- fs.mkdirSync(this.config.dataDir, { recursive: true });
138
- }
139
-
140
- // Load existing workspaces
141
- this.loadWorkspaces();
142
- }
143
-
144
- /**
145
- * Start the orchestrator
146
- */
147
- async start(): Promise<void> {
148
- logger.info('Starting orchestrator', {
149
- port: this.config.port,
150
- host: this.config.host,
151
- });
152
-
153
- // Start supervisor
154
- this.supervisor.start();
155
-
156
- // Auto-start daemons for workspaces
157
- if (this.config.autoStartDaemons) {
158
- for (const [id, workspace] of this.workspaces) {
159
- if (fs.existsSync(workspace.path)) {
160
- await this.startWorkspaceDaemon(id);
161
- }
162
- }
163
- }
164
-
165
- // Start HTTP server
166
- this.server = http.createServer((req, res) => this.handleRequest(req, res));
167
-
168
- // Setup WebSocket
169
- this.wss = new WebSocketServer({ server: this.server });
170
- this.wss.on('connection', (ws, req) => this.handleWebSocket(ws, req));
171
-
172
- // Setup ping/pong keepalive (30 second interval)
173
- this.pingInterval = setInterval(() => {
174
- this.wss?.clients.forEach((ws) => {
175
- if (this.clientAlive.get(ws) === false) {
176
- logger.info('WebSocket client unresponsive, closing');
177
- ws.terminate();
178
- return;
179
- }
180
- this.clientAlive.set(ws, false);
181
- ws.ping();
182
- });
183
- }, 30000);
184
-
185
- this.startHealthMonitoring();
186
-
187
- return new Promise((resolve) => {
188
- this.server!.listen(this.config.port, this.config.host, () => {
189
- logger.info('Orchestrator started', {
190
- url: `http://${this.config.host}:${this.config.port}`,
191
- });
192
- resolve();
193
- });
194
- });
195
- }
196
-
197
- /**
198
- * Stop the orchestrator
199
- */
200
- async stop(): Promise<void> {
201
- logger.info('Stopping orchestrator');
202
-
203
- // Clear ping interval
204
- if (this.pingInterval) {
205
- clearInterval(this.pingInterval);
206
- this.pingInterval = undefined;
207
- }
208
-
209
- if (this.heartbeatInterval) {
210
- clearInterval(this.heartbeatInterval);
211
- this.heartbeatInterval = undefined;
212
- }
213
-
214
- // Clean up memory monitor event handlers before stopping
215
- if (this.memorySampleHandler) {
216
- this.memoryMonitor.off('sample', this.memorySampleHandler);
217
- this.memorySampleHandler = undefined;
218
- }
219
- if (this.memoryAlertHandler) {
220
- this.memoryMonitor.off('alert', this.memoryAlertHandler);
221
- this.memoryAlertHandler = undefined;
222
- }
223
-
224
- this.memoryMonitor.stop();
225
-
226
- // Stop all workspace daemons
227
- for (const [id] of this.workspaces) {
228
- await this.stopWorkspaceDaemon(id);
229
- }
230
-
231
- // Stop supervisor
232
- this.supervisor.stop();
233
-
234
- // Close WebSocket connections
235
- if (this.wss) {
236
- for (const ws of this.wss.clients) {
237
- ws.close();
238
- }
239
- this.wss.close();
240
- }
241
-
242
- // Close HTTP server
243
- if (this.server) {
244
- return new Promise((resolve) => {
245
- this.server!.close(() => {
246
- logger.info('Orchestrator stopped');
247
- resolve();
248
- });
249
- });
250
- }
251
- }
252
-
253
- // === Workspace Management ===
254
-
255
- /**
256
- * Add a workspace
257
- */
258
- addWorkspace(request: AddWorkspaceRequest): Workspace {
259
- const resolvedPath = this.resolvePath(request.path);
260
-
261
- // Check if already exists
262
- const existing = this.findWorkspaceByPath(resolvedPath);
263
- if (existing) {
264
- return existing;
265
- }
266
-
267
- // Validate path exists
268
- if (!fs.existsSync(resolvedPath)) {
269
- throw new Error(`Path does not exist: ${resolvedPath}`);
270
- }
271
-
272
- const workspace: ManagedWorkspace = {
273
- id: generateId(),
274
- name: request.name || path.basename(resolvedPath),
275
- path: resolvedPath,
276
- status: 'inactive',
277
- provider: request.provider || this.detectProvider(resolvedPath),
278
- createdAt: new Date(),
279
- lastActiveAt: new Date(),
280
- ...this.getGitInfo(resolvedPath),
281
- };
282
-
283
- this.workspaces.set(workspace.id, workspace);
284
- this.saveWorkspaces();
285
-
286
- logger.info('Workspace added', { id: workspace.id, name: workspace.name });
287
-
288
- this.broadcastEvent({
289
- type: 'workspace:added',
290
- workspaceId: workspace.id,
291
- data: this.toPublicWorkspace(workspace),
292
- timestamp: new Date(),
293
- });
294
-
295
- // Auto-start daemon
296
- if (this.config.autoStartDaemons) {
297
- this.startWorkspaceDaemon(workspace.id).catch((err) => {
298
- logger.error('Failed to start workspace daemon', { id: workspace.id, error: String(err) });
299
- });
300
- }
301
-
302
- return this.toPublicWorkspace(workspace);
303
- }
304
-
305
- /**
306
- * Remove a workspace
307
- */
308
- async removeWorkspace(workspaceId: string): Promise<boolean> {
309
- const workspace = this.workspaces.get(workspaceId);
310
- if (!workspace) return false;
311
-
312
- // Stop daemon if running
313
- await this.stopWorkspaceDaemon(workspaceId);
314
-
315
- // Clear active if this was active
316
- if (this.activeWorkspaceId === workspaceId) {
317
- this.activeWorkspaceId = undefined;
318
- }
319
-
320
- this.workspaces.delete(workspaceId);
321
- this.saveWorkspaces();
322
-
323
- logger.info('Workspace removed', { id: workspaceId });
324
-
325
- this.broadcastEvent({
326
- type: 'workspace:removed',
327
- workspaceId,
328
- data: { id: workspaceId },
329
- timestamp: new Date(),
330
- });
331
-
332
- return true;
333
- }
334
-
335
- /**
336
- * Switch to a workspace
337
- */
338
- async switchWorkspace(workspaceId: string): Promise<Workspace> {
339
- const workspace = this.workspaces.get(workspaceId);
340
- if (!workspace) {
341
- throw new Error(`Workspace not found: ${workspaceId}`);
342
- }
343
-
344
- const previousId = this.activeWorkspaceId;
345
-
346
- // Update status
347
- if (previousId && previousId !== workspaceId) {
348
- const prev = this.workspaces.get(previousId);
349
- if (prev) {
350
- prev.status = 'inactive';
351
- }
352
- }
353
-
354
- workspace.status = 'active';
355
- workspace.lastActiveAt = new Date();
356
- this.activeWorkspaceId = workspaceId;
357
-
358
- // Ensure daemon is running
359
- if (!workspace.daemon?.isRunning) {
360
- await this.startWorkspaceDaemon(workspaceId);
361
- }
362
-
363
- this.saveWorkspaces();
364
-
365
- logger.info('Switched workspace', { id: workspaceId, name: workspace.name });
366
-
367
- this.broadcastEvent({
368
- type: 'workspace:switched',
369
- workspaceId,
370
- data: { previousId, currentId: workspaceId },
371
- timestamp: new Date(),
372
- });
373
-
374
- return this.toPublicWorkspace(workspace);
375
- }
376
-
377
- /**
378
- * Get all workspaces
379
- */
380
- getWorkspaces(): Workspace[] {
381
- return Array.from(this.workspaces.values()).map((w) => this.toPublicWorkspace(w));
382
- }
383
-
384
- /**
385
- * Get workspace by ID
386
- */
387
- getWorkspace(workspaceId: string): Workspace | undefined {
388
- const workspace = this.workspaces.get(workspaceId);
389
- return workspace ? this.toPublicWorkspace(workspace) : undefined;
390
- }
391
-
392
- /**
393
- * Get active workspace
394
- */
395
- getActiveWorkspace(): Workspace | undefined {
396
- if (!this.activeWorkspaceId) return undefined;
397
- return this.getWorkspace(this.activeWorkspaceId);
398
- }
399
-
400
- // === Agent Management ===
401
-
402
- /**
403
- * Spawn an agent in a workspace
404
- */
405
- async spawnAgent(workspaceId: string, request: SpawnAgentRequest): Promise<Agent> {
406
- const workspace = this.workspaces.get(workspaceId);
407
- if (!workspace) {
408
- throw new Error(`Workspace not found: ${workspaceId}`);
409
- }
410
-
411
- // Ensure daemon is running
412
- if (!workspace.daemon?.isRunning) {
413
- await this.startWorkspaceDaemon(workspaceId);
414
- }
415
-
416
- // Ensure spawner exists
417
- if (!workspace.spawner) {
418
- workspace.spawner = new AgentSpawner({
419
- projectRoot: workspace.path,
420
- onMarkSpawning: (name) => workspace.daemon?.markSpawning(name),
421
- onClearSpawning: (name) => workspace.daemon?.clearSpawning(name),
422
- });
423
- }
424
-
425
- const result = await workspace.spawner.spawn({
426
- name: request.name,
427
- cli: this.getCliForProvider(request.provider || workspace.provider),
428
- task: request.task || '',
429
- });
430
-
431
- if (!result.success) {
432
- throw new Error(result.error || 'Failed to spawn agent');
433
- }
434
-
435
- const agent: Agent = {
436
- id: generateId(),
437
- name: request.name,
438
- workspaceId,
439
- provider: request.provider || workspace.provider,
440
- status: 'running',
441
- pid: result.pid,
442
- task: request.task,
443
- spawnedAt: new Date(),
444
- restartCount: 0,
445
- };
446
-
447
- // Register for health monitoring if we have a PID
448
- if (result.pid) {
449
- this.registerAgentHealth(workspaceId, request.name, result.pid);
450
- } else {
451
- logger.warn('Agent spawned without PID - health monitoring disabled', {
452
- workspaceId,
453
- agentName: request.name,
454
- });
455
- }
456
-
457
- logger.info('Agent spawned', { id: agent.id, name: agent.name, workspaceId, pid: result.pid });
458
-
459
- this.broadcastEvent({
460
- type: 'agent:spawned',
461
- workspaceId,
462
- agentId: agent.id,
463
- data: agent,
464
- timestamp: new Date(),
465
- });
466
-
467
- return agent;
468
- }
469
-
470
- /**
471
- * Stop an agent
472
- */
473
- async stopAgent(workspaceId: string, agentName: string): Promise<boolean> {
474
- const workspace = this.workspaces.get(workspaceId);
475
- if (!workspace?.spawner) return false;
476
-
477
- // Mark as releasing BEFORE stopping to prevent crash announcement
478
- this.markAgentReleasing(workspaceId, agentName);
479
-
480
- try {
481
- const released = await workspace.spawner.release(agentName);
482
-
483
- if (released) {
484
- // Unregister from health monitoring after successful release
485
- this.unregisterAgentHealth(workspaceId, agentName);
486
-
487
- this.broadcastEvent({
488
- type: 'agent:stopped',
489
- workspaceId,
490
- data: { name: agentName },
491
- timestamp: new Date(),
492
- });
493
-
494
- logger.info('Agent stopped gracefully', { workspaceId, agentName });
495
- } else {
496
- // Release failed - clear the releasing flag
497
- const health = this.getAgentHealth(workspaceId, agentName);
498
- if (health) {
499
- health.releasing = false;
500
- }
501
- }
502
-
503
- return released;
504
- } catch (err) {
505
- // Release threw an exception - clean up health tracking to avoid stuck state
506
- this.unregisterAgentHealth(workspaceId, agentName);
507
- logger.error('Agent release failed with exception', {
508
- workspaceId,
509
- agentName,
510
- error: String(err),
511
- });
512
- throw err;
513
- }
514
- }
515
-
516
- /**
517
- * Get agents in a workspace
518
- */
519
- getAgents(workspaceId: string): Agent[] {
520
- const workspace = this.workspaces.get(workspaceId);
521
- if (!workspace?.spawner) return [];
522
-
523
- return workspace.spawner.getActiveWorkers().map((w) => {
524
- // Get health data for this agent
525
- const health = this.getAgentHealth(workspaceId, w.name);
526
-
527
- return {
528
- id: w.name,
529
- name: w.name,
530
- workspaceId,
531
- provider: this.detectProviderFromCli(w.cli),
532
- status: 'running' as const,
533
- pid: w.pid,
534
- task: w.task,
535
- spawnedAt: new Date(w.spawnedAt),
536
- lastHealthCheck: health?.lastHeartbeatAt,
537
- rssBytes: health?.lastRssBytes,
538
- cpuPercent: health?.lastCpuPercent,
539
- restartCount: 0,
540
- };
541
- });
542
- }
543
-
544
- // === Private Methods ===
545
-
546
- /**
547
- * Start daemon for a workspace
548
- */
549
- private async startWorkspaceDaemon(workspaceId: string): Promise<void> {
550
- const workspace = this.workspaces.get(workspaceId);
551
- if (!workspace) return;
552
-
553
- if (workspace.daemon?.isRunning) return;
554
-
555
- try {
556
- const paths = getProjectPaths(workspace.path);
557
-
558
- workspace.daemon = new Daemon({
559
- socketPath: paths.socketPath,
560
- teamDir: paths.teamDir,
561
- });
562
-
563
- await workspace.daemon.start();
564
- workspace.status = 'active';
565
-
566
- // Create spawner
567
- workspace.spawner = new AgentSpawner({
568
- projectRoot: workspace.path,
569
- onMarkSpawning: (name) => workspace.daemon?.markSpawning(name),
570
- onClearSpawning: (name) => workspace.daemon?.clearSpawning(name),
571
- });
572
-
573
- // Set up cloud persistence for session tracking (if cloud sync is enabled)
574
- const cloudSync = getCloudSync();
575
- if (cloudSync.isConnected()) {
576
- const persistenceHandler = createCloudPersistenceHandler(cloudSync, workspace.cloudId);
577
- workspace.spawner.setCloudPersistence(persistenceHandler);
578
- logger.info('Cloud persistence enabled for workspace', { id: workspaceId });
579
- }
580
-
581
- // Set up agent death notifications
582
- workspace.spawner.setOnAgentDeath((info) => {
583
- // Broadcast to dashboard via WebSocket
584
- this.broadcastEvent({
585
- type: 'agent:crashed',
586
- workspaceId,
587
- data: {
588
- name: info.name,
589
- exitCode: info.exitCode,
590
- continuityAgentId: info.agentId,
591
- resumeInstructions: info.resumeInstructions,
592
- },
593
- timestamp: new Date(),
594
- });
595
-
596
- // Broadcast to all connected agents via relay
597
- const message = info.agentId
598
- ? `AGENT DIED: "${info.name}" has crashed (exit code: ${info.exitCode}). Agent ID: ${info.agentId}. ${info.resumeInstructions}`
599
- : `AGENT DIED: "${info.name}" has crashed (exit code: ${info.exitCode}).`;
600
-
601
- workspace.daemon?.broadcastSystemMessage(message, {
602
- agentName: info.name,
603
- exitCode: info.exitCode,
604
- agentId: info.agentId,
605
- resumeInstructions: info.resumeInstructions,
606
- });
607
-
608
- logger.warn('Agent died', {
609
- name: info.name,
610
- exitCode: info.exitCode,
611
- agentId: info.agentId,
612
- });
613
- });
614
-
615
- logger.info('Workspace daemon started', { id: workspaceId, socket: paths.socketPath });
616
- } catch (err) {
617
- workspace.status = 'error';
618
- logger.error('Failed to start workspace daemon', { id: workspaceId, error: String(err) });
619
- throw err;
620
- }
621
- }
622
-
623
- /**
624
- * Stop daemon for a workspace
625
- */
626
- private async stopWorkspaceDaemon(workspaceId: string): Promise<void> {
627
- const workspace = this.workspaces.get(workspaceId);
628
- if (!workspace) return;
629
-
630
- // Mark all agents as releasing to prevent crash announcements
631
- const workspaceHealth = this.getWorkspaceAgentHealth(workspaceId);
632
- for (const health of workspaceHealth) {
633
- this.markAgentReleasing(workspaceId, health.agentName);
634
- }
635
-
636
- // Release all agents first
637
- if (workspace.spawner) {
638
- await workspace.spawner.releaseAll();
639
- }
640
-
641
- // Clean up health monitoring for all agents in this workspace
642
- for (const health of workspaceHealth) {
643
- this.unregisterAgentHealth(workspaceId, health.agentName);
644
- }
645
-
646
- // Stop daemon
647
- if (workspace.daemon) {
648
- await workspace.daemon.stop();
649
- workspace.daemon = undefined;
650
- }
651
-
652
- workspace.spawner = undefined;
653
- workspace.status = 'inactive';
654
-
655
- logger.info('Workspace daemon stopped', { id: workspaceId });
656
- }
657
-
658
- /**
659
- * Handle HTTP request
660
- */
661
- private async handleRequest(req: http.IncomingMessage, res: http.ServerResponse): Promise<void> {
662
- // CORS
663
- res.setHeader('Access-Control-Allow-Origin', '*');
664
- res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
665
- res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
666
-
667
- if (req.method === 'OPTIONS') {
668
- res.writeHead(204);
669
- res.end();
670
- return;
671
- }
672
-
673
- const url = new URL(req.url || '/', `http://${req.headers.host}`);
674
- const pathname = url.pathname;
675
- const method = req.method || 'GET';
676
-
677
- try {
678
- let response: { status: number; body: unknown };
679
-
680
- // Health check
681
- if (pathname === '/' && method === 'GET') {
682
- response = { status: 200, body: { status: 'ok', version: '1.0.0' } };
683
- }
684
- // Metrics
685
- else if (pathname === '/metrics' && method === 'GET') {
686
- res.setHeader('Content-Type', 'text/plain');
687
- res.writeHead(200);
688
- res.end(metrics.toPrometheus());
689
- return;
690
- }
691
- // List workspaces
692
- else if (pathname === '/workspaces' && method === 'GET') {
693
- response = {
694
- status: 200,
695
- body: {
696
- workspaces: this.getWorkspaces(),
697
- activeWorkspaceId: this.activeWorkspaceId,
698
- },
699
- };
700
- }
701
- // Add workspace
702
- else if (pathname === '/workspaces' && method === 'POST') {
703
- const body = await this.parseBody(req);
704
- const workspace = this.addWorkspace(body as AddWorkspaceRequest);
705
- response = { status: 201, body: workspace };
706
- }
707
- // Get workspace
708
- else if (pathname.match(/^\/workspaces\/[^/]+$/) && method === 'GET') {
709
- const id = pathname.split('/')[2];
710
- const workspace = this.getWorkspace(id);
711
- response = workspace
712
- ? { status: 200, body: workspace }
713
- : { status: 404, body: { error: 'Not found' } };
714
- }
715
- // Delete workspace
716
- else if (pathname.match(/^\/workspaces\/[^/]+$/) && method === 'DELETE') {
717
- const id = pathname.split('/')[2];
718
- const removed = await this.removeWorkspace(id);
719
- response = removed
720
- ? { status: 204, body: null }
721
- : { status: 404, body: { error: 'Not found' } };
722
- }
723
- // Switch workspace
724
- else if (pathname.match(/^\/workspaces\/[^/]+\/switch$/) && method === 'POST') {
725
- const id = pathname.split('/')[2];
726
- const workspace = await this.switchWorkspace(id);
727
- response = { status: 200, body: workspace };
728
- }
729
- // List agents in workspace
730
- else if (pathname.match(/^\/workspaces\/[^/]+\/agents$/) && method === 'GET') {
731
- const id = pathname.split('/')[2];
732
- const agents = this.getAgents(id);
733
- response = { status: 200, body: { agents, workspaceId: id } };
734
- }
735
- // Spawn agent
736
- else if (pathname.match(/^\/workspaces\/[^/]+\/agents$/) && method === 'POST') {
737
- const id = pathname.split('/')[2];
738
- const body = await this.parseBody(req);
739
- const agent = await this.spawnAgent(id, body as SpawnAgentRequest);
740
- response = { status: 201, body: agent };
741
- }
742
- // Stop agent
743
- else if (pathname.match(/^\/workspaces\/[^/]+\/agents\/[^/]+$/) && method === 'DELETE') {
744
- const parts = pathname.split('/');
745
- const workspaceId = parts[2];
746
- const agentName = parts[4];
747
- const stopped = await this.stopAgent(workspaceId, agentName);
748
- response = stopped
749
- ? { status: 204, body: null }
750
- : { status: 404, body: { error: 'Not found' } };
751
- }
752
- // Not found
753
- else {
754
- response = { status: 404, body: { error: 'Not found' } };
755
- }
756
-
757
- res.setHeader('Content-Type', 'application/json');
758
- res.writeHead(response.status);
759
- res.end(response.body ? JSON.stringify(response.body) : '');
760
- } catch (err) {
761
- logger.error('Request error', { error: String(err) });
762
- res.setHeader('Content-Type', 'application/json');
763
- res.writeHead(500);
764
- res.end(JSON.stringify({ error: String(err) }));
765
- }
766
- }
767
-
768
- /**
769
- * Handle WebSocket connection
770
- */
771
- private handleWebSocket(ws: WebSocket, _req: http.IncomingMessage): void {
772
- logger.info('WebSocket client connected');
773
-
774
- // Mark client as alive for ping/pong keepalive
775
- this.clientAlive.set(ws, true);
776
-
777
- // Handle pong responses
778
- ws.on('pong', () => {
779
- this.clientAlive.set(ws, true);
780
- });
781
-
782
- const session: UserSession = {
783
- userId: 'anonymous',
784
- githubUsername: 'anonymous',
785
- connectedAt: new Date(),
786
- activeWorkspaceId: this.activeWorkspaceId,
787
- };
788
- this.sessions.set(ws, session);
789
-
790
- // Send initial state
791
- this.sendToClient(ws, {
792
- type: 'init',
793
- data: {
794
- workspaces: this.getWorkspaces(),
795
- activeWorkspaceId: this.activeWorkspaceId,
796
- agents: this.activeWorkspaceId ? this.getAgents(this.activeWorkspaceId) : [],
797
- },
798
- });
799
-
800
- ws.on('message', (data) => {
801
- try {
802
- const msg = JSON.parse(data.toString());
803
- this.handleWebSocketMessage(ws, session, msg);
804
- } catch (err) {
805
- logger.error('WebSocket message error', { error: String(err) });
806
- }
807
- });
808
-
809
- ws.on('close', () => {
810
- this.sessions.delete(ws);
811
- logger.info('WebSocket client disconnected');
812
- });
813
- }
814
-
815
- /**
816
- * Handle WebSocket message
817
- */
818
- private handleWebSocketMessage(
819
- ws: WebSocket,
820
- session: UserSession,
821
- msg: { type: string; data?: unknown }
822
- ): void {
823
- switch (msg.type) {
824
- case 'switch_workspace':
825
- if (typeof msg.data === 'string') {
826
- this.switchWorkspace(msg.data)
827
- .then((workspace) => {
828
- session.activeWorkspaceId = workspace.id;
829
- })
830
- .catch((err) => {
831
- this.sendToClient(ws, { type: 'error', data: String(err) });
832
- });
833
- }
834
- break;
835
- case 'ping':
836
- this.sendToClient(ws, { type: 'pong' });
837
- break;
838
- }
839
- }
840
-
841
- /**
842
- * Send to WebSocket client
843
- */
844
- private sendToClient(ws: WebSocket, msg: unknown): void {
845
- if (ws.readyState === WebSocket.OPEN) {
846
- ws.send(JSON.stringify(msg));
847
- }
848
- }
849
-
850
- /**
851
- * Broadcast event to all clients
852
- */
853
- private broadcastEvent(event: DaemonEvent): void {
854
- if (!this.wss) return;
855
- const msg = JSON.stringify({ type: 'event', data: event });
856
- for (const ws of this.wss.clients) {
857
- if (ws.readyState === WebSocket.OPEN) {
858
- ws.send(msg);
859
- }
860
- }
861
- }
862
-
863
- /**
864
- * Parse request body
865
- */
866
- private parseBody(req: http.IncomingMessage): Promise<unknown> {
867
- return new Promise((resolve, reject) => {
868
- let data = '';
869
- req.on('data', (chunk) => (data += chunk));
870
- req.on('end', () => {
871
- try {
872
- resolve(data ? JSON.parse(data) : {});
873
- } catch {
874
- reject(new Error('Invalid JSON'));
875
- }
876
- });
877
- });
878
- }
879
-
880
- /**
881
- * Load workspaces from disk
882
- */
883
- private loadWorkspaces(): void {
884
- if (!fs.existsSync(this.workspacesFile)) return;
885
- try {
886
- const data = JSON.parse(fs.readFileSync(this.workspacesFile, 'utf8'));
887
- for (const w of data.workspaces || []) {
888
- this.workspaces.set(w.id, {
889
- ...w,
890
- createdAt: new Date(w.createdAt),
891
- lastActiveAt: new Date(w.lastActiveAt),
892
- status: 'inactive',
893
- });
894
- }
895
- this.activeWorkspaceId = data.activeWorkspaceId;
896
- logger.info('Loaded workspaces', { count: this.workspaces.size });
897
- } catch (err) {
898
- logger.error('Failed to load workspaces', { error: String(err) });
899
- }
900
- }
901
-
902
- /**
903
- * Save workspaces to disk
904
- */
905
- private saveWorkspaces(): void {
906
- try {
907
- const data = {
908
- workspaces: Array.from(this.workspaces.values()).map((w) => this.toPublicWorkspace(w)),
909
- activeWorkspaceId: this.activeWorkspaceId,
910
- };
911
- fs.writeFileSync(this.workspacesFile, JSON.stringify(data, null, 2));
912
- } catch (err) {
913
- logger.error('Failed to save workspaces', { error: String(err) });
914
- }
915
- }
916
-
917
- /**
918
- * Find workspace by path
919
- */
920
- private findWorkspaceByPath(path: string): Workspace | undefined {
921
- const resolved = this.resolvePath(path);
922
- const workspace = Array.from(this.workspaces.values()).find((w) => w.path === resolved);
923
- return workspace ? this.toPublicWorkspace(workspace) : undefined;
924
- }
925
-
926
- /**
927
- * Resolve path
928
- */
929
- private resolvePath(p: string): string {
930
- if (p.startsWith('~')) {
931
- p = path.join(process.env.HOME || '', p.slice(1));
932
- }
933
- return path.resolve(p);
934
- }
935
-
936
- /**
937
- * Detect provider from workspace
938
- */
939
- private detectProvider(workspacePath: string): ProviderType {
940
- if (
941
- fs.existsSync(path.join(workspacePath, 'CLAUDE.md')) ||
942
- fs.existsSync(path.join(workspacePath, '.claude'))
943
- ) {
944
- return 'claude';
945
- }
946
- if (fs.existsSync(path.join(workspacePath, '.codex'))) {
947
- return 'codex';
948
- }
949
- if (fs.existsSync(path.join(workspacePath, '.gemini'))) {
950
- return 'gemini';
951
- }
952
- return 'generic';
953
- }
954
-
955
- /**
956
- * Detect provider from CLI command
957
- */
958
- private detectProviderFromCli(cli: string): ProviderType {
959
- if (cli.includes('claude')) return 'claude';
960
- if (cli.includes('codex')) return 'codex';
961
- if (cli.includes('gemini')) return 'gemini';
962
- return 'generic';
963
- }
964
-
965
- /**
966
- * Get CLI command for provider
967
- */
968
- private getCliForProvider(provider: ProviderType): string {
969
- switch (provider) {
970
- case 'claude':
971
- return 'claude';
972
- case 'codex':
973
- return 'codex';
974
- case 'gemini':
975
- return 'gemini';
976
- default:
977
- return 'claude';
978
- }
979
- }
980
-
981
- /**
982
- * Get git info
983
- */
984
- private getGitInfo(workspacePath: string): { gitRemote?: string; gitBranch?: string } {
985
- try {
986
- // eslint-disable-next-line @typescript-eslint/no-require-imports
987
- const { execSync } = require('child_process');
988
- const branch = execSync('git branch --show-current', {
989
- cwd: workspacePath,
990
- encoding: 'utf8',
991
- stdio: ['pipe', 'pipe', 'pipe'],
992
- }).trim();
993
- let remote: string | undefined;
994
- try {
995
- remote = execSync('git remote get-url origin', {
996
- cwd: workspacePath,
997
- encoding: 'utf8',
998
- stdio: ['pipe', 'pipe', 'pipe'],
999
- }).trim();
1000
- } catch {
1001
- // No remote
1002
- }
1003
- return { gitRemote: remote, gitBranch: branch };
1004
- } catch {
1005
- return {};
1006
- }
1007
- }
1008
-
1009
- /**
1010
- * Convert to public workspace (without internal references)
1011
- */
1012
- private toPublicWorkspace(w: ManagedWorkspace): Workspace {
1013
- return {
1014
- id: w.id,
1015
- name: w.name,
1016
- path: w.path,
1017
- status: w.status,
1018
- provider: w.provider,
1019
- createdAt: w.createdAt,
1020
- lastActiveAt: w.lastActiveAt,
1021
- cloudId: w.cloudId,
1022
- customDomain: w.customDomain,
1023
- gitRemote: w.gitRemote,
1024
- gitBranch: w.gitBranch,
1025
- };
1026
- }
1027
-
1028
- // === Health Monitoring ===
1029
-
1030
- /**
1031
- * Start agent health monitoring.
1032
- * Monitors PIDs for liveness and tracks memory/CPU usage.
1033
- */
1034
- private startHealthMonitoring(): void {
1035
- // Start the memory monitor
1036
- this.memoryMonitor.start();
1037
-
1038
- // Listen for memory samples to update health state
1039
- // Store handler reference for cleanup
1040
- this.memorySampleHandler = (event: { name: string; snapshot: MemorySnapshot }) => {
1041
- const health = this.agentHealth.get(event.name);
1042
- if (health) {
1043
- health.lastSampleAt = new Date();
1044
- health.lastRssBytes = event.snapshot.rssBytes;
1045
- health.lastCpuPercent = event.snapshot.cpuPercent;
1046
-
1047
- // Check for high CPU usage and broadcast alert
1048
- if (event.snapshot.cpuPercent >= CPU_ALERT_THRESHOLD) {
1049
- this.broadcastResourceAlert(health, 'cpu', event.snapshot.cpuPercent);
1050
- }
1051
- }
1052
- };
1053
- this.memoryMonitor.on('sample', this.memorySampleHandler);
1054
-
1055
- // Listen for memory alerts and broadcast to agents
1056
- // Store handler reference for cleanup
1057
- this.memoryAlertHandler = (alert: MemoryAlert) => {
1058
- const health = this.agentHealth.get(alert.agentName);
1059
- if (health && alert.type !== 'recovered') {
1060
- this.broadcastResourceAlert(health, 'memory', alert.currentRss, alert);
1061
- }
1062
- };
1063
- this.memoryMonitor.on('alert', this.memoryAlertHandler);
1064
-
1065
- // Start heartbeat interval to check PIDs are alive
1066
- this.heartbeatInterval = setInterval(() => {
1067
- this.checkAgentHeartbeats();
1068
- }, HEARTBEAT_INTERVAL_MS);
1069
-
1070
- logger.info('Health monitoring started', {
1071
- heartbeatIntervalMs: HEARTBEAT_INTERVAL_MS,
1072
- cpuAlertThreshold: CPU_ALERT_THRESHOLD,
1073
- });
1074
- }
1075
-
1076
- /**
1077
- * Check all registered agents' PIDs are still alive.
1078
- * If a PID has died unexpectedly, broadcast a crash notification.
1079
- */
1080
- private checkAgentHeartbeats(): void {
1081
- // Collect crashed agents first to avoid modifying map during iteration
1082
- const crashedAgents: AgentHealthState[] = [];
1083
-
1084
- for (const [key, health] of this.agentHealth) {
1085
- const isAlive = this.isProcessAlive(health.pid);
1086
-
1087
- if (isAlive) {
1088
- // Only update heartbeat timestamp for alive processes
1089
- health.lastHeartbeatAt = new Date();
1090
- } else if (!health.releasing) {
1091
- // Agent died unexpectedly - mark for crash handling
1092
- // Immediately remove from map to prevent duplicate handling on next interval
1093
- this.agentHealth.delete(key);
1094
- crashedAgents.push(health);
1095
- }
1096
- // If !isAlive && health.releasing, agent is being gracefully stopped - skip
1097
- }
1098
-
1099
- // Now handle crashes outside the iteration
1100
- for (const health of crashedAgents) {
1101
- logger.warn('Agent heartbeat failed - process died', {
1102
- workspaceId: health.workspaceId,
1103
- agentName: health.agentName,
1104
- pid: health.pid,
1105
- });
1106
-
1107
- this.handleAgentCrash(health);
1108
- }
1109
- }
1110
-
1111
- /**
1112
- * Check if a process is alive by sending signal 0.
1113
- */
1114
- private isProcessAlive(pid: number): boolean {
1115
- try {
1116
- process.kill(pid, 0);
1117
- return true;
1118
- } catch {
1119
- return false;
1120
- }
1121
- }
1122
-
1123
- /**
1124
- * Handle an agent crash - unregister and broadcast to other agents.
1125
- * Note: Agent is already removed from agentHealth map before this is called.
1126
- */
1127
- private handleAgentCrash(health: AgentHealthState): void {
1128
- const workspace = this.workspaces.get(health.workspaceId);
1129
-
1130
- // Get crash context from memory monitor for analysis
1131
- const crashContext = this.memoryMonitor.getCrashContext(health.agentName);
1132
-
1133
- // Unregister from memory monitor (agent already removed from agentHealth map)
1134
- this.memoryMonitor.unregister(health.agentName);
1135
-
1136
- // Broadcast crash to dashboard via WebSocket
1137
- this.broadcastEvent({
1138
- type: 'agent:crashed',
1139
- workspaceId: health.workspaceId,
1140
- data: {
1141
- name: health.agentName,
1142
- pid: health.pid,
1143
- crashContext: {
1144
- likelyCause: crashContext.likelyCause,
1145
- peakMemory: crashContext.peakMemory,
1146
- averageMemory: crashContext.averageMemory,
1147
- memoryTrend: crashContext.memoryTrend,
1148
- analysisNotes: crashContext.analysisNotes,
1149
- },
1150
- },
1151
- timestamp: new Date(),
1152
- });
1153
-
1154
- // Broadcast to all connected agents in the workspace via relay
1155
- const message = crashContext.likelyCause !== 'unknown'
1156
- ? `AGENT CRASHED: "${health.agentName}" has died unexpectedly (PID: ${health.pid}). Likely cause: ${crashContext.likelyCause}. ${crashContext.analysisNotes.slice(0, 2).join('. ')}`
1157
- : `AGENT CRASHED: "${health.agentName}" has died unexpectedly (PID: ${health.pid}).`;
1158
-
1159
- workspace?.daemon?.broadcastSystemMessage(message, {
1160
- agentName: health.agentName,
1161
- pid: health.pid,
1162
- likelyCause: crashContext.likelyCause,
1163
- crashType: 'heartbeat_failure',
1164
- });
1165
-
1166
- // Remove the stale agent from the router so connected-agents.json is accurate
1167
- workspace?.daemon?.removeStaleAgent(health.agentName);
1168
-
1169
- logger.error('Agent crashed', {
1170
- workspaceId: health.workspaceId,
1171
- agentName: health.agentName,
1172
- pid: health.pid,
1173
- likelyCause: crashContext.likelyCause,
1174
- });
1175
- }
1176
-
1177
- /**
1178
- * Broadcast a resource alert (memory or CPU) to agents.
1179
- */
1180
- private broadcastResourceAlert(
1181
- health: AgentHealthState,
1182
- resourceType: 'memory' | 'cpu',
1183
- currentValue: number,
1184
- memoryAlert?: MemoryAlert
1185
- ): void {
1186
- // CPU alert cooldown to avoid spamming
1187
- if (resourceType === 'cpu') {
1188
- const now = Date.now();
1189
- if (health.lastCpuAlertAt && now - health.lastCpuAlertAt < RESOURCE_ALERT_COOLDOWN_MS) {
1190
- return; // Still in cooldown
1191
- }
1192
- health.lastCpuAlertAt = now;
1193
- }
1194
-
1195
- const workspace = this.workspaces.get(health.workspaceId);
1196
-
1197
- // Broadcast to dashboard
1198
- this.broadcastEvent({
1199
- type: 'agent:resource-alert',
1200
- workspaceId: health.workspaceId,
1201
- agentId: health.agentName,
1202
- data: {
1203
- name: health.agentName,
1204
- resourceType,
1205
- currentValue,
1206
- alertLevel: memoryAlert?.type ?? 'high_cpu',
1207
- message: memoryAlert?.message ??
1208
- `Agent "${health.agentName}" is running at ${currentValue.toFixed(1)}% CPU`,
1209
- recommendation: memoryAlert?.recommendation ??
1210
- 'Consider reducing workload or checking for runaway processes',
1211
- },
1212
- timestamp: new Date(),
1213
- });
1214
-
1215
- // Broadcast to agents
1216
- const message = resourceType === 'memory'
1217
- ? `RESOURCE ALERT: "${health.agentName}" memory usage is ${memoryAlert?.type ?? 'high'} (${formatBytes(currentValue)}). ${memoryAlert?.recommendation ?? ''}`
1218
- : `RESOURCE ALERT: "${health.agentName}" is running at ${currentValue.toFixed(1)}% CPU. Consider reducing workload.`;
1219
-
1220
- workspace?.daemon?.broadcastSystemMessage(message, {
1221
- agentName: health.agentName,
1222
- resourceType,
1223
- alertLevel: memoryAlert?.type ?? 'high_cpu',
1224
- });
1225
-
1226
- logger.warn('Resource alert', {
1227
- workspaceId: health.workspaceId,
1228
- agentName: health.agentName,
1229
- resourceType,
1230
- currentValue: resourceType === 'memory' ? formatBytes(currentValue) : `${currentValue.toFixed(1)}%`,
1231
- alertLevel: memoryAlert?.type ?? 'high_cpu',
1232
- });
1233
- }
1234
-
1235
- /**
1236
- * Register an agent for health monitoring.
1237
- */
1238
- private registerAgentHealth(workspaceId: string, agentName: string, pid: number): void {
1239
- const key = `${workspaceId}:${agentName}`;
1240
-
1241
- // Guard against double-registration - update PID instead
1242
- if (this.agentHealth.has(key)) {
1243
- logger.warn('Agent already registered for health monitoring, updating PID', {
1244
- workspaceId,
1245
- agentName,
1246
- newPid: pid,
1247
- });
1248
- this.updateAgentHealthPid(workspaceId, agentName, pid);
1249
- return;
1250
- }
1251
-
1252
- this.agentHealth.set(key, {
1253
- key,
1254
- workspaceId,
1255
- agentName,
1256
- pid,
1257
- lastHeartbeatAt: new Date(),
1258
- });
1259
-
1260
- // Register with memory monitor
1261
- this.memoryMonitor.register(agentName, pid);
1262
-
1263
- logger.info('Agent registered for health monitoring', {
1264
- workspaceId,
1265
- agentName,
1266
- pid,
1267
- });
1268
- }
1269
-
1270
- /**
1271
- * Update PID for an agent (after restart).
1272
- *
1273
- * This method is intended for agent restart scenarios where the agent process
1274
- * is restarted with a new PID but should maintain continuity in health tracking.
1275
- * Currently unused but reserved for future auto-restart functionality.
1276
- *
1277
- * @param workspaceId - The workspace ID
1278
- * @param agentName - The agent name
1279
- * @param newPid - The new process ID after restart
1280
- */
1281
- private updateAgentHealthPid(workspaceId: string, agentName: string, newPid: number): void {
1282
- const key = `${workspaceId}:${agentName}`;
1283
- const health = this.agentHealth.get(key);
1284
-
1285
- if (health) {
1286
- health.pid = newPid;
1287
- health.releasing = false;
1288
- health.lastHeartbeatAt = new Date();
1289
- this.memoryMonitor.updatePid(agentName, newPid);
1290
-
1291
- logger.info('Agent health PID updated', {
1292
- workspaceId,
1293
- agentName,
1294
- newPid,
1295
- });
1296
- } else {
1297
- // Register new
1298
- this.registerAgentHealth(workspaceId, agentName, newPid);
1299
- }
1300
- }
1301
-
1302
- /**
1303
- * Mark an agent as releasing (to avoid crash announcement).
1304
- */
1305
- private markAgentReleasing(workspaceId: string, agentName: string): void {
1306
- const key = `${workspaceId}:${agentName}`;
1307
- const health = this.agentHealth.get(key);
1308
-
1309
- if (health) {
1310
- health.releasing = true;
1311
- logger.debug('Agent marked as releasing', { workspaceId, agentName });
1312
- }
1313
- }
1314
-
1315
- /**
1316
- * Unregister an agent from health monitoring.
1317
- */
1318
- private unregisterAgentHealth(workspaceId: string, agentName: string): void {
1319
- const key = `${workspaceId}:${agentName}`;
1320
- this.agentHealth.delete(key);
1321
- this.memoryMonitor.unregister(agentName);
1322
-
1323
- logger.debug('Agent unregistered from health monitoring', {
1324
- workspaceId,
1325
- agentName,
1326
- });
1327
- }
1328
-
1329
- /**
1330
- * Get health state for an agent.
1331
- */
1332
- private getAgentHealth(workspaceId: string, agentName: string): AgentHealthState | undefined {
1333
- return this.agentHealth.get(`${workspaceId}:${agentName}`);
1334
- }
1335
-
1336
- /**
1337
- * Get health states for all agents in a workspace.
1338
- */
1339
- private getWorkspaceAgentHealth(workspaceId: string): AgentHealthState[] {
1340
- return Array.from(this.agentHealth.values()).filter((h) => h.workspaceId === workspaceId);
1341
- }
1342
- }
1343
-
1344
- let orchestratorInstance: Orchestrator | undefined;
1345
-
1346
- /**
1347
- * Start the orchestrator
1348
- */
1349
- export async function startOrchestrator(
1350
- config: Partial<OrchestratorConfig> = {}
1351
- ): Promise<Orchestrator> {
1352
- if (orchestratorInstance) {
1353
- return orchestratorInstance;
1354
- }
1355
-
1356
- orchestratorInstance = new Orchestrator(config);
1357
- await orchestratorInstance.start();
1358
- return orchestratorInstance;
1359
- }
1360
-
1361
- /**
1362
- * Stop the orchestrator
1363
- */
1364
- export async function stopOrchestrator(): Promise<void> {
1365
- if (orchestratorInstance) {
1366
- await orchestratorInstance.stop();
1367
- orchestratorInstance = undefined;
1368
- }
1369
- }
1370
-
1371
- /**
1372
- * Get orchestrator instance
1373
- */
1374
- export function getOrchestrator(): Orchestrator | undefined {
1375
- return orchestratorInstance;
1376
- }