agent-relay 2.3.2 → 2.3.5

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 (334) hide show
  1. package/README.md +1 -1
  2. package/dist/index.cjs +1 -1
  3. package/dist/src/cli/index.js +124 -7
  4. package/dist/src/cli/index.js.map +1 -1
  5. package/package.json +20 -26
  6. package/packages/acp-bridge/package.json +2 -2
  7. package/packages/bridge/package.json +7 -7
  8. package/packages/config/dist/cloud-config.d.ts +1 -1
  9. package/packages/config/dist/cloud-config.d.ts.map +1 -1
  10. package/packages/config/dist/cloud-config.js.map +1 -1
  11. package/packages/config/dist/schemas.d.ts +5 -5
  12. package/packages/config/dist/schemas.js +1 -1
  13. package/packages/config/dist/schemas.js.map +1 -1
  14. package/packages/config/package.json +2 -2
  15. package/packages/config/src/cloud-config.ts +2 -2
  16. package/packages/config/src/schemas.test.ts +48 -0
  17. package/packages/config/src/schemas.ts +1 -1
  18. package/packages/continuity/package.json +2 -2
  19. package/packages/daemon/package.json +12 -12
  20. package/packages/hooks/package.json +4 -4
  21. package/packages/mcp/package.json +5 -5
  22. package/packages/memory/package.json +2 -2
  23. package/packages/policy/package.json +2 -2
  24. package/packages/protocol/package.json +1 -1
  25. package/packages/resiliency/package.json +1 -1
  26. package/packages/sdk/dist/index.d.ts +1 -29
  27. package/packages/sdk/dist/index.d.ts.map +1 -1
  28. package/packages/sdk/dist/index.js +1 -38
  29. package/packages/sdk/dist/index.js.map +1 -1
  30. package/packages/sdk/package.json +4 -25
  31. package/packages/sdk/src/index.ts +1 -69
  32. package/packages/sdk-py/README.md +56 -0
  33. package/packages/sdk-py/pyproject.toml +23 -0
  34. package/packages/sdk-py/src/agent_relay/__init__.py +27 -0
  35. package/packages/sdk-py/src/agent_relay/builder.py +367 -0
  36. package/packages/sdk-py/src/agent_relay/types.py +92 -0
  37. package/packages/sdk-py/tests/__init__.py +0 -0
  38. package/packages/sdk-py/tests/test_builder.py +101 -0
  39. package/packages/sdk-ts/dist/__tests__/facade.test.d.ts +2 -0
  40. package/packages/sdk-ts/dist/__tests__/facade.test.d.ts.map +1 -0
  41. package/packages/sdk-ts/dist/__tests__/facade.test.js +257 -0
  42. package/packages/sdk-ts/dist/__tests__/facade.test.js.map +1 -0
  43. package/packages/sdk-ts/dist/__tests__/unit.test.d.ts +2 -0
  44. package/packages/sdk-ts/dist/__tests__/unit.test.d.ts.map +1 -0
  45. package/packages/sdk-ts/dist/__tests__/unit.test.js +124 -0
  46. package/packages/sdk-ts/dist/__tests__/unit.test.js.map +1 -0
  47. package/packages/sdk-ts/dist/client.d.ts +2 -0
  48. package/packages/sdk-ts/dist/client.d.ts.map +1 -1
  49. package/packages/sdk-ts/dist/client.js +2 -0
  50. package/packages/sdk-ts/dist/client.js.map +1 -1
  51. package/packages/sdk-ts/dist/index.d.ts +1 -0
  52. package/packages/sdk-ts/dist/index.d.ts.map +1 -1
  53. package/packages/sdk-ts/dist/index.js +1 -0
  54. package/packages/sdk-ts/dist/index.js.map +1 -1
  55. package/packages/sdk-ts/dist/protocol.d.ts +1 -0
  56. package/packages/sdk-ts/dist/protocol.d.ts.map +1 -1
  57. package/packages/sdk-ts/dist/relay.d.ts +44 -0
  58. package/packages/sdk-ts/dist/relay.d.ts.map +1 -1
  59. package/packages/sdk-ts/dist/relay.js +89 -11
  60. package/packages/sdk-ts/dist/relay.js.map +1 -1
  61. package/packages/sdk-ts/dist/relaycast.js +2 -2
  62. package/packages/sdk-ts/dist/relaycast.js.map +1 -1
  63. package/packages/sdk-ts/dist/workflows/barrier.d.ts +72 -0
  64. package/packages/sdk-ts/dist/workflows/barrier.d.ts.map +1 -0
  65. package/packages/sdk-ts/dist/workflows/barrier.js +162 -0
  66. package/packages/sdk-ts/dist/workflows/barrier.js.map +1 -0
  67. package/packages/sdk-ts/dist/workflows/builder.d.ts +101 -0
  68. package/packages/sdk-ts/dist/workflows/builder.d.ts.map +1 -0
  69. package/packages/sdk-ts/dist/workflows/builder.js +179 -0
  70. package/packages/sdk-ts/dist/workflows/builder.js.map +1 -0
  71. package/packages/sdk-ts/dist/workflows/cli.d.ts +10 -0
  72. package/packages/sdk-ts/dist/workflows/cli.d.ts.map +1 -0
  73. package/packages/sdk-ts/dist/workflows/cli.js +82 -0
  74. package/packages/sdk-ts/dist/workflows/cli.js.map +1 -0
  75. package/packages/sdk-ts/dist/workflows/coordinator.d.ts +68 -0
  76. package/packages/sdk-ts/dist/workflows/coordinator.d.ts.map +1 -0
  77. package/packages/sdk-ts/dist/workflows/coordinator.js +353 -0
  78. package/packages/sdk-ts/dist/workflows/coordinator.js.map +1 -0
  79. package/packages/sdk-ts/dist/workflows/index.d.ts +10 -0
  80. package/packages/sdk-ts/dist/workflows/index.d.ts.map +1 -0
  81. package/packages/sdk-ts/dist/workflows/index.js +10 -0
  82. package/packages/sdk-ts/dist/workflows/index.js.map +1 -0
  83. package/packages/sdk-ts/dist/workflows/memory-db.d.ts +17 -0
  84. package/packages/sdk-ts/dist/workflows/memory-db.d.ts.map +1 -0
  85. package/packages/sdk-ts/dist/workflows/memory-db.js +33 -0
  86. package/packages/sdk-ts/dist/workflows/memory-db.js.map +1 -0
  87. package/packages/sdk-ts/dist/workflows/run.d.ts +31 -0
  88. package/packages/sdk-ts/dist/workflows/run.d.ts.map +1 -0
  89. package/packages/sdk-ts/dist/workflows/run.js +24 -0
  90. package/packages/sdk-ts/dist/workflows/run.js.map +1 -0
  91. package/packages/sdk-ts/dist/workflows/runner.d.ts +119 -0
  92. package/packages/sdk-ts/dist/workflows/runner.d.ts.map +1 -0
  93. package/packages/sdk-ts/dist/workflows/runner.js +650 -0
  94. package/packages/sdk-ts/dist/workflows/runner.js.map +1 -0
  95. package/packages/sdk-ts/dist/workflows/state.d.ts +77 -0
  96. package/packages/sdk-ts/dist/workflows/state.d.ts.map +1 -0
  97. package/packages/sdk-ts/dist/workflows/state.js +140 -0
  98. package/packages/sdk-ts/dist/workflows/state.js.map +1 -0
  99. package/packages/sdk-ts/dist/workflows/templates.d.ts +47 -0
  100. package/packages/sdk-ts/dist/workflows/templates.d.ts.map +1 -0
  101. package/packages/sdk-ts/dist/workflows/templates.js +395 -0
  102. package/packages/sdk-ts/dist/workflows/templates.js.map +1 -0
  103. package/packages/sdk-ts/dist/workflows/types.d.ts +126 -0
  104. package/packages/sdk-ts/dist/workflows/types.d.ts.map +1 -0
  105. package/packages/sdk-ts/dist/workflows/types.js +8 -0
  106. package/packages/sdk-ts/dist/workflows/types.js.map +1 -0
  107. package/packages/sdk-ts/package.json +9 -3
  108. package/packages/sdk-ts/src/__tests__/error-scenarios.test.ts +682 -0
  109. package/packages/sdk-ts/src/__tests__/facade.test.ts +296 -0
  110. package/packages/sdk-ts/src/__tests__/swarm-coordinator.test.ts +416 -0
  111. package/packages/sdk-ts/src/__tests__/unit.test.ts +152 -0
  112. package/packages/sdk-ts/src/__tests__/workflow-runner.test.ts +333 -0
  113. package/packages/sdk-ts/src/client.ts +4 -0
  114. package/packages/sdk-ts/src/index.ts +1 -0
  115. package/packages/sdk-ts/src/protocol.ts +1 -1
  116. package/packages/sdk-ts/src/relay.ts +112 -11
  117. package/packages/sdk-ts/src/relaycast.ts +2 -2
  118. package/packages/sdk-ts/src/workflows/README.md +450 -0
  119. package/packages/sdk-ts/src/workflows/barrier.ts +254 -0
  120. package/packages/sdk-ts/src/workflows/builder.ts +241 -0
  121. package/packages/sdk-ts/src/workflows/builtin-templates/bug-fix.yaml +75 -0
  122. package/packages/sdk-ts/src/workflows/builtin-templates/code-review.yaml +82 -0
  123. package/packages/sdk-ts/src/workflows/builtin-templates/documentation.yaml +70 -0
  124. package/packages/sdk-ts/src/workflows/builtin-templates/feature-dev.yaml +76 -0
  125. package/packages/sdk-ts/src/workflows/builtin-templates/refactor.yaml +82 -0
  126. package/packages/sdk-ts/src/workflows/builtin-templates/security-audit.yaml +84 -0
  127. package/packages/sdk-ts/src/workflows/cli.ts +93 -0
  128. package/packages/sdk-ts/src/workflows/coordinator.ts +520 -0
  129. package/packages/sdk-ts/src/workflows/index.ts +9 -0
  130. package/packages/sdk-ts/src/workflows/memory-db.ts +39 -0
  131. package/packages/sdk-ts/src/workflows/run.ts +47 -0
  132. package/packages/sdk-ts/src/workflows/runner.ts +873 -0
  133. package/packages/sdk-ts/src/workflows/schema.json +321 -0
  134. package/packages/sdk-ts/src/workflows/state.ts +279 -0
  135. package/packages/sdk-ts/src/workflows/templates.ts +544 -0
  136. package/packages/sdk-ts/src/workflows/types.ts +178 -0
  137. package/packages/sdk-ts/tsconfig.json +6 -1
  138. package/packages/spawner/package.json +1 -1
  139. package/packages/state/package.json +1 -1
  140. package/packages/storage/package.json +2 -2
  141. package/packages/telemetry/package.json +1 -1
  142. package/packages/trajectory/package.json +2 -2
  143. package/packages/user-directory/package.json +2 -2
  144. package/packages/utils/package.json +3 -3
  145. package/packages/wrapper/package.json +5 -6
  146. package/scripts/postinstall.js +106 -2
  147. package/packages/api-types/.trajectories/active/traj_xbsvuzogscey.json +0 -15
  148. package/packages/api-types/.trajectories/index.json +0 -12
  149. package/packages/api-types/dist/index.d.ts +0 -21
  150. package/packages/api-types/dist/index.d.ts.map +0 -1
  151. package/packages/api-types/dist/index.js +0 -22
  152. package/packages/api-types/dist/index.js.map +0 -1
  153. package/packages/api-types/dist/schemas/agent.d.ts +0 -259
  154. package/packages/api-types/dist/schemas/agent.d.ts.map +0 -1
  155. package/packages/api-types/dist/schemas/agent.js +0 -102
  156. package/packages/api-types/dist/schemas/agent.js.map +0 -1
  157. package/packages/api-types/dist/schemas/api.d.ts +0 -290
  158. package/packages/api-types/dist/schemas/api.d.ts.map +0 -1
  159. package/packages/api-types/dist/schemas/api.js +0 -162
  160. package/packages/api-types/dist/schemas/api.js.map +0 -1
  161. package/packages/api-types/dist/schemas/decision.d.ts +0 -230
  162. package/packages/api-types/dist/schemas/decision.d.ts.map +0 -1
  163. package/packages/api-types/dist/schemas/decision.js +0 -104
  164. package/packages/api-types/dist/schemas/decision.js.map +0 -1
  165. package/packages/api-types/dist/schemas/fleet.d.ts +0 -615
  166. package/packages/api-types/dist/schemas/fleet.d.ts.map +0 -1
  167. package/packages/api-types/dist/schemas/fleet.js +0 -71
  168. package/packages/api-types/dist/schemas/fleet.js.map +0 -1
  169. package/packages/api-types/dist/schemas/history.d.ts +0 -180
  170. package/packages/api-types/dist/schemas/history.d.ts.map +0 -1
  171. package/packages/api-types/dist/schemas/history.js +0 -72
  172. package/packages/api-types/dist/schemas/history.js.map +0 -1
  173. package/packages/api-types/dist/schemas/index.d.ts +0 -14
  174. package/packages/api-types/dist/schemas/index.d.ts.map +0 -1
  175. package/packages/api-types/dist/schemas/index.js +0 -22
  176. package/packages/api-types/dist/schemas/index.js.map +0 -1
  177. package/packages/api-types/dist/schemas/message.d.ts +0 -456
  178. package/packages/api-types/dist/schemas/message.d.ts.map +0 -1
  179. package/packages/api-types/dist/schemas/message.js +0 -88
  180. package/packages/api-types/dist/schemas/message.js.map +0 -1
  181. package/packages/api-types/dist/schemas/session.d.ts +0 -60
  182. package/packages/api-types/dist/schemas/session.d.ts.map +0 -1
  183. package/packages/api-types/dist/schemas/session.js +0 -36
  184. package/packages/api-types/dist/schemas/session.js.map +0 -1
  185. package/packages/api-types/dist/schemas/task.d.ts +0 -111
  186. package/packages/api-types/dist/schemas/task.d.ts.map +0 -1
  187. package/packages/api-types/dist/schemas/task.js +0 -64
  188. package/packages/api-types/dist/schemas/task.js.map +0 -1
  189. package/packages/api-types/package.json +0 -61
  190. package/packages/api-types/scripts/generate-openapi.ts +0 -106
  191. package/packages/api-types/src/index.ts +0 -22
  192. package/packages/api-types/src/schemas/agent.test.ts +0 -164
  193. package/packages/api-types/src/schemas/agent.ts +0 -110
  194. package/packages/api-types/src/schemas/api.test.ts +0 -372
  195. package/packages/api-types/src/schemas/api.ts +0 -194
  196. package/packages/api-types/src/schemas/decision.test.ts +0 -324
  197. package/packages/api-types/src/schemas/decision.ts +0 -136
  198. package/packages/api-types/src/schemas/fleet.test.ts +0 -212
  199. package/packages/api-types/src/schemas/fleet.ts +0 -83
  200. package/packages/api-types/src/schemas/history.test.ts +0 -242
  201. package/packages/api-types/src/schemas/history.ts +0 -84
  202. package/packages/api-types/src/schemas/index.ts +0 -148
  203. package/packages/api-types/src/schemas/message.test.ts +0 -192
  204. package/packages/api-types/src/schemas/message.ts +0 -98
  205. package/packages/api-types/src/schemas/session.test.ts +0 -104
  206. package/packages/api-types/src/schemas/session.ts +0 -40
  207. package/packages/api-types/src/schemas/task.test.ts +0 -192
  208. package/packages/api-types/src/schemas/task.ts +0 -78
  209. package/packages/api-types/tsconfig.json +0 -19
  210. package/packages/api-types/vitest.config.ts +0 -9
  211. package/packages/benchmark/README.md +0 -200
  212. package/packages/benchmark/datasets/coding-tasks.yaml +0 -127
  213. package/packages/benchmark/datasets/coordination-tasks.yaml +0 -122
  214. package/packages/benchmark/datasets/quick-test.yaml +0 -20
  215. package/packages/benchmark/dist/benchmark.d.ts +0 -47
  216. package/packages/benchmark/dist/benchmark.d.ts.map +0 -1
  217. package/packages/benchmark/dist/benchmark.js +0 -224
  218. package/packages/benchmark/dist/benchmark.js.map +0 -1
  219. package/packages/benchmark/dist/cli.d.ts +0 -8
  220. package/packages/benchmark/dist/cli.d.ts.map +0 -1
  221. package/packages/benchmark/dist/cli.js +0 -185
  222. package/packages/benchmark/dist/cli.js.map +0 -1
  223. package/packages/benchmark/dist/harbor.d.ts +0 -53
  224. package/packages/benchmark/dist/harbor.d.ts.map +0 -1
  225. package/packages/benchmark/dist/harbor.js +0 -127
  226. package/packages/benchmark/dist/harbor.js.map +0 -1
  227. package/packages/benchmark/dist/index.d.ts +0 -48
  228. package/packages/benchmark/dist/index.d.ts.map +0 -1
  229. package/packages/benchmark/dist/index.js +0 -50
  230. package/packages/benchmark/dist/index.js.map +0 -1
  231. package/packages/benchmark/dist/runners/base.d.ts +0 -63
  232. package/packages/benchmark/dist/runners/base.d.ts.map +0 -1
  233. package/packages/benchmark/dist/runners/base.js +0 -156
  234. package/packages/benchmark/dist/runners/base.js.map +0 -1
  235. package/packages/benchmark/dist/runners/index.d.ts +0 -10
  236. package/packages/benchmark/dist/runners/index.d.ts.map +0 -1
  237. package/packages/benchmark/dist/runners/index.js +0 -10
  238. package/packages/benchmark/dist/runners/index.js.map +0 -1
  239. package/packages/benchmark/dist/runners/single.d.ts +0 -19
  240. package/packages/benchmark/dist/runners/single.d.ts.map +0 -1
  241. package/packages/benchmark/dist/runners/single.js +0 -111
  242. package/packages/benchmark/dist/runners/single.js.map +0 -1
  243. package/packages/benchmark/dist/runners/subagent.d.ts +0 -32
  244. package/packages/benchmark/dist/runners/subagent.d.ts.map +0 -1
  245. package/packages/benchmark/dist/runners/subagent.js +0 -212
  246. package/packages/benchmark/dist/runners/subagent.js.map +0 -1
  247. package/packages/benchmark/dist/runners/swarm.d.ts +0 -36
  248. package/packages/benchmark/dist/runners/swarm.d.ts.map +0 -1
  249. package/packages/benchmark/dist/runners/swarm.js +0 -273
  250. package/packages/benchmark/dist/runners/swarm.js.map +0 -1
  251. package/packages/benchmark/dist/types.d.ts +0 -178
  252. package/packages/benchmark/dist/types.d.ts.map +0 -1
  253. package/packages/benchmark/dist/types.js +0 -16
  254. package/packages/benchmark/dist/types.js.map +0 -1
  255. package/packages/benchmark/package.json +0 -80
  256. package/packages/benchmark/src/benchmark.ts +0 -298
  257. package/packages/benchmark/src/cli.ts +0 -240
  258. package/packages/benchmark/src/harbor.ts +0 -170
  259. package/packages/benchmark/src/index.ts +0 -73
  260. package/packages/benchmark/src/runners/base.ts +0 -205
  261. package/packages/benchmark/src/runners/index.ts +0 -10
  262. package/packages/benchmark/src/runners/single.ts +0 -121
  263. package/packages/benchmark/src/runners/subagent.ts +0 -240
  264. package/packages/benchmark/src/runners/swarm.ts +0 -326
  265. package/packages/benchmark/src/types.ts +0 -205
  266. package/packages/benchmark/tsconfig.json +0 -20
  267. package/packages/cli-tester/README.md +0 -277
  268. package/packages/cli-tester/dist/index.d.ts +0 -21
  269. package/packages/cli-tester/dist/index.d.ts.map +0 -1
  270. package/packages/cli-tester/dist/index.js +0 -21
  271. package/packages/cli-tester/dist/index.js.map +0 -1
  272. package/packages/cli-tester/dist/utils/credential-check.d.ts +0 -56
  273. package/packages/cli-tester/dist/utils/credential-check.d.ts.map +0 -1
  274. package/packages/cli-tester/dist/utils/credential-check.js +0 -230
  275. package/packages/cli-tester/dist/utils/credential-check.js.map +0 -1
  276. package/packages/cli-tester/dist/utils/socket-client.d.ts +0 -76
  277. package/packages/cli-tester/dist/utils/socket-client.d.ts.map +0 -1
  278. package/packages/cli-tester/dist/utils/socket-client.js +0 -153
  279. package/packages/cli-tester/dist/utils/socket-client.js.map +0 -1
  280. package/packages/cli-tester/docker/Dockerfile +0 -61
  281. package/packages/cli-tester/docker/docker-compose.yml +0 -71
  282. package/packages/cli-tester/docker/entrypoint.sh +0 -58
  283. package/packages/cli-tester/package.json +0 -32
  284. package/packages/cli-tester/scripts/clear-auth.sh +0 -101
  285. package/packages/cli-tester/scripts/inject-message.sh +0 -42
  286. package/packages/cli-tester/scripts/start.sh +0 -71
  287. package/packages/cli-tester/scripts/test-cli.sh +0 -56
  288. package/packages/cli-tester/scripts/test-full-spawn.sh +0 -238
  289. package/packages/cli-tester/scripts/test-registration.sh +0 -182
  290. package/packages/cli-tester/scripts/test-setup-flow.sh +0 -202
  291. package/packages/cli-tester/scripts/test-spawn.sh +0 -140
  292. package/packages/cli-tester/scripts/test-with-daemon.sh +0 -247
  293. package/packages/cli-tester/scripts/verify-auth.sh +0 -112
  294. package/packages/cli-tester/src/index.ts +0 -40
  295. package/packages/cli-tester/src/utils/credential-check.ts +0 -284
  296. package/packages/cli-tester/src/utils/socket-client.ts +0 -211
  297. package/packages/cli-tester/tests/credential-check.test.ts +0 -56
  298. package/packages/cli-tester/tsconfig.json +0 -11
  299. package/packages/sdk/dist/browser-client.d.ts +0 -212
  300. package/packages/sdk/dist/browser-client.d.ts.map +0 -1
  301. package/packages/sdk/dist/browser-client.js +0 -750
  302. package/packages/sdk/dist/browser-client.js.map +0 -1
  303. package/packages/sdk/dist/browser-framing.d.ts +0 -46
  304. package/packages/sdk/dist/browser-framing.d.ts.map +0 -1
  305. package/packages/sdk/dist/browser-framing.js +0 -122
  306. package/packages/sdk/dist/browser-framing.js.map +0 -1
  307. package/packages/sdk/dist/standalone.d.ts +0 -89
  308. package/packages/sdk/dist/standalone.d.ts.map +0 -1
  309. package/packages/sdk/dist/standalone.js +0 -131
  310. package/packages/sdk/dist/standalone.js.map +0 -1
  311. package/packages/sdk/dist/transports/index.d.ts +0 -92
  312. package/packages/sdk/dist/transports/index.d.ts.map +0 -1
  313. package/packages/sdk/dist/transports/index.js +0 -129
  314. package/packages/sdk/dist/transports/index.js.map +0 -1
  315. package/packages/sdk/dist/transports/socket-transport.d.ts +0 -30
  316. package/packages/sdk/dist/transports/socket-transport.d.ts.map +0 -1
  317. package/packages/sdk/dist/transports/socket-transport.js +0 -94
  318. package/packages/sdk/dist/transports/socket-transport.js.map +0 -1
  319. package/packages/sdk/dist/transports/types.d.ts +0 -69
  320. package/packages/sdk/dist/transports/types.d.ts.map +0 -1
  321. package/packages/sdk/dist/transports/types.js +0 -10
  322. package/packages/sdk/dist/transports/types.js.map +0 -1
  323. package/packages/sdk/dist/transports/websocket-transport.d.ts +0 -55
  324. package/packages/sdk/dist/transports/websocket-transport.d.ts.map +0 -1
  325. package/packages/sdk/dist/transports/websocket-transport.js +0 -180
  326. package/packages/sdk/dist/transports/websocket-transport.js.map +0 -1
  327. package/packages/sdk/src/browser-client.ts +0 -985
  328. package/packages/sdk/src/browser-framing.test.ts +0 -115
  329. package/packages/sdk/src/browser-framing.ts +0 -150
  330. package/packages/sdk/src/standalone.ts +0 -183
  331. package/packages/sdk/src/transports/index.ts +0 -197
  332. package/packages/sdk/src/transports/socket-transport.ts +0 -115
  333. package/packages/sdk/src/transports/types.ts +0 -77
  334. package/packages/sdk/src/transports/websocket-transport.ts +0 -245
