agent-relay 2.3.14 → 2.3.16

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