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,111 +0,0 @@
1
- /**
2
- * Task Schemas
3
- *
4
- * Zod schemas for task-related types used across the dashboard and API.
5
- */
6
- import { z } from 'zod';
7
- /**
8
- * Task status enum
9
- */
10
- export declare const TaskStatusSchema: z.ZodEnum<["open", "in_progress", "completed", "blocked"]>;
11
- export type TaskStatus = z.infer<typeof TaskStatusSchema>;
12
- /**
13
- * Task priority enum
14
- */
15
- export declare const TaskPrioritySchema: z.ZodEnum<["P1", "P2", "P3", "P4"]>;
16
- export type TaskPriority = z.infer<typeof TaskPrioritySchema>;
17
- /**
18
- * Task type enum
19
- */
20
- export declare const TaskTypeSchema: z.ZodEnum<["task", "bug", "feature", "epic"]>;
21
- export type TaskType = z.infer<typeof TaskTypeSchema>;
22
- /**
23
- * Task schema (Beads Integration)
24
- */
25
- export declare const TaskSchema: z.ZodObject<{
26
- id: z.ZodString;
27
- title: z.ZodString;
28
- description: z.ZodOptional<z.ZodString>;
29
- status: z.ZodEnum<["open", "in_progress", "completed", "blocked"]>;
30
- priority: z.ZodEnum<["P1", "P2", "P3", "P4"]>;
31
- type: z.ZodEnum<["task", "bug", "feature", "epic"]>;
32
- assignee: z.ZodOptional<z.ZodString>;
33
- blockedBy: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
34
- blocking: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
35
- created: z.ZodString;
36
- updated: z.ZodString;
37
- }, "strip", z.ZodTypeAny, {
38
- type: "task" | "bug" | "feature" | "epic";
39
- status: "open" | "in_progress" | "completed" | "blocked";
40
- title: string;
41
- id: string;
42
- priority: "P1" | "P2" | "P3" | "P4";
43
- created: string;
44
- updated: string;
45
- description?: string | undefined;
46
- assignee?: string | undefined;
47
- blockedBy?: string[] | undefined;
48
- blocking?: string[] | undefined;
49
- }, {
50
- type: "task" | "bug" | "feature" | "epic";
51
- status: "open" | "in_progress" | "completed" | "blocked";
52
- title: string;
53
- id: string;
54
- priority: "P1" | "P2" | "P3" | "P4";
55
- created: string;
56
- updated: string;
57
- description?: string | undefined;
58
- assignee?: string | undefined;
59
- blockedBy?: string[] | undefined;
60
- blocking?: string[] | undefined;
61
- }>;
62
- export type Task = z.infer<typeof TaskSchema>;
63
- /**
64
- * Task assignment status enum (for API)
65
- */
66
- export declare const TaskAssignmentStatusSchema: z.ZodEnum<["pending", "assigned", "in_progress", "completed", "failed"]>;
67
- export type TaskAssignmentStatus = z.infer<typeof TaskAssignmentStatusSchema>;
68
- /**
69
- * Task assignment priority enum (for API)
70
- */
71
- export declare const TaskAssignmentPrioritySchema: z.ZodEnum<["low", "medium", "high", "critical"]>;
72
- export type TaskAssignmentPriority = z.infer<typeof TaskAssignmentPrioritySchema>;
73
- /**
74
- * Task assignment schema (for /api/tasks endpoints)
75
- */
76
- export declare const TaskAssignmentSchema: z.ZodObject<{
77
- id: z.ZodString;
78
- agentName: z.ZodString;
79
- title: z.ZodString;
80
- description: z.ZodString;
81
- priority: z.ZodEnum<["low", "medium", "high", "critical"]>;
82
- status: z.ZodEnum<["pending", "assigned", "in_progress", "completed", "failed"]>;
83
- createdAt: z.ZodString;
84
- assignedAt: z.ZodOptional<z.ZodString>;
85
- completedAt: z.ZodOptional<z.ZodString>;
86
- result: z.ZodOptional<z.ZodString>;
87
- }, "strip", z.ZodTypeAny, {
88
- status: "failed" | "in_progress" | "completed" | "pending" | "assigned";
89
- title: string;
90
- description: string;
91
- agentName: string;
92
- id: string;
93
- priority: "low" | "medium" | "high" | "critical";
94
- createdAt: string;
95
- assignedAt?: string | undefined;
96
- completedAt?: string | undefined;
97
- result?: string | undefined;
98
- }, {
99
- status: "failed" | "in_progress" | "completed" | "pending" | "assigned";
100
- title: string;
101
- description: string;
102
- agentName: string;
103
- id: string;
104
- priority: "low" | "medium" | "high" | "critical";
105
- createdAt: string;
106
- assignedAt?: string | undefined;
107
- completedAt?: string | undefined;
108
- result?: string | undefined;
109
- }>;
110
- export type TaskAssignment = z.infer<typeof TaskAssignmentSchema>;
111
- //# sourceMappingURL=task.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/schemas/task.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,gBAAgB,4DAA0D,CAAC;AACxF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,kBAAkB,qCAAmC,CAAC;AACnE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,cAAc,+CAA6C,CAAC;AACzE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYrB,CAAC;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,0BAA0B,0EAMrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,4BAA4B,kDAAgD,CAAC;AAC1F,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -1,64 +0,0 @@
1
- /**
2
- * Task Schemas
3
- *
4
- * Zod schemas for task-related types used across the dashboard and API.
5
- */
6
- import { z } from 'zod';
7
- /**
8
- * Task status enum
9
- */
10
- export const TaskStatusSchema = z.enum(['open', 'in_progress', 'completed', 'blocked']);
11
- /**
12
- * Task priority enum
13
- */
14
- export const TaskPrioritySchema = z.enum(['P1', 'P2', 'P3', 'P4']);
15
- /**
16
- * Task type enum
17
- */
18
- export const TaskTypeSchema = z.enum(['task', 'bug', 'feature', 'epic']);
19
- /**
20
- * Task schema (Beads Integration)
21
- */
22
- export const TaskSchema = z.object({
23
- id: z.string(),
24
- title: z.string(),
25
- description: z.string().optional(),
26
- status: TaskStatusSchema,
27
- priority: TaskPrioritySchema,
28
- type: TaskTypeSchema,
29
- assignee: z.string().optional(),
30
- blockedBy: z.array(z.string()).optional(),
31
- blocking: z.array(z.string()).optional(),
32
- created: z.string(),
33
- updated: z.string(),
34
- });
35
- /**
36
- * Task assignment status enum (for API)
37
- */
38
- export const TaskAssignmentStatusSchema = z.enum([
39
- 'pending',
40
- 'assigned',
41
- 'in_progress',
42
- 'completed',
43
- 'failed',
44
- ]);
45
- /**
46
- * Task assignment priority enum (for API)
47
- */
48
- export const TaskAssignmentPrioritySchema = z.enum(['low', 'medium', 'high', 'critical']);
49
- /**
50
- * Task assignment schema (for /api/tasks endpoints)
51
- */
52
- export const TaskAssignmentSchema = z.object({
53
- id: z.string(),
54
- agentName: z.string(),
55
- title: z.string(),
56
- description: z.string(),
57
- priority: TaskAssignmentPrioritySchema,
58
- status: TaskAssignmentStatusSchema,
59
- createdAt: z.string(),
60
- assignedAt: z.string().optional(),
61
- completedAt: z.string().optional(),
62
- result: z.string().optional(),
63
- });
64
- //# sourceMappingURL=task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/schemas/task.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AAGxF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAGnE;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAGzE;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,gBAAgB;IACxB,QAAQ,EAAE,kBAAkB;IAC5B,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAGH;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,IAAI,CAAC;IAC/C,SAAS;IACT,UAAU;IACV,aAAa;IACb,WAAW;IACX,QAAQ;CACT,CAAC,CAAC;AAGH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAG1F;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,4BAA4B;IACtC,MAAM,EAAE,0BAA0B;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC"}
@@ -1,61 +0,0 @@
1
- {
2
- "name": "@agent-relay/api-types",
3
- "version": "2.3.2",
4
- "description": "Shared API types and Zod schemas for Agent Relay",
5
- "type": "module",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js"
12
- },
13
- "./schemas": {
14
- "types": "./dist/schemas/index.d.ts",
15
- "import": "./dist/schemas/index.js",
16
- "default": "./dist/schemas/index.js"
17
- }
18
- },
19
- "files": [
20
- "dist",
21
- "README.md"
22
- ],
23
- "scripts": {
24
- "build": "tsc",
25
- "clean": "rm -rf dist",
26
- "test": "vitest run",
27
- "test:watch": "vitest",
28
- "generate:openapi": "tsx scripts/generate-openapi.ts",
29
- "prepublishOnly": "npm run build"
30
- },
31
- "keywords": [
32
- "agent-relay",
33
- "api",
34
- "types",
35
- "zod",
36
- "openapi"
37
- ],
38
- "author": "Khaliq Gant",
39
- "license": "Apache-2.0",
40
- "repository": {
41
- "type": "git",
42
- "url": "git+https://github.com/AgentWorkforce/relay.git",
43
- "directory": "packages/api-types"
44
- },
45
- "publishConfig": {
46
- "access": "public"
47
- },
48
- "engines": {
49
- "node": ">=18.0.0"
50
- },
51
- "dependencies": {
52
- "zod": "^3.23.8"
53
- },
54
- "devDependencies": {
55
- "@asteasolutions/zod-to-openapi": "^7.2.0",
56
- "@types/node": "^22.19.3",
57
- "tsx": "^4.19.0",
58
- "typescript": "^5.9.3",
59
- "vitest": "^3.0.0"
60
- }
61
- }
@@ -1,106 +0,0 @@
1
- /**
2
- * OpenAPI Generation Script
3
- *
4
- * Generates OpenAPI 3.1 specification from Zod schemas.
5
- * Run with: npm run generate:openapi
6
- */
7
-
8
- import { writeFileSync, mkdirSync } from 'node:fs';
9
- import { dirname, join } from 'node:path';
10
- import { fileURLToPath } from 'node:url';
11
- import { z } from 'zod';
12
- import {
13
- extendZodWithOpenApi,
14
- OpenAPIRegistry,
15
- OpenApiGeneratorV31,
16
- } from '@asteasolutions/zod-to-openapi';
17
-
18
- // Extend Zod with OpenAPI support
19
- extendZodWithOpenApi(z);
20
-
21
- // Import all schemas
22
- import {
23
- AgentSchema,
24
- AgentSummarySchema,
25
- MessageSchema,
26
- SessionSchema,
27
- FleetDataSchema,
28
- FleetServerSchema,
29
- FleetStatsSchema,
30
- TaskAssignmentSchema,
31
- ApiDecisionSchema,
32
- DecisionSchema,
33
- TrajectorySchema,
34
- SendMessageRequestSchema,
35
- SpawnAgentRequestSchema,
36
- SpawnAgentResponseSchema,
37
- CreateTaskRequestSchema,
38
- CreateBeadRequestSchema,
39
- ActivityEventSchema,
40
- HistorySessionSchema,
41
- HistoryMessageSchema,
42
- ConversationSchema,
43
- HistoryStatsSchema,
44
- FileSearchResponseSchema,
45
- } from '../src/index.js';
46
-
47
- const __filename = fileURLToPath(import.meta.url);
48
- const __dirname = dirname(__filename);
49
-
50
- // Create registry
51
- const registry = new OpenAPIRegistry();
52
-
53
- // Register schemas with OpenAPI metadata
54
- // Note: Schemas with z.lazy() (recursive types) are skipped as they require special handling
55
- registry.register('Agent', AgentSchema.openapi('Agent'));
56
- registry.register('AgentSummary', AgentSummarySchema.openapi('AgentSummary'));
57
- registry.register('Message', MessageSchema.openapi('Message'));
58
- registry.register('Session', SessionSchema.openapi('Session'));
59
- // FleetDataSchema contains AgentSchema which is already registered
60
- registry.register('FleetServer', FleetServerSchema.openapi('FleetServer'));
61
- registry.register('FleetStats', FleetStatsSchema.openapi('FleetStats'));
62
- registry.register('TaskAssignment', TaskAssignmentSchema.openapi('TaskAssignment'));
63
- registry.register('ApiDecision', ApiDecisionSchema.openapi('ApiDecision'));
64
- registry.register('Decision', DecisionSchema.openapi('Decision'));
65
- // TrajectorySchema uses z.lazy() for recursive children - skipped for now
66
- // registry.register('Trajectory', TrajectorySchema.openapi('Trajectory'));
67
- registry.register('SendMessageRequest', SendMessageRequestSchema.openapi('SendMessageRequest'));
68
- registry.register('SpawnAgentRequest', SpawnAgentRequestSchema.openapi('SpawnAgentRequest'));
69
- registry.register('SpawnAgentResponse', SpawnAgentResponseSchema.openapi('SpawnAgentResponse'));
70
- registry.register('CreateTaskRequest', CreateTaskRequestSchema.openapi('CreateTaskRequest'));
71
- registry.register('CreateBeadRequest', CreateBeadRequestSchema.openapi('CreateBeadRequest'));
72
- registry.register('ActivityEvent', ActivityEventSchema.openapi('ActivityEvent'));
73
- registry.register('HistorySession', HistorySessionSchema.openapi('HistorySession'));
74
- registry.register('HistoryMessage', HistoryMessageSchema.openapi('HistoryMessage'));
75
- registry.register('Conversation', ConversationSchema.openapi('Conversation'));
76
- registry.register('HistoryStats', HistoryStatsSchema.openapi('HistoryStats'));
77
- registry.register('FileSearchResponse', FileSearchResponseSchema.openapi('FileSearchResponse'));
78
-
79
- // Generate OpenAPI spec
80
- const generator = new OpenApiGeneratorV31(registry.definitions);
81
- const spec = generator.generateDocument({
82
- openapi: '3.1.0',
83
- info: {
84
- title: 'Agent Relay API',
85
- version: '1.0.0',
86
- description: 'API types and schemas for Agent Relay communication system',
87
- },
88
- servers: [
89
- {
90
- url: 'http://localhost:3888',
91
- description: 'Local development server',
92
- },
93
- ],
94
- });
95
-
96
- // Output path
97
- const outputDir = join(__dirname, '..', 'dist');
98
- const outputPath = join(outputDir, 'openapi.json');
99
-
100
- // Ensure dist directory exists
101
- mkdirSync(outputDir, { recursive: true });
102
-
103
- // Write spec
104
- writeFileSync(outputPath, JSON.stringify(spec, null, 2));
105
- console.log(`OpenAPI spec generated at: ${outputPath}`);
106
- console.log(`Registered ${Object.keys(spec.components?.schemas ?? {}).length} schemas`);
@@ -1,22 +0,0 @@
1
- /**
2
- * @agent-relay/api-types
3
- *
4
- * Shared API types and Zod schemas for Agent Relay.
5
- * Provides type-safe API contracts between frontend and backend.
6
- *
7
- * @example
8
- * ```typescript
9
- * import { AgentSchema, type Agent } from '@agent-relay/api-types';
10
- *
11
- * // Validate API response
12
- * const agent = AgentSchema.parse(response.data);
13
- *
14
- * // Use inferred type
15
- * function displayAgent(agent: Agent) {
16
- * console.log(agent.name, agent.status);
17
- * }
18
- * ```
19
- */
20
-
21
- // Re-export all schemas and types
22
- export * from './schemas/index.js';
@@ -1,164 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { z } from 'zod';
3
- import {
4
- AgentStatusSchema,
5
- AgentProfileSchema,
6
- AgentSchema,
7
- AgentSummarySchema,
8
- type Agent,
9
- type AgentProfile,
10
- type AgentSummary,
11
- } from './agent.js';
12
-
13
- describe('AgentStatusSchema', () => {
14
- it('accepts valid status values', () => {
15
- expect(AgentStatusSchema.parse('online')).toBe('online');
16
- expect(AgentStatusSchema.parse('idle')).toBe('idle');
17
- expect(AgentStatusSchema.parse('busy')).toBe('busy');
18
- expect(AgentStatusSchema.parse('offline')).toBe('offline');
19
- });
20
-
21
- it('rejects invalid status values', () => {
22
- expect(() => AgentStatusSchema.parse('unknown')).toThrow();
23
- expect(() => AgentStatusSchema.parse('')).toThrow();
24
- expect(() => AgentStatusSchema.parse(123)).toThrow();
25
- });
26
- });
27
-
28
- describe('AgentProfileSchema', () => {
29
- it('accepts valid profile with all fields', () => {
30
- const profile = {
31
- title: 'Lead Developer',
32
- description: 'Coordinates team work',
33
- spawnPrompt: 'You are a lead developer',
34
- personaPrompt: 'Be helpful and thorough',
35
- personaName: 'lead',
36
- model: 'claude-3-opus',
37
- workingDirectory: '/project',
38
- firstSeen: '2024-01-01T00:00:00Z',
39
- capabilities: ['code', 'review'],
40
- tags: ['backend', 'senior'],
41
- };
42
- const result = AgentProfileSchema.parse(profile);
43
- expect(result).toEqual(profile);
44
- });
45
-
46
- it('accepts empty profile object', () => {
47
- const result = AgentProfileSchema.parse({});
48
- expect(result).toEqual({});
49
- });
50
-
51
- it('accepts profile with partial fields', () => {
52
- const profile = {
53
- title: 'Reviewer',
54
- model: 'gpt-4',
55
- };
56
- const result = AgentProfileSchema.parse(profile);
57
- expect(result.title).toBe('Reviewer');
58
- expect(result.model).toBe('gpt-4');
59
- expect(result.description).toBeUndefined();
60
- });
61
- });
62
-
63
- describe('AgentSchema', () => {
64
- it('accepts minimal valid agent', () => {
65
- const agent = {
66
- name: 'TestAgent',
67
- status: 'online',
68
- };
69
- const result = AgentSchema.parse(agent);
70
- expect(result.name).toBe('TestAgent');
71
- expect(result.status).toBe('online');
72
- });
73
-
74
- it('accepts agent with all optional fields', () => {
75
- const agent: Agent = {
76
- name: 'FullAgent',
77
- status: 'busy',
78
- role: 'developer',
79
- cli: 'claude',
80
- lastSeen: '2024-01-01T00:00:00Z',
81
- lastActive: '2024-01-01T00:00:00Z',
82
- messageCount: 42,
83
- needsAttention: true,
84
- currentTask: 'Implementing feature',
85
- server: 'server-1',
86
- isProcessing: true,
87
- processingStartedAt: 1704067200000,
88
- isSpawned: true,
89
- team: 'backend-team',
90
- agentId: 'agent-123',
91
- lastMessageReceivedAt: 1704067200000,
92
- lastOutputAt: 1704067200000,
93
- isStuck: false,
94
- isHuman: false,
95
- avatarUrl: 'https://example.com/avatar.png',
96
- authRevoked: false,
97
- isLocal: true,
98
- daemonName: 'local-daemon',
99
- machineId: 'machine-123',
100
- profile: {
101
- title: 'Developer',
102
- model: 'claude-3-opus',
103
- },
104
- };
105
- const result = AgentSchema.parse(agent);
106
- expect(result).toEqual(agent);
107
- });
108
-
109
- it('rejects agent without required name', () => {
110
- expect(() =>
111
- AgentSchema.parse({ status: 'online' })
112
- ).toThrow();
113
- });
114
-
115
- it('rejects agent without required status', () => {
116
- expect(() =>
117
- AgentSchema.parse({ name: 'Test' })
118
- ).toThrow();
119
- });
120
-
121
- it('rejects agent with invalid status', () => {
122
- expect(() =>
123
- AgentSchema.parse({ name: 'Test', status: 'invalid' })
124
- ).toThrow();
125
- });
126
- });
127
-
128
- describe('AgentSummarySchema', () => {
129
- it('accepts valid agent summary', () => {
130
- const summary: AgentSummary = {
131
- agentName: 'TestAgent',
132
- lastUpdated: '2024-01-01T00:00:00Z',
133
- currentTask: 'Working on feature',
134
- completedTasks: ['Task 1', 'Task 2'],
135
- context: 'Backend development',
136
- files: ['src/index.ts', 'src/utils.ts'],
137
- };
138
- const result = AgentSummarySchema.parse(summary);
139
- expect(result).toEqual(summary);
140
- });
141
-
142
- it('accepts minimal agent summary', () => {
143
- const summary = {
144
- agentName: 'TestAgent',
145
- lastUpdated: '2024-01-01T00:00:00Z',
146
- };
147
- const result = AgentSummarySchema.parse(summary);
148
- expect(result.agentName).toBe('TestAgent');
149
- expect(result.currentTask).toBeUndefined();
150
- });
151
- });
152
-
153
- describe('Type inference', () => {
154
- it('infers Agent type correctly', () => {
155
- // This test verifies TypeScript type inference
156
- const agent: Agent = {
157
- name: 'Test',
158
- status: 'online',
159
- };
160
- // Type assertion to verify inference
161
- const parsed: z.infer<typeof AgentSchema> = AgentSchema.parse(agent);
162
- expect(parsed.name).toBe('Test');
163
- });
164
- });
@@ -1,110 +0,0 @@
1
- /**
2
- * Agent Schemas
3
- *
4
- * Zod schemas for agent-related types used across the dashboard and API.
5
- */
6
-
7
- import { z } from 'zod';
8
-
9
- /**
10
- * Agent status enum
11
- */
12
- export const AgentStatusSchema = z.enum(['online', 'idle', 'busy', 'offline']);
13
- export type AgentStatus = z.infer<typeof AgentStatusSchema>;
14
-
15
- /**
16
- * Agent profile information - helps users understand agent behavior
17
- */
18
- export const AgentProfileSchema = z.object({
19
- /** Display title/role (e.g., "Lead Developer", "Code Reviewer") */
20
- title: z.string().optional(),
21
- /** Short description of what this agent does */
22
- description: z.string().optional(),
23
- /** The prompt/task the agent was spawned with */
24
- spawnPrompt: z.string().optional(),
25
- /** Agent profile/persona prompt (e.g., lead agent instructions) */
26
- personaPrompt: z.string().optional(),
27
- /** Name of the persona preset used (e.g., "lead", "reviewer", "shadow-auditor") */
28
- personaName: z.string().optional(),
29
- /** Model being used (e.g., "claude-3-opus", "gpt-4") */
30
- model: z.string().optional(),
31
- /** Working directory */
32
- workingDirectory: z.string().optional(),
33
- /** When the agent was first seen */
34
- firstSeen: z.string().optional(),
35
- /** Capabilities or tools available to the agent */
36
- capabilities: z.array(z.string()).optional(),
37
- /** Tags for categorization */
38
- tags: z.array(z.string()).optional(),
39
- });
40
- export type AgentProfile = z.infer<typeof AgentProfileSchema>;
41
-
42
- /**
43
- * Agent schema - represents a connected agent
44
- */
45
- export const AgentSchema = z.object({
46
- /** Agent name (required) */
47
- name: z.string(),
48
- /** Agent role description */
49
- role: z.string().optional(),
50
- /** CLI type used by the agent (claude, codex, gemini, etc.) */
51
- cli: z.string().optional(),
52
- /** Current agent status (required) */
53
- status: AgentStatusSchema,
54
- /** Last seen timestamp (ISO string) */
55
- lastSeen: z.string().optional(),
56
- /** Last active timestamp (ISO string) */
57
- lastActive: z.string().optional(),
58
- /** Total message count */
59
- messageCount: z.number().optional(),
60
- /** Whether the agent needs attention */
61
- needsAttention: z.boolean().optional(),
62
- /** Current task description */
63
- currentTask: z.string().optional(),
64
- /** Server the agent is connected to (for fleet view) */
65
- server: z.string().optional(),
66
- /** Whether agent is currently processing */
67
- isProcessing: z.boolean().optional(),
68
- /** Timestamp when processing started */
69
- processingStartedAt: z.number().optional(),
70
- /** Whether agent was spawned via dashboard */
71
- isSpawned: z.boolean().optional(),
72
- /** Optional team grouping */
73
- team: z.string().optional(),
74
- /** Unique agent ID for resume functionality */
75
- agentId: z.string().optional(),
76
- /** Timestamp when agent last received a message */
77
- lastMessageReceivedAt: z.number().optional(),
78
- /** Timestamp when agent last produced output */
79
- lastOutputAt: z.number().optional(),
80
- /** Whether agent is stuck */
81
- isStuck: z.boolean().optional(),
82
- /** Whether this is a human user */
83
- isHuman: z.boolean().optional(),
84
- /** Avatar URL for human users */
85
- avatarUrl: z.string().optional(),
86
- /** Whether agent's authentication has been revoked */
87
- authRevoked: z.boolean().optional(),
88
- /** Whether agent is from a linked local daemon */
89
- isLocal: z.boolean().optional(),
90
- /** Name of the linked daemon */
91
- daemonName: z.string().optional(),
92
- /** Machine ID of the linked daemon */
93
- machineId: z.string().optional(),
94
- /** Agent profile information */
95
- profile: AgentProfileSchema.optional(),
96
- });
97
- export type Agent = z.infer<typeof AgentSchema>;
98
-
99
- /**
100
- * Agent summary - condensed agent information
101
- */
102
- export const AgentSummarySchema = z.object({
103
- agentName: z.string(),
104
- lastUpdated: z.string(),
105
- currentTask: z.string().optional(),
106
- completedTasks: z.array(z.string()).optional(),
107
- context: z.string().optional(),
108
- files: z.array(z.string()).optional(),
109
- });
110
- export type AgentSummary = z.infer<typeof AgentSummarySchema>;