@@ -1,83 +0,0 @@
1
- /**
2
- * Fleet Schemas
3
- *
4
- * Zod schemas for fleet/multi-server types used across the dashboard and API.
5
- */
6
-
7
- import { z } from 'zod';
8
- import { AgentSchema } from './agent.js';
9
-
10
- /**
11
- * Peer server status enum
12
- */
13
- export const PeerServerStatusSchema = z.enum(['connected', 'disconnected', 'error']);
14
- export type PeerServerStatus = z.infer<typeof PeerServerStatusSchema>;
15
-
16
- /**
17
- * Peer server schema - represents a connected server in the fleet
18
- */
19
- export const PeerServerSchema = z.object({
20
- id: z.string(),
21
- url: z.string(),
22
- name: z.string().optional(),
23
- status: PeerServerStatusSchema,
24
- agentCount: z.number(),
25
- latency: z.number().optional(),
26
- });
27
- export type PeerServer = z.infer<typeof PeerServerSchema>;
28
-
29
- /**
30
- * Fleet data schema - aggregate fleet information
31
- */
32
- export const FleetDataSchema = z.object({
33
- servers: z.array(PeerServerSchema),
34
- agents: z.array(AgentSchema),
35
- totalMessages: z.number(),
36
- });
37
- export type FleetData = z.infer<typeof FleetDataSchema>;
38
-
39
- /**
40
- * Project schema - represents a project in the fleet
41
- */
42
- export const ProjectSchema = z.object({
43
- id: z.string(),
44
- path: z.string(),
45
- name: z.string().optional(),
46
- agents: z.array(AgentSchema),
47
- lead: z.object({
48
- name: z.string(),
49
- connected: z.boolean(),
50
- }).optional(),
51
- });
52
- export type Project = z.infer<typeof ProjectSchema>;
53
-
54
- /**
55
- * Fleet server schema (for /api/fleet/servers response)
56
- */
57
- export const FleetServerSchema = z.object({
58
- id: z.string(),
59
- name: z.string(),
60
- status: z.enum(['healthy', 'degraded', 'offline']),
61
- agents: z.array(z.object({
62
- name: z.string(),
63
- status: z.string(),
64
- })),
65
- cpuUsage: z.number(),
66
- memoryUsage: z.number(),
67
- activeConnections: z.number(),
68
- uptime: z.number(),
69
- lastHeartbeat: z.string(),
70
- });
71
- export type FleetServer = z.infer<typeof FleetServerSchema>;
72
-
73
- /**
74
- * Fleet stats schema (for /api/fleet/stats response)
75
- */
76
- export const FleetStatsSchema = z.object({
77
- totalAgents: z.number(),
78
- onlineAgents: z.number(),
79
- busyAgents: z.number(),
80
- pendingDecisions: z.number(),
81
- activeTasks: z.number(),
82
- });
83
- export type FleetStats = z.infer<typeof FleetStatsSchema>;
@@ -1,242 +0,0 @@
1
- /**
2
- * History Schema Tests
3
- */
4
-
5
- import { describe, it, expect } from 'vitest';
6
- import {
7
- HistorySessionSchema,
8
- HistoryMessageSchema,
9
- ConversationSchema,
10
- HistoryStatsSchema,
11
- FileSearchResultSchema,
12
- FileSearchResponseSchema,
13
- } from './history.js';
14
-
15
- describe('History Schemas', () => {
16
- describe('HistorySessionSchema', () => {
17
- it('should validate complete session', () => {
18
- const session = {
19
- id: 'session-001',
20
- agentName: 'FullStack',
21
- cli: 'claude',
22
- startedAt: '2025-01-22T08:00:00Z',
23
- endedAt: '2025-01-22T12:00:00Z',
24
- duration: '4h 0m',
25
- messageCount: 150,
26
- summary: 'Implemented user authentication feature',
27
- isActive: false,
28
- closedBy: 'agent',
29
- };
30
- const result = HistorySessionSchema.parse(session);
31
- expect(result.agentName).toBe('FullStack');
32
- expect(result.closedBy).toBe('agent');
33
- expect(result.messageCount).toBe(150);
34
- });
35
-
36
- it('should validate active session without endedAt', () => {
37
- const session = {
38
- id: 'session-002',
39
- agentName: 'Worker',
40
- startedAt: '2025-01-22T10:00:00Z',
41
- duration: '1h 30m',
42
- messageCount: 45,
43
- isActive: true,
44
- };
45
- const result = HistorySessionSchema.parse(session);
46
- expect(result.isActive).toBe(true);
47
- expect(result.endedAt).toBeUndefined();
48
- expect(result.closedBy).toBeUndefined();
49
- });
50
-
51
- it('should validate session closed by disconnect', () => {
52
- const session = {
53
- id: 'session-003',
54
- agentName: 'Backend',
55
- cli: 'codex',
56
- startedAt: '2025-01-21T14:00:00Z',
57
- endedAt: '2025-01-21T14:30:00Z',
58
- duration: '30m',
59
- messageCount: 20,
60
- isActive: false,
61
- closedBy: 'disconnect',
62
- };
63
- const result = HistorySessionSchema.parse(session);
64
- expect(result.closedBy).toBe('disconnect');
65
- });
66
-
67
- it('should validate session closed by error', () => {
68
- const session = {
69
- id: 'session-004',
70
- agentName: 'Frontend',
71
- startedAt: '2025-01-21T10:00:00Z',
72
- endedAt: '2025-01-21T10:05:00Z',
73
- duration: '5m',
74
- messageCount: 3,
75
- isActive: false,
76
- closedBy: 'error',
77
- };
78
- const result = HistorySessionSchema.parse(session);
79
- expect(result.closedBy).toBe('error');
80
- });
81
- });
82
-
83
- describe('HistoryMessageSchema', () => {
84
- it('should validate complete message', () => {
85
- const message = {
86
- id: 'msg-001',
87
- from: 'Lead',
88
- to: 'FullStack',
89
- content: 'Please implement the user authentication',
90
- timestamp: '2025-01-22T08:30:00Z',
91
- thread: 'auth-implementation',
92
- isBroadcast: false,
93
- isUrgent: true,
94
- status: 'delivered',
95
- data: { priority: 'high' },
96
- };
97
- const result = HistoryMessageSchema.parse(message);
98
- expect(result.from).toBe('Lead');
99
- expect(result.isUrgent).toBe(true);
100
- });
101
-
102
- it('should validate broadcast message', () => {
103
- const message = {
104
- id: 'msg-002',
105
- from: 'Lead',
106
- to: '*',
107
- content: 'Team standup in 5 minutes',
108
- timestamp: '2025-01-22T09:55:00Z',
109
- isBroadcast: true,
110
- };
111
- const result = HistoryMessageSchema.parse(message);
112
- expect(result.to).toBe('*');
113
- expect(result.isBroadcast).toBe(true);
114
- });
115
-
116
- it('should validate minimal message', () => {
117
- const message = {
118
- id: 'msg-003',
119
- from: 'Worker',
120
- to: 'Lead',
121
- content: 'Task completed',
122
- timestamp: '2025-01-22T11:00:00Z',
123
- };
124
- const result = HistoryMessageSchema.parse(message);
125
- expect(result.thread).toBeUndefined();
126
- expect(result.isBroadcast).toBeUndefined();
127
- });
128
- });
129
-
130
- describe('ConversationSchema', () => {
131
- it('should validate conversation between two agents', () => {
132
- const conversation = {
133
- participants: ['Lead', 'FullStack'],
134
- lastMessage: 'Thanks for the update!',
135
- lastTimestamp: '2025-01-22T11:30:00Z',
136
- messageCount: 25,
137
- };
138
- const result = ConversationSchema.parse(conversation);
139
- expect(result.participants).toHaveLength(2);
140
- expect(result.messageCount).toBe(25);
141
- });
142
-
143
- it('should validate group conversation', () => {
144
- const conversation = {
145
- participants: ['Lead', 'FullStack', 'Backend', 'Frontend'],
146
- lastMessage: 'Let us sync tomorrow',
147
- lastTimestamp: '2025-01-22T17:00:00Z',
148
- messageCount: 150,
149
- };
150
- const result = ConversationSchema.parse(conversation);
151
- expect(result.participants).toHaveLength(4);
152
- });
153
- });
154
-
155
- describe('HistoryStatsSchema', () => {
156
- it('should validate stats with numbers', () => {
157
- const stats = {
158
- messageCount: 1500,
159
- sessionCount: 45,
160
- activeSessions: 3,
161
- uniqueAgents: 8,
162
- oldestMessageDate: '2025-01-01T00:00:00Z',
163
- };
164
- const result = HistoryStatsSchema.parse(stats);
165
- expect(result.messageCount).toBe(1500);
166
- expect(result.uniqueAgents).toBe(8);
167
- });
168
-
169
- it('should validate stats with string values (from DB)', () => {
170
- const stats = {
171
- messageCount: '1500',
172
- sessionCount: '45',
173
- activeSessions: '3',
174
- uniqueAgents: '8',
175
- oldestMessageDate: '2025-01-01T00:00:00Z',
176
- };
177
- const result = HistoryStatsSchema.parse(stats);
178
- expect(result.messageCount).toBe('1500');
179
- });
180
-
181
- it('should validate stats without oldest date', () => {
182
- const stats = {
183
- messageCount: 0,
184
- sessionCount: 0,
185
- activeSessions: 0,
186
- uniqueAgents: 0,
187
- oldestMessageDate: null,
188
- };
189
- const result = HistoryStatsSchema.parse(stats);
190
- expect(result.oldestMessageDate).toBeNull();
191
- });
192
- });
193
-
194
- describe('FileSearchResultSchema', () => {
195
- it('should validate file result', () => {
196
- const result = {
197
- path: '/workspace/src/index.ts',
198
- name: 'index.ts',
199
- isDirectory: false,
200
- };
201
- const parsed = FileSearchResultSchema.parse(result);
202
- expect(parsed.name).toBe('index.ts');
203
- expect(parsed.isDirectory).toBe(false);
204
- });
205
-
206
- it('should validate directory result', () => {
207
- const result = {
208
- path: '/workspace/src',
209
- name: 'src',
210
- isDirectory: true,
211
- };
212
- const parsed = FileSearchResultSchema.parse(result);
213
- expect(parsed.isDirectory).toBe(true);
214
- });
215
- });
216
-
217
- describe('FileSearchResponseSchema', () => {
218
- it('should validate search response with results', () => {
219
- const response = {
220
- files: [
221
- { path: '/workspace/src/index.ts', name: 'index.ts', isDirectory: false },
222
- { path: '/workspace/src/utils.ts', name: 'utils.ts', isDirectory: false },
223
- ],
224
- query: '*.ts',
225
- searchRoot: '/workspace/src',
226
- };
227
- const result = FileSearchResponseSchema.parse(response);
228
- expect(result.files).toHaveLength(2);
229
- expect(result.query).toBe('*.ts');
230
- });
231
-
232
- it('should validate empty search response', () => {
233
- const response = {
234
- files: [],
235
- query: '*.xyz',
236
- searchRoot: '/workspace',
237
- };
238
- const result = FileSearchResponseSchema.parse(response);
239
- expect(result.files).toHaveLength(0);
240
- });
241
- });
242
- });
@@ -1,84 +0,0 @@
1
- /**
2
- * History Schemas
3
- *
4
- * Zod schemas for conversation history types used across the dashboard and API.
5
- */
6
-
7
- import { z } from 'zod';
8
-
9
- /**
10
- * History session schema
11
- */
12
- export const HistorySessionSchema = z.object({
13
- id: z.string(),
14
- agentName: z.string(),
15
- cli: z.string().optional(),
16
- startedAt: z.string(),
17
- endedAt: z.string().optional(),
18
- duration: z.string(),
19
- messageCount: z.number(),
20
- summary: z.string().optional(),
21
- isActive: z.boolean(),
22
- closedBy: z.enum(['agent', 'disconnect', 'error']).optional(),
23
- });
24
- export type HistorySession = z.infer<typeof HistorySessionSchema>;
25
-
26
- /**
27
- * History message schema
28
- */
29
- export const HistoryMessageSchema = z.object({
30
- id: z.string(),
31
- from: z.string(),
32
- to: z.string(),
33
- content: z.string(),
34
- timestamp: z.string(),
35
- thread: z.string().optional(),
36
- isBroadcast: z.boolean().optional(),
37
- isUrgent: z.boolean().optional(),
38
- status: z.string().optional(),
39
- data: z.record(z.unknown()).optional(),
40
- });
41
- export type HistoryMessage = z.infer<typeof HistoryMessageSchema>;
42
-
43
- /**
44
- * Conversation schema (unique agent pairs)
45
- */
46
- export const ConversationSchema = z.object({
47
- participants: z.array(z.string()),
48
- lastMessage: z.string(),
49
- lastTimestamp: z.string(),
50
- messageCount: z.number(),
51
- });
52
- export type Conversation = z.infer<typeof ConversationSchema>;
53
-
54
- /**
55
- * History stats schema
56
- */
57
- export const HistoryStatsSchema = z.object({
58
- messageCount: z.union([z.number(), z.string()]),
59
- sessionCount: z.union([z.number(), z.string()]),
60
- activeSessions: z.union([z.number(), z.string()]),
61
- uniqueAgents: z.union([z.number(), z.string()]),
62
- oldestMessageDate: z.string().nullable().optional(),
63
- });
64
- export type HistoryStats = z.infer<typeof HistoryStatsSchema>;
65
-
66
- /**
67
- * File search result schema
68
- */
69
- export const FileSearchResultSchema = z.object({
70
- path: z.string(),
71
- name: z.string(),
72
- isDirectory: z.boolean(),
73
- });
74
- export type FileSearchResult = z.infer<typeof FileSearchResultSchema>;
75
-
76
- /**
77
- * File search response schema
78
- */
79
- export const FileSearchResponseSchema = z.object({
80
- files: z.array(FileSearchResultSchema),
81
- query: z.string(),
82
- searchRoot: z.string(),
83
- });
84
- export type FileSearchResponse = z.infer<typeof FileSearchResponseSchema>;
@@ -1,148 +0,0 @@
1
- /**
2
- * Schema Exports
3
- *
4
- * Re-exports all Zod schemas and their inferred types.
5
- */
6
-
7
- // Agent schemas
8
- export {
9
- AgentStatusSchema,
10
- AgentProfileSchema,
11
- AgentSchema,
12
- AgentSummarySchema,
13
- type AgentStatus,
14
- type AgentProfile,
15
- type Agent,
16
- type AgentSummary,
17
- } from './agent.js';
18
-
19
- // Message schemas
20
- export {
21
- MessageStatusSchema,
22
- AttachmentSchema,
23
- ThreadMetadataSchema,
24
- MessageSchema,
25
- ThreadSchema,
26
- type MessageStatus,
27
- type Attachment,
28
- type ThreadMetadata,
29
- type Message,
30
- type Thread,
31
- } from './message.js';
32
-
33
- // Session schemas
34
- export {
35
- SessionClosedBySchema,
36
- SessionSchema,
37
- type SessionClosedBy,
38
- type Session,
39
- } from './session.js';
40
-
41
- // Fleet schemas
42
- export {
43
- PeerServerStatusSchema,
44
- PeerServerSchema,
45
- FleetDataSchema,
46
- ProjectSchema,
47
- FleetServerSchema,
48
- FleetStatsSchema,
49
- type PeerServerStatus,
50
- type PeerServer,
51
- type FleetData,
52
- type Project,
53
- type FleetServer,
54
- type FleetStats,
55
- } from './fleet.js';
56
-
57
- // Task schemas
58
- export {
59
- TaskStatusSchema,
60
- TaskPrioritySchema,
61
- TaskTypeSchema,
62
- TaskSchema,
63
- TaskAssignmentStatusSchema,
64
- TaskAssignmentPrioritySchema,
65
- TaskAssignmentSchema,
66
- type TaskStatus,
67
- type TaskPriority,
68
- type TaskType,
69
- type Task,
70
- type TaskAssignmentStatus,
71
- type TaskAssignmentPriority,
72
- type TaskAssignment,
73
- } from './task.js';
74
-
75
- // Decision schemas
76
- export {
77
- DecisionUrgencySchema,
78
- DecisionCategorySchema,
79
- DecisionOptionSchema,
80
- ApiDecisionSchema,
81
- DecisionSchema,
82
- PendingDecisionSchema,
83
- TrajectoryDecisionTypeSchema,
84
- TrajectoryDecisionOutcomeSchema,
85
- TrajectoryDecisionSchema,
86
- TrajectorySchema,
87
- type DecisionUrgency,
88
- type DecisionCategory,
89
- type DecisionOption,
90
- type ApiDecision,
91
- type Decision,
92
- type PendingDecision,
93
- type TrajectoryDecisionType,
94
- type TrajectoryDecisionOutcome,
95
- type TrajectoryDecision,
96
- type Trajectory,
97
- } from './decision.js';
98
-
99
- // API request/response schemas
100
- export {
101
- ApiResponseSchema,
102
- SimpleApiResponseSchema,
103
- SendMessageRequestSchema,
104
- SpeakOnTriggerSchema,
105
- ShadowModeSchema,
106
- SpawnAgentRequestSchema,
107
- SpawnAgentResponseSchema,
108
- CreateTaskRequestSchema,
109
- CreateBeadRequestSchema,
110
- SendRelayMessageRequestSchema,
111
- ActivityEventTypeSchema,
112
- ActorTypeSchema,
113
- ActivityEventSchema,
114
- WSMessageTypeSchema,
115
- WSMessageSchema,
116
- DashboardStateSchema,
117
- type SimpleApiResponse,
118
- type SendMessageRequest,
119
- type SpeakOnTrigger,
120
- type ShadowMode,
121
- type SpawnAgentRequest,
122
- type SpawnAgentResponse,
123
- type CreateTaskRequest,
124
- type CreateBeadRequest,
125
- type SendRelayMessageRequest,
126
- type ActivityEventType,
127
- type ActorType,
128
- type ActivityEvent,
129
- type WSMessageType,
130
- type WSMessage,
131
- type DashboardState,
132
- } from './api.js';
133
-
134
- // History schemas
135
- export {
136
- HistorySessionSchema,
137
- HistoryMessageSchema,
138
- ConversationSchema,
139
- HistoryStatsSchema,
140
- FileSearchResultSchema,
141
- FileSearchResponseSchema,
142
- type HistorySession,
143
- type HistoryMessage,
144
- type Conversation,
145
- type HistoryStats,
146
- type FileSearchResult,
147
- type FileSearchResponse,
148
- } from './history.js';