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,1477 +0,0 @@
1
- /**
2
- * PTY Output Parser
3
- * Extracts relay commands from agent terminal output.
4
- *
5
- * Supports two formats:
6
- * 1. Inline: ->relay:<target> <message> (single line, start of line only)
7
- * 2. Block: [[RELAY]]{ json }[[/RELAY]] (multi-line, structured)
8
- *
9
- * Rules:
10
- * - Inline only matches at start of line (after whitespace)
11
- * - Ignores content inside code fences
12
- * - Escape with \->relay: to output literal
13
- * - Block format is preferred for structured data
14
- */
15
-
16
- import type { PayloadKind } from '@agent-relay/protocol/types';
17
-
18
- export interface ParsedCommand {
19
- to: string;
20
- kind: PayloadKind;
21
- body: string;
22
- data?: Record<string, unknown>;
23
- /** Optional thread ID for grouping related messages */
24
- thread?: string;
25
- /** Optional project for cross-project messaging (e.g., ->relay:project:agent) */
26
- project?: string;
27
- /** Optional thread project for cross-project threads (e.g., [thread:project:id]) */
28
- threadProject?: string;
29
- /** Optional sync metadata parsed from [await] */
30
- sync?: { blocking: boolean; timeoutMs?: number };
31
- raw: string;
32
- meta?: ParsedMessageMetadata;
33
- }
34
-
35
- export interface ParserOptions {
36
- maxBlockBytes?: number;
37
- enableInline?: boolean;
38
- enableBlock?: boolean;
39
- /** Relay prefix pattern (default: '->relay:') */
40
- prefix?: string;
41
- /** Thinking prefix pattern (default: '->thinking:') */
42
- thinkingPrefix?: string;
43
- }
44
-
45
- const DEFAULT_OPTIONS: Required<ParserOptions> = {
46
- maxBlockBytes: 1024 * 1024, // 1 MiB
47
- enableInline: true,
48
- enableBlock: true,
49
- prefix: '->relay:',
50
- thinkingPrefix: '->thinking:',
51
- };
52
-
53
- // Static patterns (not prefix-dependent)
54
- const BLOCK_END = /\[\[\/RELAY\]\]/;
55
- const BLOCK_METADATA_START = '[[RELAY_METADATA]]';
56
- const BLOCK_METADATA_END = /\[\[\/RELAY_METADATA\]\]/;
57
- const CODE_FENCE = /^```/;
58
-
59
- // Fenced inline patterns: ->relay:Target <<< ... >>>
60
- // Two patterns for fence end detection:
61
- // - FENCE_END_START: ">>>" at the start of a line (with optional leading whitespace)
62
- // - FENCE_END_LINE: ">>>" at the end of a line (content followed by >>>)
63
- // Note: Escaped \>>> should NOT trigger fence end (see isEscapedFenceEnd)
64
- const FENCE_END_START = /^(?:\s*)?>>>/;
65
- const FENCE_END_LINE = />>>\s*$/;
66
- const FENCE_END = new RegExp(`${FENCE_END_START.source}|${FENCE_END_LINE.source}`);
67
-
68
- // Escape patterns for literal <<< and >>> in content
69
- // Use \<<< to output literal <<<, use \>>> to output literal >>>
70
- const ESCAPED_FENCE_START = /\\<<</g;
71
- const ESCAPED_FENCE_END = /\\>>>/g;
72
-
73
- // Maximum lines in a fenced block before assuming it's stuck
74
- // Lower value (30) ensures messages get sent even if agent forgets >>>
75
- // Most relay messages are under 20 lines; 30 gives buffer for longer ones
76
- const MAX_FENCED_LINES = 30;
77
-
78
- // Continuation helpers
79
- const BULLET_OR_NUMBERED_LIST = /^[ \t]*([\-*•◦‣⏺◆◇○□■]|[0-9]+[.)])\s+/;
80
- const PROMPTISH_LINE = /^[\s]*[>$%#➜›»][\s]*$/;
81
- const RELAY_INJECTION_PREFIX = /^\s*Relay message from /;
82
- const MAX_INLINE_CONTINUATION_LINES = 30;
83
-
84
- // Spawn/release command patterns - these should NOT be parsed as relay messages
85
- // They are handled separately by the wrappers (pty-wrapper.ts, tmux-wrapper.ts)
86
- const SPAWN_COMMAND_PATTERN = /->relay:spawn\s+\S+/i;
87
- const RELEASE_COMMAND_PATTERN = /->relay:release\s+\S+/i;
88
-
89
- // JSON relay format: ->relay.json:{...}
90
- // Simple single-line format that's resilient and won't interfere with normal conversation
91
- const JSON_RELAY_PATTERN = /->relay\.json:(\{[^\n]+\})/;
92
-
93
- /**
94
- * Parsed JSON relay message structure
95
- */
96
- interface JsonRelayMessage {
97
- kind: 'message' | 'spawn' | 'release';
98
- to?: string;
99
- body?: string;
100
- name?: string;
101
- cli?: string;
102
- task?: string;
103
- thread?: string;
104
- }
105
-
106
- /**
107
- * Check if a line is a spawn or release command that should be handled
108
- * by the wrapper's spawn subsystem, not parsed as a relay message.
109
- */
110
- function isSpawnOrReleaseCommand(line: string): boolean {
111
- return SPAWN_COMMAND_PATTERN.test(line) || RELEASE_COMMAND_PATTERN.test(line);
112
- }
113
-
114
- // Claude extended thinking block markers - skip content inside these
115
- const THINKING_START = new RegExp(String.raw`<` + `thinking>`);
116
- const THINKING_END = new RegExp(String.raw`</` + `thinking>`);
117
-
118
- /**
119
- * Patterns that indicate instructional/example text that should NOT be parsed as actual commands.
120
- * These are common in system prompts, documentation, and injected instructions.
121
- */
122
- const INSTRUCTIONAL_MARKERS = [
123
- /\bSEND:\s*$/i, // "SEND:" at end of body (instruction prefix)
124
- /\bPROTOCOL:\s*\(\d+\)/i, // "PROTOCOL: (1)" - numbered protocol instructions
125
- /\bExample:/i, // "Example:" marker
126
- /\\->relay:/, // Escaped relay prefix in body (documentation)
127
- /\\->thinking:/, // Escaped thinking prefix in body (documentation)
128
- /^AgentName\s+/, // Body starting with "AgentName" (placeholder in examples)
129
- /^Target\s+/, // Body starting with "Target" (placeholder in examples)
130
- /\[Agent Relay\]/, // Injected instruction header
131
- /MULTI-LINE:/i, // Multi-line format instruction
132
- /RECEIVE:/i, // Receive instruction marker
133
- ];
134
-
135
- /**
136
- * Placeholder target names commonly used in documentation and examples.
137
- * Messages to these targets should be filtered out as instructional text.
138
- */
139
- const PLACEHOLDER_TARGETS = new Set([
140
- 'agentname',
141
- 'target',
142
- 'recipient',
143
- 'yourtarget',
144
- 'targetagent',
145
- 'someagent',
146
- 'otheragent',
147
- 'worker', // Too generic, often used in examples
148
- // NOTE: Don't add 'agent', 'name', 'lead', 'developer', etc. - these can be valid agent names!
149
- ]);
150
-
151
- /**
152
- * Check if a parsed relay command body looks like instructional/example text.
153
- * These patterns commonly appear in system prompts and documentation.
154
- */
155
- function isInstructionalText(body: string): boolean {
156
- return INSTRUCTIONAL_MARKERS.some(pattern => pattern.test(body));
157
- }
158
-
159
- /**
160
- * Check if a target name is a placeholder commonly used in documentation/examples.
161
- * These should not be treated as real message targets.
162
- */
163
- export function isPlaceholderTarget(target: string): boolean {
164
- return PLACEHOLDER_TARGETS.has(target.toLowerCase());
165
- }
166
-
167
- /**
168
- * Escape special regex characters in a string
169
- */
170
- function escapeRegex(str: string): string {
171
- return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
172
- }
173
-
174
- function parseAwaitTimeout(value: string, unit: string): number | undefined {
175
- const parsed = parseInt(value, 10);
176
- if (Number.isNaN(parsed)) return undefined;
177
- const multiplier = unit === 'h' ? 3600000 : unit === 'm' ? 60000 : 1000;
178
- return parsed * multiplier;
179
- }
180
-
181
- function parseInlineTags(text: string): {
182
- body: string;
183
- thread?: string;
184
- threadProject?: string;
185
- sync?: ParsedCommand['sync'];
186
- } {
187
- let remaining = text;
188
- let thread: string | undefined;
189
- let threadProject: string | undefined;
190
- let sync: ParsedCommand['sync'] | undefined;
191
-
192
- while (true) {
193
- const awaitMatch = remaining.match(/^\s*\[await(?::(\d+)([smh]))?\]\s*/);
194
- if (awaitMatch) {
195
- const timeoutMs = awaitMatch[1] && awaitMatch[2]
196
- ? parseAwaitTimeout(awaitMatch[1], awaitMatch[2])
197
- : undefined;
198
- sync = { blocking: true, timeoutMs };
199
- remaining = remaining.slice(awaitMatch[0].length);
200
- continue;
201
- }
202
-
203
- const threadMatch = remaining.match(/^\s*\[thread:(?:([\w-]+):)?([\w-]+)\]\s*/);
204
- if (threadMatch) {
205
- threadProject = threadMatch[1] || undefined;
206
- thread = threadMatch[2];
207
- remaining = remaining.slice(threadMatch[0].length);
208
- continue;
209
- }
210
-
211
- break;
212
- }
213
-
214
- return {
215
- body: remaining.trimStart(),
216
- thread,
217
- threadProject,
218
- sync,
219
- };
220
- }
221
-
222
- /**
223
- * Build inline pattern for a given prefix
224
- * Allow common input prefixes: >, $, %, #, →, ➜, bullets (●•◦‣⁃-*⏺◆◇○□■), box chars (│┃┆┇┊┋╎╏), and their variations
225
- *
226
- * Supports optional thread syntax:
227
- * - ->relay:Target [thread:id] message (local thread)
228
- * - ->relay:Target [thread:project:id] message (cross-project thread)
229
- * Thread IDs can contain alphanumeric chars, hyphens, underscores
230
- */
231
- function buildInlinePattern(prefix: string): RegExp {
232
- const escaped = escapeRegex(prefix);
233
- // Group 1: target, Group 2: message body (may include tags like [thread] or [await])
234
- // Includes box drawing characters (│┃┆┇┊┋╎╏) and sparkle (✦) for Gemini CLI output
235
- return new RegExp(`^(?:\\s*(?:[>$%#→➜›»●•◦‣⁃\\-*⏺◆◇○□■│┃┆┇┊┋╎╏✦]\\s*)*)?${escaped}(\\S+)\\s+(.+)$`);
236
- }
237
-
238
- /**
239
- * Build fenced inline pattern for multi-line messages: ->relay:Target <<<
240
- * This opens a fenced block that continues until >>> is seen on its own line.
241
- * Supports cross-project thread syntax: [thread:project:id]
242
- * Group 1: target, Group 2: optional thread project, Group 3: thread ID
243
- */
244
- function buildFencedInlinePattern(prefix: string): RegExp {
245
- const escaped = escapeRegex(prefix);
246
- return new RegExp(`^(?:\\s*(?:[>$%#→➜›»●•◦‣⁃\\-*⏺◆◇○□■│┃┆┇┊┋╎╏✦]\\s*)*)?${escaped}(\\S+)(?:\\s+(.+?))?\\s+<<<\\s*$`);
247
- }
248
-
249
- /**
250
- * Build escape pattern for a given prefix (e.g., \->relay: or \->)
251
- */
252
- function buildEscapePattern(prefix: string, thinkingPrefix: string): RegExp {
253
- // Extract the first character(s) that would be escaped
254
- const prefixEscaped = escapeRegex(prefix);
255
- const thinkingEscaped = escapeRegex(thinkingPrefix);
256
- return new RegExp(`^(\\s*)\\\\(${prefixEscaped}|${thinkingEscaped})`);
257
- }
258
-
259
- // ANSI escape sequence pattern for stripping
260
- // eslint-disable-next-line no-control-regex
261
- const ANSI_PATTERN = /\x1b\[[0-9;?]*[a-zA-Z]|\x1b\].*?(?:\x07|\x1b\\)|\r/g;
262
-
263
- // Pattern for orphaned CSI sequences that lost their escape byte
264
- // These look like [?25h, [?2026l, [0m, etc. at the start of content
265
- // Requires at least one digit or question mark to avoid stripping legitimate text like [Agent
266
- const ORPHANED_CSI_PATTERN = /^\s*(\[(?:\?|\d)\d*[A-Za-z])+\s*/g;
267
-
268
- /**
269
- * Parse a target string that may contain cross-project syntax.
270
- * Supports: "agent" (local) or "project:agent" (cross-project)
271
- *
272
- * @param target The raw target string from the relay command
273
- * @returns Object with `to` (agent name) and optional `project`
274
- */
275
- function parseTarget(target: string): { to: string; project?: string } {
276
- // Check for cross-project syntax: project:agent
277
- // Only split on FIRST colon to allow agent names with colons
278
- const colonIndex = target.indexOf(':');
279
-
280
- if (colonIndex > 0 && colonIndex < target.length - 1) {
281
- // Has a colon with content on both sides
282
- const project = target.substring(0, colonIndex);
283
- const agent = target.substring(colonIndex + 1);
284
- return { to: agent, project };
285
- }
286
-
287
- // Local target (no colon or malformed)
288
- return { to: target };
289
- }
290
-
291
- /**
292
- * Strip ANSI escape codes from a string for pattern matching.
293
- * Also strips orphaned CSI sequences that may have lost their escape byte.
294
- */
295
- function stripAnsi(str: string): string {
296
- let result = str.replace(ANSI_PATTERN, '');
297
- // Strip orphaned CSI sequences at the start of the string
298
- result = result.replace(ORPHANED_CSI_PATTERN, '');
299
- return result;
300
- }
301
-
302
- /**
303
- * Check if a line contains an escaped fence end (\>>>) that should NOT trigger fence close.
304
- * Returns true if the >>> is escaped (preceded by backslash).
305
- */
306
- function isEscapedFenceEnd(line: string): boolean {
307
- // Check if >>> at end of line is escaped
308
- if (/\\>>>\s*$/.test(line)) {
309
- return true;
310
- }
311
- // Check if >>> at start of line is escaped
312
- if (/^(?:\s*)?\\>>>/.test(line)) {
313
- return true;
314
- }
315
- return false;
316
- }
317
-
318
- /**
319
- * Unescape fence markers in content.
320
- * Converts \<<< to <<< and \>>> to >>>
321
- */
322
- function unescapeFenceMarkers(content: string): string {
323
- return content
324
- .replace(ESCAPED_FENCE_START, '<<<')
325
- .replace(ESCAPED_FENCE_END, '>>>');
326
- }
327
-
328
- export class OutputParser {
329
- private options: Required<ParserOptions>;
330
- private inCodeFence = false;
331
- private inBlock = false;
332
- private blockBuffer = '';
333
- private blockType: 'RELAY' | 'RELAY_METADATA' | null = null;
334
- private lastParsedMetadata: ParsedMessageMetadata | null = null;
335
-
336
- // Claude extended thinking block state - skip content inside <thinking>...</thinking>
337
- private inThinkingBlock = false;
338
-
339
- // Fenced inline state: ->relay:Target <<< ... >>>
340
- private inFencedInline = false;
341
- private fencedInlineBuffer = '';
342
- private fencedInlineTarget = '';
343
- private fencedInlineThread: string | undefined = undefined;
344
- private fencedInlineThreadProject: string | undefined = undefined;
345
- private fencedInlineProject: string | undefined = undefined;
346
- private fencedInlineRaw: string[] = [];
347
- private fencedInlineKind: 'message' | 'thinking' = 'message';
348
- private fencedInlineSync: ParsedCommand['sync'] | undefined = undefined;
349
-
350
- // Dynamic patterns based on prefix configuration
351
- private inlineRelayPattern: RegExp;
352
- private inlineThinkingPattern: RegExp;
353
- private fencedRelayPattern: RegExp;
354
- private fencedThinkingPattern: RegExp;
355
- private escapePattern: RegExp;
356
-
357
- constructor(options: ParserOptions = {}) {
358
- this.options = { ...DEFAULT_OPTIONS, ...options };
359
-
360
- // Build patterns based on configured prefixes
361
- this.inlineRelayPattern = buildInlinePattern(this.options.prefix);
362
- this.inlineThinkingPattern = buildInlinePattern(this.options.thinkingPrefix);
363
- this.fencedRelayPattern = buildFencedInlinePattern(this.options.prefix);
364
- this.fencedThinkingPattern = buildFencedInlinePattern(this.options.thinkingPrefix);
365
- this.escapePattern = buildEscapePattern(this.options.prefix, this.options.thinkingPrefix);
366
- }
367
-
368
- /**
369
- * Get the configured relay prefix
370
- */
371
- get prefix(): string {
372
- return this.options.prefix;
373
- }
374
-
375
- /**
376
- * Push data into the parser and extract commands.
377
- * Returns array of parsed commands and cleaned output.
378
- *
379
- * Design: Pass through data with minimal buffering to preserve terminal rendering.
380
- * Only buffer content when inside [[RELAY]]...[[/RELAY]] blocks.
381
- */
382
- parse(data: string): { commands: ParsedCommand[]; output: string } {
383
- const commands: ParsedCommand[] = [];
384
- let output = '';
385
-
386
- // If we're inside a fenced inline block, accumulate until we see >>>
387
- if (this.inFencedInline) {
388
- return this.parseFencedInlineMode(data, commands);
389
- }
390
-
391
- // If we're inside a block, accumulate until we see the end
392
- if (this.inBlock && this.blockType) {
393
- return this.parseInBlockMode(data, commands, this.blockType);
394
- }
395
-
396
- // Find [[RELAY_METADATA]] or [[RELAY]] that's at the start of a line
397
- const blockStart = this.findBlockStart(data);
398
-
399
- if (this.options.enableBlock && blockStart.index !== -1 && blockStart.identifier) {
400
- const blockStartIdentifier = blockStart.identifier;
401
- const before = data.substring(0, blockStart.index);
402
- const after = data.substring(blockStart.index + blockStartIdentifier.length);
403
-
404
- // Output everything before the block start
405
- if (before) {
406
- const beforeResult = this.parsePassThrough(before, commands);
407
- output += beforeResult;
408
- }
409
-
410
- // Enter block mode
411
- this.inBlock = true;
412
- this.blockType = blockStartIdentifier === BLOCK_METADATA_START ? 'RELAY_METADATA' : 'RELAY';
413
- this.blockBuffer = after;
414
-
415
- // Check size limit before processing
416
- if (this.blockBuffer.length > this.options.maxBlockBytes) {
417
- console.error('[parser] Block too large, discarding');
418
- this.inBlock = false;
419
- this.blockBuffer = '';
420
- this.blockType = null;
421
- return { commands, output };
422
- }
423
-
424
- // Check if block ends in same chunk
425
- const blockEndPattern = this.blockType === 'RELAY_METADATA' ? BLOCK_METADATA_END : BLOCK_END;
426
- if (blockEndPattern.test(this.blockBuffer)) {
427
- const blockResult = this.finishBlock(this.blockType);
428
- if (blockResult.command) {
429
- commands.push(blockResult.command);
430
- }
431
- if (blockResult.remaining) {
432
- // Recursively parse anything after the block
433
- const afterResult = this.parse(blockResult.remaining);
434
- commands.push(...afterResult.commands);
435
- output += afterResult.output;
436
- }
437
- }
438
-
439
- return { commands, output };
440
- }
441
-
442
- // Pass-through mode: output data immediately, only parse complete lines for relay commands
443
- output = this.parsePassThrough(data, commands);
444
- return { commands, output };
445
- }
446
-
447
- /**
448
- * Find [[RELAY_METADATA]] or [[RELAY]] that's at the start of a line and not inside a code fence.
449
- * Returns the index and identifier, or -1 and null if not found.
450
- */
451
- private findBlockStart(data: string): { index: number; identifier: string | null } {
452
- // Track code fence state through the data
453
- let inFence = this.inCodeFence;
454
- let searchStart = 0;
455
-
456
- // Prioritize RELAY_METADATA over RELAY
457
- const blockIdentifiers = [BLOCK_METADATA_START, '[[RELAY]]'];
458
-
459
- while (searchStart < data.length) {
460
- let earliestBlockIdx = -1;
461
- let earliestBlockIdentifier: string | null = null;
462
-
463
- for (const identifier of blockIdentifiers) {
464
- const currentBlockIdx = data.indexOf(identifier, searchStart);
465
- if (currentBlockIdx !== -1 && (earliestBlockIdx === -1 || currentBlockIdx < earliestBlockIdx)) {
466
- earliestBlockIdx = currentBlockIdx;
467
- earliestBlockIdentifier = identifier;
468
- }
469
- }
470
-
471
- // No more blocks found
472
- if (earliestBlockIdx === -1) {
473
- // Still update code fence state for remaining data
474
- let fenceIdx = data.indexOf('```', searchStart);
475
- while (fenceIdx !== -1) {
476
- inFence = !inFence;
477
- searchStart = fenceIdx + 3;
478
- fenceIdx = data.indexOf('```', searchStart);
479
- }
480
- return { index: -1, identifier: null };
481
- }
482
-
483
- // Process any code fences before this block
484
- let tempIdx = searchStart;
485
- while (true) {
486
- const nextFence = data.indexOf('```', tempIdx);
487
- if (nextFence === -1 || nextFence >= earliestBlockIdx) break;
488
- inFence = !inFence;
489
- tempIdx = nextFence + 3;
490
- }
491
-
492
- // If we're inside a code fence, skip this block
493
- if (inFence) {
494
- searchStart = earliestBlockIdx + (earliestBlockIdentifier?.length ?? 0); // Skip past the block
495
- continue;
496
- }
497
-
498
- // Check if block is at start of a line
499
- if (earliestBlockIdx === 0) {
500
- return { index: 0, identifier: earliestBlockIdentifier }; // At very start
501
- }
502
-
503
- // Look backwards for the start of line
504
- const beforeBlock = data.substring(0, earliestBlockIdx);
505
- const lastNewline = beforeBlock.lastIndexOf('\n');
506
- const lineStart = beforeBlock.substring(lastNewline + 1);
507
-
508
- // Must be only whitespace before block on this line
509
- if (/^\s*$/.test(lineStart)) {
510
- return { index: earliestBlockIdx, identifier: earliestBlockIdentifier };
511
- }
512
-
513
- // Not at start of line, keep searching
514
- searchStart = earliestBlockIdx + (earliestBlockIdentifier?.length ?? 0);
515
- }
516
-
517
- return { index: -1, identifier: null };
518
- }
519
-
520
- /**
521
- * Parse data in pass-through mode - TRUE pass-through for terminal rendering.
522
- * Output is exactly the input data, minus any relay command lines found in this chunk.
523
- * No cross-chunk buffering to avoid double-output issues.
524
- *
525
- * IMPORTANT: We ONLY parse complete lines (i.e. those terminated by `\n` in the
526
- * current chunk). The final unterminated line (if any) is passed through without
527
- * parsing. This intentionally avoids cross-chunk detection when a line is split
528
- * across chunks.
529
- */
530
- private parsePassThrough(data: string, commands: ParsedCommand[]): string {
531
- // Simple approach: split data, check each line (complete or not), rebuild output
532
- const lines = data.split('\n');
533
- const hasTrailingNewline = data.endsWith('\n');
534
-
535
- const isInlineStart = (line: string): boolean => {
536
- return this.inlineRelayPattern.test(line) || this.inlineThinkingPattern.test(line);
537
- };
538
-
539
- const isFencedInlineStart = (line: string): { target: string; thread?: string; threadProject?: string; project?: string; kind: 'message' | 'thinking'; sync?: ParsedCommand['sync'] } | null => {
540
- const stripped = stripAnsi(line);
541
- const relayMatch = stripped.match(this.fencedRelayPattern);
542
- if (relayMatch) {
543
- const [, target, tagSection] = relayMatch;
544
- const { body, thread, threadProject, sync } = parseInlineTags(tagSection ?? '');
545
- if (body.trim().length > 0) return null;
546
- const { to, project } = parseTarget(target);
547
- return { target: to, thread, threadProject, project, kind: 'message', sync };
548
- }
549
- const thinkingMatch = stripped.match(this.fencedThinkingPattern);
550
- if (thinkingMatch) {
551
- const [, target, tagSection] = thinkingMatch;
552
- const { body, thread, threadProject, sync } = parseInlineTags(tagSection ?? '');
553
- if (body.trim().length > 0) return null;
554
- const { to, project } = parseTarget(target);
555
- return { target: to, thread, threadProject, project, kind: 'thinking', sync };
556
- }
557
- return null;
558
- };
559
-
560
- const isBlockMarker = (line: string): boolean => {
561
- return CODE_FENCE.test(line) || line.includes('[[RELAY]]') || BLOCK_END.test(line);
562
- };
563
-
564
- const shouldStopContinuation = (line: string, continuationCount: number, lines: string[], currentIndex: number): boolean => {
565
- const trimmed = line.trim();
566
- if (isInlineStart(line)) return true;
567
- if (isFencedInlineStart(line)) return true;
568
- if (isBlockMarker(line)) return true;
569
- if (PROMPTISH_LINE.test(trimmed)) return true;
570
- if (RELAY_INJECTION_PREFIX.test(line)) return true; // Avoid swallowing injected inbound messages
571
-
572
- // Allow blank lines only in structured content like tables or between numbered sections
573
- if (trimmed === '') {
574
- // If we haven't started continuation yet, stop on blank
575
- if (continuationCount === 0) return true;
576
-
577
- // Look ahead to see if there's more content that looks like structured markdown
578
- for (let j = currentIndex + 1; j < lines.length; j++) {
579
- const nextLine = lines[j].trim();
580
- if (nextLine === '') {
581
- // Double blank line always stops
582
- return true;
583
- }
584
- // Only continue for table rows or numbered list items after blank
585
- if (/^\|/.test(nextLine)) return false; // Table row
586
- if (/^\d+[.)]\s/.test(nextLine)) return false; // Numbered list like "1." or "2)"
587
- // Stop for anything else after a blank line
588
- return true;
589
- }
590
- return true; // No more content, stop
591
- }
592
- return false;
593
- };
594
-
595
- const isContinuationLine = (
596
- original: string,
597
- stripped: string,
598
- prevStripped: string,
599
- continuationCount: number
600
- ): boolean => {
601
- // Note: shouldStopContinuation is already checked in the main loop before calling this
602
- if (/^[ \t]/.test(original)) return true; // Indented lines from TUI wrapping
603
- if (BULLET_OR_NUMBERED_LIST.test(stripped)) return true; // Bullet/numbered lists after ->relay:
604
- const prevTrimmed = prevStripped.trimEnd();
605
- const prevSuggestsContinuation = prevTrimmed !== '' && /[:;,\-–—…]$/.test(prevTrimmed);
606
- if (prevSuggestsContinuation) return true;
607
- // If we've already continued once, allow subsequent lines until a stop condition
608
- if (continuationCount > 0) return true;
609
- return false;
610
- };
611
-
612
- const outputLines: string[] = [];
613
- let strippedCount = 0;
614
-
615
- for (let i = 0; i < lines.length; i++) {
616
- const line = lines[i];
617
- const isLastLine = i === lines.length - 1;
618
-
619
- // Skip the empty string after a trailing newline
620
- if (isLastLine && hasTrailingNewline && line === '') {
621
- continue;
622
- }
623
-
624
- // If the chunk does NOT end in a newline, the last line is incomplete.
625
- // Pass it through unmodified and do not attempt to parse it.
626
- if (isLastLine && !hasTrailingNewline) {
627
- outputLines.push(line);
628
- continue;
629
- }
630
-
631
- // Skip Claude extended thinking blocks - don't parse or output their content
632
- // Check for thinking end first (to handle end tag on same line as start)
633
- if (this.inThinkingBlock) {
634
- if (THINKING_END.test(line)) {
635
- this.inThinkingBlock = false;
636
- }
637
- // Skip this line - don't output thinking content
638
- strippedCount++;
639
- continue;
640
- }
641
- // Check for thinking start
642
- if (THINKING_START.test(line)) {
643
- this.inThinkingBlock = true;
644
- // Also check if it ends on the same line (inline thinking block)
645
- if (THINKING_END.test(line)) {
646
- this.inThinkingBlock = false;
647
- }
648
- // Skip this line - don't output thinking content
649
- strippedCount++;
650
- continue;
651
- }
652
-
653
- // Skip spawn/release commands BEFORE checking fenced format
654
- // This prevents ->relay:spawn Worker cli <<< from being parsed as a message to "spawn"
655
- const strippedForSpawnCheck = stripAnsi(line);
656
- if (isSpawnOrReleaseCommand(strippedForSpawnCheck)) {
657
- outputLines.push(line);
658
- continue;
659
- }
660
-
661
- // Check for fenced inline start: ->relay:Target <<<
662
- const fencedStart = isFencedInlineStart(line);
663
- if (fencedStart && this.options.enableInline) {
664
- // Skip placeholder target names early (common in documentation/examples)
665
- if (isPlaceholderTarget(fencedStart.target)) {
666
- outputLines.push(line);
667
- continue;
668
- }
669
-
670
- // Enter fenced inline mode
671
- this.inFencedInline = true;
672
- this.fencedInlineTarget = fencedStart.target;
673
- this.fencedInlineThread = fencedStart.thread;
674
- this.fencedInlineThreadProject = fencedStart.threadProject;
675
- this.fencedInlineProject = fencedStart.project;
676
- this.fencedInlineKind = fencedStart.kind;
677
- this.fencedInlineSync = fencedStart.sync;
678
- this.fencedInlineBuffer = '';
679
- this.fencedInlineRaw = [line];
680
-
681
- // Process remaining lines in fenced mode
682
- if (i + 1 < lines.length) {
683
- // Don't double-add trailing newline - the empty string at end of lines array
684
- // already accounts for it when we join
685
- const remainingLines = lines.slice(i + 1);
686
- const remaining = remainingLines.join('\n') + (hasTrailingNewline && remainingLines[remainingLines.length - 1] !== '' ? '\n' : '');
687
- const result = this.parseFencedInlineMode(remaining, commands);
688
- strippedCount++;
689
-
690
- // Combine output
691
- let output = outputLines.join('\n');
692
- if (hasTrailingNewline && outputLines.length > 0 && !this.inFencedInline) {
693
- output += '\n';
694
- }
695
- output += result.output;
696
- return output;
697
- }
698
-
699
- // No more lines - waiting for more data
700
- strippedCount++;
701
- let output = outputLines.join('\n');
702
- if (hasTrailingNewline && outputLines.length > 0) {
703
- output += '\n';
704
- }
705
- return output;
706
- }
707
-
708
- if (line.length > 0) {
709
- // Only check complete lines for relay commands.
710
- const result = this.processLine(line);
711
- if (result.command) {
712
- // Collect continuation lines (in the same chunk) so inline messages can span multiple lines.
713
- let body = result.command.body;
714
- const rawLines = [result.command.raw];
715
- let consumed = 0;
716
- let continuationLines = 0;
717
-
718
- while (i + 1 < lines.length) {
719
- const nextIsLast = i + 1 === lines.length - 1;
720
- const nextLine = lines[i + 1];
721
-
722
- // Do not consume an incomplete trailing line (no newline terminator)
723
- if (nextIsLast && !hasTrailingNewline) {
724
- break;
725
- }
726
-
727
- const nextStripped = stripAnsi(nextLine);
728
- const prevStripped = stripAnsi(rawLines[rawLines.length - 1] ?? '');
729
-
730
- // Stop if this line clearly marks a new block, prompt, or inline command
731
- if (shouldStopContinuation(nextStripped, continuationLines, lines, i + 1)) {
732
- break;
733
- }
734
-
735
- if (continuationLines >= MAX_INLINE_CONTINUATION_LINES) {
736
- break;
737
- }
738
-
739
- // Consume as continuation if it looks like it belongs to the ->relay message
740
- if (!isContinuationLine(nextLine, nextStripped, prevStripped, continuationLines)) {
741
- break;
742
- }
743
-
744
- consumed++;
745
- i++; // Skip the consumed continuation line
746
- continuationLines++;
747
- body += '\n' + nextLine;
748
- rawLines.push(nextLine);
749
- }
750
-
751
- commands.push({ ...result.command, body, raw: rawLines.join('\n') });
752
- strippedCount += consumed + 1;
753
- continue;
754
- }
755
- if (result.output !== null) {
756
- outputLines.push(result.output);
757
- } else {
758
- // Line was stripped (relay command)
759
- strippedCount++;
760
- }
761
- } else {
762
- // Empty line - preserve it
763
- outputLines.push('');
764
- }
765
- }
766
-
767
- // Rebuild output
768
- if (outputLines.length === 0 && strippedCount > 0) {
769
- // All lines were relay commands - return empty
770
- return '';
771
- }
772
-
773
- let output = outputLines.join('\n');
774
-
775
- // Add trailing newline if original had one AND we have content
776
- if (hasTrailingNewline && outputLines.length > 0) {
777
- output += '\n';
778
- }
779
-
780
- return output;
781
- }
782
-
783
- /**
784
- * Parse while inside a [[RELAY]] block - buffer until we see [[/RELAY]].
785
- */
786
- private parseInBlockMode(data: string, commands: ParsedCommand[], blockType: 'RELAY' | 'RELAY_METADATA'): { commands: ParsedCommand[]; output: string } {
787
- this.blockBuffer += data;
788
-
789
- // Check size limit
790
- if (this.blockBuffer.length > this.options.maxBlockBytes) {
791
- console.error('[parser] Block too large, discarding');
792
- this.inBlock = false;
793
- this.blockBuffer = '';
794
- this.blockType = null;
795
- return { commands, output: '' };
796
- }
797
-
798
- // Check for block end
799
- const blockEndPattern = blockType === 'RELAY_METADATA' ? BLOCK_METADATA_END : BLOCK_END;
800
- if (blockEndPattern.test(this.blockBuffer)) {
801
- const result = this.finishBlock(blockType);
802
- if (result.command) {
803
- commands.push(result.command);
804
- }
805
-
806
- let output = '';
807
- if (result.remaining) {
808
- // Recursively parse anything after the block
809
- const afterResult = this.parse(result.remaining);
810
- commands.push(...afterResult.commands);
811
- output = afterResult.output;
812
- }
813
-
814
- return { commands, output };
815
- }
816
-
817
- // Still inside block, no output yet
818
- return { commands, output: '' };
819
- }
820
-
821
- /**
822
- * Process a single complete line for inline relay commands.
823
- * Block handling is done at the parse() level, not here.
824
- *
825
- * IMPORTANT: We strip ANSI codes for pattern matching, but preserve
826
- * the original line for output to maintain terminal rendering.
827
- *
828
- * OPTIMIZATION: Early exit for lines that can't possibly be relay commands.
829
- * Most lines don't contain relay patterns, so we avoid expensive regex/ANSI
830
- * stripping for the common case.
831
- */
832
- private processLine(line: string): { command: ParsedCommand | null; output: string | null } {
833
- // FAST PATH: Quick string check before any expensive operations
834
- // Most lines don't contain relay commands, so early exit is a big win
835
- // Check for prefix bases (without the colon to handle custom prefixes like '>>')
836
- const relayBase = this.options.prefix.replace(/:$/, '');
837
- const thinkingBase = this.options.thinkingPrefix.replace(/:$/, '');
838
- const hasRelayPattern = line.includes(relayBase) || line.includes(thinkingBase);
839
- const hasBlockPattern = line.includes('[[') || line.includes('```');
840
- const hasJsonRelay = line.includes('->relay.json:');
841
-
842
- if (!hasRelayPattern && !hasBlockPattern && !hasJsonRelay) {
843
- return { command: null, output: line };
844
- }
845
-
846
- // Check for JSON relay format first (preferred): ->relay.json:{...}
847
- if (hasJsonRelay) {
848
- const stripped = stripAnsi(line);
849
- const jsonMatch = stripped.match(JSON_RELAY_PATTERN);
850
- if (jsonMatch) {
851
- try {
852
- const parsed = JSON.parse(jsonMatch[1]) as JsonRelayMessage;
853
- const kind = parsed.kind || 'message';
854
-
855
- // Handle different command kinds
856
- if (kind === 'message' && parsed.to) {
857
- return {
858
- command: {
859
- to: parsed.to,
860
- kind: 'message',
861
- body: parsed.body || '',
862
- thread: parsed.thread,
863
- raw: jsonMatch[0],
864
- },
865
- output: null,
866
- };
867
- }
868
- // spawn/release are handled by the wrapper, not here
869
- // But we still strip the line from output
870
- return { command: null, output: null };
871
- } catch {
872
- // Invalid JSON, pass through
873
- console.error('[parser] Invalid JSON in ->relay.json:', jsonMatch[1]);
874
- }
875
- }
876
- }
877
-
878
- // Strip ANSI codes for pattern matching (only when potentially needed)
879
- const stripped = stripAnsi(line);
880
-
881
- // Handle code fences
882
- if (CODE_FENCE.test(stripped)) {
883
- this.inCodeFence = !this.inCodeFence;
884
- return { command: null, output: line };
885
- }
886
-
887
- // Inside code fence - pass through
888
- if (this.inCodeFence) {
889
- return { command: null, output: line };
890
- }
891
-
892
- // Check for escaped inline (on stripped text)
893
- const escapeMatch = stripped.match(this.escapePattern);
894
- if (escapeMatch) {
895
- // Output with escape removed (remove the backslash before the prefix)
896
- const unescaped = line.replace(/\\/, '');
897
- return { command: null, output: unescaped };
898
- }
899
-
900
- // Skip spawn/release commands - they are handled by the wrapper's spawn subsystem
901
- // These should not be parsed as regular relay messages
902
- if (isSpawnOrReleaseCommand(stripped)) {
903
- return { command: null, output: line };
904
- }
905
-
906
- // Check for inline relay (on stripped text)
907
- if (this.options.enableInline) {
908
- const relayMatch = stripped.match(this.inlineRelayPattern);
909
- if (relayMatch) {
910
- const [raw, target, bodyWithTags] = relayMatch;
911
- const { body, thread, threadProject, sync } = parseInlineTags(bodyWithTags);
912
-
913
- // Skip instructional/example text (common in system prompts)
914
- if (isInstructionalText(body)) {
915
- console.error(`[parser] Filtered inline message to ${target} - instructional text. Body: ${body.substring(0, 100)}`);
916
- return { command: null, output: line };
917
- }
918
-
919
- const { to, project } = parseTarget(target);
920
-
921
- // Skip placeholder target names (common in documentation/examples)
922
- if (isPlaceholderTarget(to)) {
923
- console.error(`[parser] Filtered inline message - placeholder target: ${to}`);
924
- return { command: null, output: line };
925
- }
926
-
927
- return {
928
- command: {
929
- to,
930
- kind: 'message',
931
- body,
932
- thread: thread || undefined, // undefined if no thread specified
933
- threadProject: threadProject || undefined, // undefined if local thread
934
- project, // undefined if local, set if cross-project
935
- sync,
936
- raw,
937
- },
938
- output: null, // Don't output relay commands
939
- };
940
- }
941
-
942
- const thinkingMatch = stripped.match(this.inlineThinkingPattern);
943
- if (thinkingMatch) {
944
- const [raw, target, bodyWithTags] = thinkingMatch;
945
- const { body, thread, threadProject, sync } = parseInlineTags(bodyWithTags);
946
-
947
- // Skip instructional/example text (common in system prompts)
948
- if (isInstructionalText(body)) {
949
- return { command: null, output: line };
950
- }
951
-
952
- const { to, project } = parseTarget(target);
953
-
954
- // Skip placeholder target names (common in documentation/examples)
955
- if (isPlaceholderTarget(to)) {
956
- return { command: null, output: line };
957
- }
958
-
959
- return {
960
- command: {
961
- to,
962
- kind: 'thinking',
963
- body,
964
- thread: thread || undefined,
965
- threadProject: threadProject || undefined,
966
- project,
967
- sync,
968
- raw,
969
- },
970
- output: null,
971
- };
972
- }
973
- }
974
-
975
- // Regular line
976
- return { command: null, output: line };
977
- }
978
-
979
- /**
980
- * Finish processing a block and extract command.
981
- * Returns the command (if valid) and any remaining content after [[/RELAY]].
982
- */
983
- private finishBlock(blockType: 'RELAY' | 'RELAY_METADATA'): { command: ParsedCommand | null; remaining: string | null; metadata: ParsedMessageMetadata | null } {
984
- const blockEndIdentifier = blockType === 'RELAY_METADATA' ? BLOCK_METADATA_END.source : BLOCK_END.source;
985
- const endIdx = this.blockBuffer.indexOf(blockEndIdentifier.replace(/\\/g, '')); // Remove regex escapes for indexOf
986
- const jsonStr = this.blockBuffer.substring(0, endIdx).trim();
987
- const remaining = this.blockBuffer.substring(endIdx + blockEndIdentifier.replace(/\\/g, '').length) || null;
988
-
989
- this.inBlock = false;
990
- this.blockBuffer = '';
991
- this.blockType = null;
992
-
993
- if (blockType === 'RELAY_METADATA') {
994
- try {
995
- const metadata = JSON.parse(jsonStr) as ParsedMessageMetadata;
996
- this.lastParsedMetadata = metadata;
997
- return { command: null, remaining, metadata };
998
- } catch (err) {
999
- console.error('[parser] Invalid JSON in RELAY_METADATA block:', err);
1000
- this.lastParsedMetadata = null;
1001
- return { command: null, remaining, metadata: null };
1002
- }
1003
- } else { // blockType === 'RELAY'
1004
- try {
1005
- const parsed = JSON.parse(jsonStr);
1006
-
1007
- // Validate required fields
1008
- if (!parsed.to || !parsed.type) {
1009
- console.error('[parser] Block missing required fields (to, type)');
1010
- this.lastParsedMetadata = null; // Clear metadata even if RELAY block is invalid
1011
- return { command: null, remaining, metadata: null };
1012
- }
1013
-
1014
- // Handle cross-project syntax in block format
1015
- // Supports both explicit "project" field and "project:agent" in "to" field
1016
- let to = parsed.to;
1017
- let project = parsed.project;
1018
-
1019
- if (!project && typeof to === 'string') {
1020
- // Check if "to" field uses project:agent syntax
1021
- const targetParsed = parseTarget(to);
1022
- to = targetParsed.to;
1023
- project = targetParsed.project;
1024
- }
1025
-
1026
- const command: ParsedCommand = {
1027
- to,
1028
- kind: parsed.type as PayloadKind,
1029
- body: parsed.body ?? parsed.text ?? '',
1030
- data: parsed.data,
1031
- thread: parsed.thread || undefined,
1032
- project: project || undefined,
1033
- raw: jsonStr,
1034
- meta: this.lastParsedMetadata || undefined, // Attach last parsed metadata
1035
- };
1036
-
1037
- this.lastParsedMetadata = null; // Clear after use
1038
-
1039
- return {
1040
- command,
1041
- remaining,
1042
- metadata: null,
1043
- };
1044
- } catch (err) {
1045
- console.error('[parser] Invalid JSON in RELAY block:', err);
1046
- this.lastParsedMetadata = null;
1047
- return { command: null, remaining, metadata: null };
1048
- }
1049
- }
1050
- }
1051
-
1052
- /**
1053
- * Check if the current fenced inline command should be filtered out.
1054
- * Returns true if the command looks like instructional/example text.
1055
- */
1056
- private shouldFilterFencedInline(target: string, body: string): boolean {
1057
- // Check for placeholder target names
1058
- if (isPlaceholderTarget(target)) {
1059
- // Silently filter placeholder targets (common in documentation)
1060
- return true;
1061
- }
1062
- // Check for instructional body content
1063
- if (isInstructionalText(body)) {
1064
- // Silently filter instructional text (common in system prompts)
1065
- return true;
1066
- }
1067
- return false;
1068
- }
1069
-
1070
- /**
1071
- * Parse while inside a fenced inline block (->relay:Target <<< ... >>>).
1072
- * Accumulates lines until >>> is seen on its own line.
1073
- */
1074
- private parseFencedInlineMode(data: string, commands: ParsedCommand[]): { commands: ParsedCommand[]; output: string } {
1075
- const lines = data.split('\n');
1076
- const hasTrailingNewline = data.endsWith('\n');
1077
- let output = '';
1078
- let consecutiveBlankLines = 0;
1079
-
1080
- for (let i = 0; i < lines.length; i++) {
1081
- const line = lines[i];
1082
- const isLastLine = i === lines.length - 1;
1083
- const stripped = stripAnsi(line);
1084
-
1085
- // Track consecutive blank lines for auto-close
1086
- if (stripped === '') {
1087
- consecutiveBlankLines++;
1088
- } else {
1089
- consecutiveBlankLines = 0;
1090
- }
1091
-
1092
- // Auto-close on double blank line (agent forgot >>>)
1093
- // Only if we have actual content to send
1094
- if (consecutiveBlankLines >= 2 && this.fencedInlineBuffer.trim().length > 0) {
1095
- const body = unescapeFenceMarkers(stripAnsi(this.fencedInlineBuffer.trim()));
1096
-
1097
- // Skip instructional/example text (common in system prompts and documentation)
1098
- if (!this.shouldFilterFencedInline(this.fencedInlineTarget, body)) {
1099
- const command: ParsedCommand = {
1100
- to: this.fencedInlineTarget,
1101
- kind: this.fencedInlineKind,
1102
- body,
1103
- thread: this.fencedInlineThread,
1104
- threadProject: this.fencedInlineThreadProject,
1105
- project: this.fencedInlineProject,
1106
- sync: this.fencedInlineSync,
1107
- raw: this.fencedInlineRaw.join('\n'),
1108
- };
1109
- commands.push(command);
1110
- }
1111
-
1112
- // Reset fenced inline state
1113
- this.inFencedInline = false;
1114
- this.fencedInlineBuffer = '';
1115
- this.fencedInlineTarget = '';
1116
- this.fencedInlineThread = undefined;
1117
- this.fencedInlineThreadProject = undefined;
1118
- this.fencedInlineProject = undefined;
1119
- this.fencedInlineRaw = [];
1120
- this.fencedInlineKind = 'message';
1121
- this.fencedInlineSync = undefined;
1122
-
1123
- // Process remaining lines in normal mode
1124
- const remainingLines = lines.slice(i);
1125
- const remaining = remainingLines.join('\n') + (hasTrailingNewline ? '\n' : '');
1126
- const result = this.parse(remaining);
1127
- commands.push(...result.commands);
1128
- return { commands, output: result.output };
1129
- }
1130
-
1131
- // Check if a new relay command started (means previous fenced block was never closed)
1132
- // Auto-close and SEND the incomplete message instead of discarding it
1133
- // This preserves message content when agents forget to close with >>>
1134
- if (this.inlineRelayPattern.test(stripped) || this.fencedRelayPattern.test(stripped)) {
1135
- // Auto-close and send the incomplete fenced block (if it has content)
1136
- if (this.fencedInlineBuffer.trim().length > 0) {
1137
- const body = unescapeFenceMarkers(stripAnsi(this.fencedInlineBuffer.trim()));
1138
-
1139
- // Skip instructional/example text (common in system prompts and documentation)
1140
- if (!this.shouldFilterFencedInline(this.fencedInlineTarget, body)) {
1141
- const command: ParsedCommand = {
1142
- to: this.fencedInlineTarget,
1143
- kind: this.fencedInlineKind,
1144
- body,
1145
- thread: this.fencedInlineThread,
1146
- threadProject: this.fencedInlineThreadProject,
1147
- project: this.fencedInlineProject,
1148
- sync: this.fencedInlineSync,
1149
- raw: this.fencedInlineRaw.join('\n'),
1150
- };
1151
- commands.push(command);
1152
- }
1153
- }
1154
-
1155
- // Reset fenced inline state
1156
- this.inFencedInline = false;
1157
- this.fencedInlineBuffer = '';
1158
- this.fencedInlineTarget = '';
1159
- this.fencedInlineThread = undefined;
1160
- this.fencedInlineThreadProject = undefined;
1161
- this.fencedInlineProject = undefined;
1162
- this.fencedInlineRaw = [];
1163
- this.fencedInlineKind = 'message';
1164
- this.fencedInlineSync = undefined;
1165
-
1166
- // Process remaining lines (including this one) in normal mode
1167
- const remainingLines = lines.slice(i);
1168
- const remaining = remainingLines.join('\n') + (hasTrailingNewline ? '\n' : '');
1169
- const result = this.parse(remaining);
1170
- commands.push(...result.commands);
1171
- return { commands, output: result.output };
1172
- }
1173
-
1174
- // Check if this line closes the fenced block
1175
- // Skip if the >>> is escaped (\>>>)
1176
- if (FENCE_END.test(stripped) && !isEscapedFenceEnd(stripped)) {
1177
- // If >>> is at end of line (not start), extract content before it
1178
- const endsWithFence = />>>\s*$/.test(stripped) && !/^(?:\s*)?>>>/.test(stripped);
1179
- if (endsWithFence) {
1180
- const contentBeforeFence = stripped.replace(/>>>\s*$/, '');
1181
- if (contentBeforeFence.trim()) {
1182
- if (this.fencedInlineBuffer.length > 0) {
1183
- this.fencedInlineBuffer += '\n' + contentBeforeFence;
1184
- } else {
1185
- this.fencedInlineBuffer = contentBeforeFence;
1186
- }
1187
- }
1188
- }
1189
-
1190
- // Complete the fenced inline command - unescape any \<<< and \>>> in content
1191
- const body = unescapeFenceMarkers(stripAnsi(this.fencedInlineBuffer.trim()));
1192
- this.fencedInlineRaw.push(line);
1193
-
1194
- // Skip instructional/example text (common in system prompts and documentation)
1195
- if (!this.shouldFilterFencedInline(this.fencedInlineTarget, body)) {
1196
- const command: ParsedCommand = {
1197
- to: this.fencedInlineTarget,
1198
- kind: this.fencedInlineKind,
1199
- body,
1200
- thread: this.fencedInlineThread,
1201
- threadProject: this.fencedInlineThreadProject,
1202
- project: this.fencedInlineProject,
1203
- sync: this.fencedInlineSync,
1204
- raw: this.fencedInlineRaw.join('\n'),
1205
- };
1206
- commands.push(command);
1207
- }
1208
-
1209
- // Reset fenced inline state
1210
- this.inFencedInline = false;
1211
- this.fencedInlineBuffer = '';
1212
- this.fencedInlineTarget = '';
1213
- this.fencedInlineThread = undefined;
1214
- this.fencedInlineThreadProject = undefined;
1215
- this.fencedInlineProject = undefined;
1216
- this.fencedInlineRaw = [];
1217
- this.fencedInlineKind = 'message';
1218
- this.fencedInlineSync = undefined;
1219
-
1220
- // Process remaining lines after the fence close
1221
- // Only process if there's actual content after the closing fence
1222
- const remainingLines = lines.slice(i + 1);
1223
- // Filter out trailing empty string from split
1224
- const hasContent = remainingLines.some((l, idx) =>
1225
- l.trim() !== '' || (idx < remainingLines.length - 1));
1226
-
1227
- if (hasContent) {
1228
- const remaining = remainingLines.join('\n') + (hasTrailingNewline ? '\n' : '');
1229
- const result = this.parse(remaining);
1230
- commands.push(...result.commands);
1231
- output += result.output;
1232
- }
1233
- return { commands, output };
1234
- }
1235
-
1236
- // Accumulate this line into the buffer (preserving blank lines within content)
1237
- // But skip trailing empty line from split (when input ends with \n)
1238
- const isTrailingEmpty = isLastLine && line === '' && hasTrailingNewline;
1239
- if (!isTrailingEmpty) {
1240
- if (this.fencedInlineBuffer.length > 0) {
1241
- this.fencedInlineBuffer += '\n' + line;
1242
- } else if (line.trim() !== '') {
1243
- // Start accumulating from first non-blank line
1244
- this.fencedInlineBuffer = line;
1245
- }
1246
- this.fencedInlineRaw.push(line);
1247
- }
1248
-
1249
- // Check size limit
1250
- if (this.fencedInlineBuffer.length > this.options.maxBlockBytes) {
1251
- console.error('[parser] Fenced inline block too large, discarding');
1252
- this.inFencedInline = false;
1253
- this.fencedInlineBuffer = '';
1254
- this.fencedInlineTarget = '';
1255
- this.fencedInlineThread = undefined;
1256
- this.fencedInlineThreadProject = undefined;
1257
- this.fencedInlineProject = undefined;
1258
- this.fencedInlineRaw = [];
1259
- this.fencedInlineKind = 'message';
1260
- this.fencedInlineSync = undefined;
1261
- return { commands, output: '' };
1262
- }
1263
-
1264
- // Check line count limit - prevents stuck fenced mode from blocking all messages
1265
- if (this.fencedInlineRaw.length > MAX_FENCED_LINES) {
1266
- console.error('[parser] Fenced inline block exceeded max lines, discarding');
1267
- this.inFencedInline = false;
1268
- this.fencedInlineBuffer = '';
1269
- this.fencedInlineTarget = '';
1270
- this.fencedInlineThread = undefined;
1271
- this.fencedInlineThreadProject = undefined;
1272
- this.fencedInlineProject = undefined;
1273
- this.fencedInlineRaw = [];
1274
- this.fencedInlineKind = 'message';
1275
- this.fencedInlineSync = undefined;
1276
- return { commands, output: '' };
1277
- }
1278
- }
1279
-
1280
- // Still waiting for >>> - return empty output (content is buffered)
1281
- return { commands, output: '' };
1282
- }
1283
-
1284
- /**
1285
- * Flush any remaining buffer (call on stream end).
1286
- */
1287
- flush(): { commands: ParsedCommand[]; output: string } {
1288
- const result = this.parse('\n');
1289
- this.inBlock = false;
1290
- this.blockBuffer = '';
1291
- this.blockType = null;
1292
- this.lastParsedMetadata = null;
1293
- this.inCodeFence = false;
1294
- this.inThinkingBlock = false;
1295
- this.inFencedInline = false;
1296
- this.fencedInlineBuffer = '';
1297
- this.fencedInlineTarget = '';
1298
- this.fencedInlineThread = undefined;
1299
- this.fencedInlineThreadProject = undefined;
1300
- this.fencedInlineProject = undefined;
1301
- this.fencedInlineRaw = [];
1302
- this.fencedInlineKind = 'message';
1303
- this.fencedInlineSync = undefined;
1304
- return result;
1305
- }
1306
-
1307
- /**
1308
- * Reset parser state.
1309
- */
1310
- reset(): void {
1311
- this.inBlock = false;
1312
- this.blockBuffer = '';
1313
- this.blockType = null;
1314
- this.lastParsedMetadata = null;
1315
- this.inCodeFence = false;
1316
- this.inThinkingBlock = false;
1317
- this.inFencedInline = false;
1318
- this.fencedInlineBuffer = '';
1319
- this.fencedInlineTarget = '';
1320
- this.fencedInlineThread = undefined;
1321
- this.fencedInlineThreadProject = undefined;
1322
- this.fencedInlineProject = undefined;
1323
- this.fencedInlineRaw = [];
1324
- this.fencedInlineKind = 'message';
1325
- this.fencedInlineSync = undefined;
1326
- }
1327
- }
1328
-
1329
- /**
1330
- * Parsed message metadata block from agent output.
1331
- */
1332
- export interface ParsedMessageMetadata {
1333
- subject?: string;
1334
- importance?: number;
1335
- replyTo?: string;
1336
- ackRequired?: boolean;
1337
- }
1338
-
1339
- /**
1340
- * Result of attempting to parse a RELAY_METADATA block.
1341
- */
1342
- export interface MetadataParseResult {
1343
- found: boolean;
1344
- valid: boolean;
1345
- metadata: ParsedMessageMetadata | null;
1346
- rawContent: string | null; // Raw block content for deduplication
1347
- }
1348
-
1349
- /**
1350
- * Parse [[RELAY_METADATA]]...[[/RELAY_METADATA]] blocks from agent output.
1351
- * Agents can output metadata to enhance messages.
1352
- *
1353
- * Format:
1354
- * [[RELAY_METADATA]]
1355
- * {
1356
- * "subject": "Task update",
1357
- * "importance": 80,
1358
- * "replyTo": "msg-abc123",
1359
- * "ackRequired": true
1360
- * }
1361
- * [[/RELAY_METADATA]]
1362
- */
1363
- export function parseRelayMetadataFromOutput(output: string): MetadataParseResult {
1364
- const match = output.match(/\[\[RELAY_METADATA\]\]([\s\S]*?)\[\[\/RELAY_METADATA\]\]/);
1365
-
1366
- if (!match) {
1367
- return { found: false, valid: false, metadata: null, rawContent: null };
1368
- }
1369
-
1370
- const rawContent = match[1].trim();
1371
-
1372
- try {
1373
- const metadata = JSON.parse(rawContent) as ParsedMessageMetadata;
1374
- return { found: true, valid: true, metadata, rawContent };
1375
- } catch {
1376
- return { found: true, valid: false, metadata: null, rawContent };
1377
- }
1378
- }
1379
-
1380
- /**
1381
- * Parsed summary block from agent output.
1382
- */
1383
- export interface ParsedSummary {
1384
- currentTask?: string;
1385
- completedTasks?: string[];
1386
- decisions?: string[];
1387
- context?: string;
1388
- files?: string[];
1389
- }
1390
-
1391
- /**
1392
- * Result of attempting to parse a SUMMARY block.
1393
- */
1394
- export interface SummaryParseResult {
1395
- found: boolean;
1396
- valid: boolean;
1397
- summary: ParsedSummary | null;
1398
- rawContent: string | null; // Raw block content for deduplication
1399
- }
1400
-
1401
- /**
1402
- * Parse [[SUMMARY]]...[[/SUMMARY]] blocks from agent output.
1403
- * Agents can output summaries to keep a running context of their work.
1404
- *
1405
- * Format:
1406
- * [[SUMMARY]]
1407
- * {
1408
- * "currentTask": "Working on auth module",
1409
- * "context": "Completed login flow, now implementing logout",
1410
- * "files": ["src/auth.ts", "src/session.ts"]
1411
- * }
1412
- * [[/SUMMARY]]
1413
- */
1414
- export function parseSummaryFromOutput(output: string): ParsedSummary | null {
1415
- const result = parseSummaryWithDetails(output);
1416
- return result.summary;
1417
- }
1418
-
1419
- /**
1420
- * Parse SUMMARY block with full details for deduplication.
1421
- * Returns raw content to allow caller to dedupe before logging errors.
1422
- */
1423
- export function parseSummaryWithDetails(output: string): SummaryParseResult {
1424
- const match = output.match(/\[\[SUMMARY\]\]([\s\S]*?)\[\[\/SUMMARY\]\]/);
1425
-
1426
- if (!match) {
1427
- return { found: false, valid: false, summary: null, rawContent: null };
1428
- }
1429
-
1430
- const rawContent = match[1].trim();
1431
-
1432
- try {
1433
- const summary = JSON.parse(rawContent) as ParsedSummary;
1434
- return { found: true, valid: true, summary, rawContent };
1435
- } catch {
1436
- return { found: true, valid: false, summary: null, rawContent };
1437
- }
1438
- }
1439
-
1440
- /**
1441
- * Session end marker from agent output.
1442
- */
1443
- export interface SessionEndMarker {
1444
- summary?: string;
1445
- completedTasks?: string[];
1446
- }
1447
-
1448
- /**
1449
- * Parse [[SESSION_END]]...[[/SESSION_END]] blocks from agent output.
1450
- * Agents output this to explicitly mark their session as complete.
1451
- *
1452
- * Format:
1453
- * [[SESSION_END]]
1454
- * {"summary": "Completed auth module implementation", "completedTasks": ["login", "logout"]}
1455
- * [[/SESSION_END]]
1456
- *
1457
- * Or simply: [[SESSION_END]][[/SESSION_END]] for a clean close without summary.
1458
- */
1459
- export function parseSessionEndFromOutput(output: string): SessionEndMarker | null {
1460
- const match = output.match(/\[\[SESSION_END\]\]([\s\S]*?)\[\[\/SESSION_END\]\]/);
1461
-
1462
- if (!match) {
1463
- return null;
1464
- }
1465
-
1466
- const content = match[1].trim();
1467
- if (!content) {
1468
- return {}; // Empty marker = session ended without summary
1469
- }
1470
-
1471
- try {
1472
- return JSON.parse(content) as SessionEndMarker;
1473
- } catch {
1474
- // If not valid JSON, treat the content as a plain summary string
1475
- return { summary: content };
1476
- }
1477
- }