agent-relay 3.2.3 → 3.2.4

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 (225) hide show
  1. package/dist/index.cjs +265 -108
  2. package/package.json +11 -10
  3. package/packages/acp-bridge/package.json +2 -2
  4. package/packages/config/package.json +1 -1
  5. package/packages/hooks/package.json +4 -4
  6. package/packages/memory/package.json +2 -2
  7. package/packages/openclaw/package.json +2 -2
  8. package/packages/policy/package.json +2 -2
  9. package/packages/sdk/ADAPTER_REVIEW.md +109 -0
  10. package/packages/sdk/dist/communicate/a2a-bridge.d.ts +25 -0
  11. package/packages/sdk/dist/communicate/a2a-bridge.d.ts.map +1 -0
  12. package/packages/sdk/dist/communicate/a2a-bridge.js +89 -0
  13. package/packages/sdk/dist/communicate/a2a-bridge.js.map +1 -0
  14. package/packages/sdk/dist/communicate/a2a-server.d.ts +31 -0
  15. package/packages/sdk/dist/communicate/a2a-server.d.ts.map +1 -0
  16. package/packages/sdk/dist/communicate/a2a-server.js +220 -0
  17. package/packages/sdk/dist/communicate/a2a-server.js.map +1 -0
  18. package/packages/sdk/dist/communicate/a2a-transport.d.ts +48 -0
  19. package/packages/sdk/dist/communicate/a2a-transport.d.ts.map +1 -0
  20. package/packages/sdk/dist/communicate/a2a-transport.js +302 -0
  21. package/packages/sdk/dist/communicate/a2a-transport.js.map +1 -0
  22. package/packages/sdk/dist/communicate/a2a-types.d.ts +107 -0
  23. package/packages/sdk/dist/communicate/a2a-types.d.ts.map +1 -0
  24. package/packages/sdk/dist/communicate/a2a-types.js +209 -0
  25. package/packages/sdk/dist/communicate/a2a-types.js.map +1 -0
  26. package/packages/sdk/dist/communicate/adapters/claude-sdk.d.ts +28 -0
  27. package/packages/sdk/dist/communicate/adapters/claude-sdk.d.ts.map +1 -0
  28. package/packages/sdk/dist/communicate/adapters/claude-sdk.js +47 -0
  29. package/packages/sdk/dist/communicate/adapters/claude-sdk.js.map +1 -0
  30. package/packages/sdk/dist/communicate/adapters/crewai.d.ts +42 -0
  31. package/packages/sdk/dist/communicate/adapters/crewai.d.ts.map +1 -0
  32. package/packages/sdk/dist/communicate/adapters/crewai.js +95 -0
  33. package/packages/sdk/dist/communicate/adapters/crewai.js.map +1 -0
  34. package/packages/sdk/dist/communicate/adapters/google-adk.d.ts +53 -0
  35. package/packages/sdk/dist/communicate/adapters/google-adk.d.ts.map +1 -0
  36. package/packages/sdk/dist/communicate/adapters/google-adk.js +77 -0
  37. package/packages/sdk/dist/communicate/adapters/google-adk.js.map +1 -0
  38. package/packages/sdk/dist/communicate/adapters/index.d.ts +7 -0
  39. package/packages/sdk/dist/communicate/adapters/index.d.ts.map +1 -0
  40. package/packages/sdk/dist/communicate/adapters/index.js +7 -0
  41. package/packages/sdk/dist/communicate/adapters/index.js.map +1 -0
  42. package/packages/sdk/dist/communicate/adapters/langgraph.d.ts +40 -0
  43. package/packages/sdk/dist/communicate/adapters/langgraph.d.ts.map +1 -0
  44. package/packages/sdk/dist/communicate/adapters/langgraph.js +77 -0
  45. package/packages/sdk/dist/communicate/adapters/langgraph.js.map +1 -0
  46. package/packages/sdk/dist/communicate/adapters/openai-agents.d.ts +25 -0
  47. package/packages/sdk/dist/communicate/adapters/openai-agents.d.ts.map +1 -0
  48. package/packages/sdk/dist/communicate/adapters/openai-agents.js +70 -0
  49. package/packages/sdk/dist/communicate/adapters/openai-agents.js.map +1 -0
  50. package/packages/sdk/dist/communicate/adapters/pi.d.ts +45 -0
  51. package/packages/sdk/dist/communicate/adapters/pi.d.ts.map +1 -0
  52. package/packages/sdk/dist/communicate/adapters/pi.js +59 -0
  53. package/packages/sdk/dist/communicate/adapters/pi.js.map +1 -0
  54. package/packages/sdk/dist/communicate/core.d.ts +58 -0
  55. package/packages/sdk/dist/communicate/core.d.ts.map +1 -0
  56. package/packages/sdk/dist/communicate/core.js +128 -0
  57. package/packages/sdk/dist/communicate/core.js.map +1 -0
  58. package/packages/sdk/dist/communicate/index.d.ts +4 -0
  59. package/packages/sdk/dist/communicate/index.d.ts.map +1 -0
  60. package/packages/sdk/dist/communicate/index.js +4 -0
  61. package/packages/sdk/dist/communicate/index.js.map +1 -0
  62. package/packages/sdk/dist/communicate/transport.d.ts +36 -0
  63. package/packages/sdk/dist/communicate/transport.d.ts.map +1 -0
  64. package/packages/sdk/dist/communicate/transport.js +371 -0
  65. package/packages/sdk/dist/communicate/transport.js.map +1 -0
  66. package/packages/sdk/dist/communicate/types.d.ts +58 -0
  67. package/packages/sdk/dist/communicate/types.d.ts.map +1 -0
  68. package/packages/sdk/dist/communicate/types.js +66 -0
  69. package/packages/sdk/dist/communicate/types.js.map +1 -0
  70. package/packages/sdk/dist/workflows/builder.d.ts +35 -5
  71. package/packages/sdk/dist/workflows/builder.d.ts.map +1 -1
  72. package/packages/sdk/dist/workflows/builder.js +81 -7
  73. package/packages/sdk/dist/workflows/builder.js.map +1 -1
  74. package/packages/sdk/dist/workflows/cli.js +14 -1
  75. package/packages/sdk/dist/workflows/cli.js.map +1 -1
  76. package/packages/sdk/dist/workflows/runner.d.ts +10 -2
  77. package/packages/sdk/dist/workflows/runner.d.ts.map +1 -1
  78. package/packages/sdk/dist/workflows/runner.js +95 -1
  79. package/packages/sdk/dist/workflows/runner.js.map +1 -1
  80. package/packages/sdk/dist/workflows/types.d.ts +11 -0
  81. package/packages/sdk/dist/workflows/types.d.ts.map +1 -1
  82. package/packages/sdk/examples/communicate/claude_sdk_example.ts +5 -0
  83. package/packages/sdk/examples/communicate/pi_example.ts +8 -0
  84. package/packages/sdk/package.json +48 -2
  85. package/packages/sdk/src/__tests__/builder-deterministic.test.ts +132 -0
  86. package/packages/sdk/src/__tests__/communicate/a2a-bridge.test.ts +211 -0
  87. package/packages/sdk/src/__tests__/communicate/a2a-server.test.ts +359 -0
  88. package/packages/sdk/src/__tests__/communicate/a2a-transport.test.ts +537 -0
  89. package/packages/sdk/src/__tests__/communicate/a2a-types.test.ts +297 -0
  90. package/packages/sdk/src/__tests__/communicate/adapters/claude-sdk.test.ts +163 -0
  91. package/packages/sdk/src/__tests__/communicate/adapters/crewai.test.ts +219 -0
  92. package/packages/sdk/src/__tests__/communicate/adapters/e2e-crewai.test.ts +101 -0
  93. package/packages/sdk/src/__tests__/communicate/adapters/e2e-google-adk.test.ts +166 -0
  94. package/packages/sdk/src/__tests__/communicate/adapters/e2e-langgraph.test.ts +181 -0
  95. package/packages/sdk/src/__tests__/communicate/adapters/e2e-openai-agents.test.ts +137 -0
  96. package/packages/sdk/src/__tests__/communicate/adapters/e2e-pi.test.ts +140 -0
  97. package/packages/sdk/src/__tests__/communicate/adapters/google-adk.test.ts +200 -0
  98. package/packages/sdk/src/__tests__/communicate/adapters/langgraph.test.ts +162 -0
  99. package/packages/sdk/src/__tests__/communicate/adapters/openai-agents.test.ts +166 -0
  100. package/packages/sdk/src/__tests__/communicate/adapters/pi.test.ts +140 -0
  101. package/packages/sdk/src/__tests__/communicate/core.test.ts +574 -0
  102. package/packages/sdk/src/__tests__/communicate/integration/cross-framework.test.ts +353 -0
  103. package/packages/sdk/src/__tests__/communicate/transport.test.ts +613 -0
  104. package/packages/sdk/src/__tests__/start-from.test.ts +346 -0
  105. package/packages/sdk/src/communicate/a2a-bridge.ts +111 -0
  106. package/packages/sdk/src/communicate/a2a-server.ts +277 -0
  107. package/packages/sdk/src/communicate/a2a-transport.ts +395 -0
  108. package/packages/sdk/src/communicate/a2a-types.ts +338 -0
  109. package/packages/sdk/src/communicate/adapters/claude-sdk.ts +85 -0
  110. package/packages/sdk/src/communicate/adapters/crewai.ts +141 -0
  111. package/packages/sdk/src/communicate/adapters/google-adk.ts +139 -0
  112. package/packages/sdk/src/communicate/adapters/index.ts +6 -0
  113. package/packages/sdk/src/communicate/adapters/langgraph.ts +112 -0
  114. package/packages/sdk/src/communicate/adapters/openai-agents.ts +113 -0
  115. package/packages/sdk/src/communicate/adapters/pi.ts +105 -0
  116. package/packages/sdk/src/communicate/core.ts +157 -0
  117. package/packages/sdk/src/communicate/index.ts +3 -0
  118. package/packages/sdk/src/communicate/transport.ts +489 -0
  119. package/packages/sdk/src/communicate/types.ts +106 -0
  120. package/packages/sdk/src/examples/workflows/fix-dashboard-user-registration.yaml +182 -0
  121. package/packages/sdk/src/workflows/builder.ts +97 -9
  122. package/packages/sdk/src/workflows/cli.ts +16 -1
  123. package/packages/sdk/src/workflows/runner.ts +110 -1
  124. package/packages/sdk/src/workflows/types.ts +14 -0
  125. package/packages/sdk/tsconfig.build.json +1 -7
  126. package/packages/sdk/tsconfig.json +1 -7
  127. package/packages/sdk-py/README.md +67 -25
  128. package/packages/sdk-py/examples/communicate/agno_example.py +8 -0
  129. package/packages/sdk-py/examples/communicate/claude_sdk_example.py +6 -0
  130. package/packages/sdk-py/examples/communicate/crewai_example.py +7 -0
  131. package/packages/sdk-py/examples/communicate/google_adk_example.py +7 -0
  132. package/packages/sdk-py/examples/communicate/openai_agents_example.py +8 -0
  133. package/packages/sdk-py/examples/communicate/swarms_example.py +7 -0
  134. package/packages/sdk-py/pyproject.toml +12 -1
  135. package/packages/sdk-py/src/agent_relay/__init__.py +8 -0
  136. package/packages/sdk-py/src/agent_relay/builder.py +65 -26
  137. package/packages/sdk-py/src/agent_relay/communicate/__init__.py +6 -0
  138. package/packages/sdk-py/src/agent_relay/communicate/a2a_bridge.py +138 -0
  139. package/packages/sdk-py/src/agent_relay/communicate/a2a_server.py +242 -0
  140. package/packages/sdk-py/src/agent_relay/communicate/a2a_transport.py +366 -0
  141. package/packages/sdk-py/src/agent_relay/communicate/a2a_types.py +294 -0
  142. package/packages/sdk-py/src/agent_relay/communicate/adapters/__init__.py +10 -0
  143. package/packages/sdk-py/src/agent_relay/communicate/adapters/agno.py +74 -0
  144. package/packages/sdk-py/src/agent_relay/communicate/adapters/claude_sdk.py +78 -0
  145. package/packages/sdk-py/src/agent_relay/communicate/adapters/crewai.py +143 -0
  146. package/packages/sdk-py/src/agent_relay/communicate/adapters/google_adk.py +69 -0
  147. package/packages/sdk-py/src/agent_relay/communicate/adapters/openai_agents.py +86 -0
  148. package/packages/sdk-py/src/agent_relay/communicate/adapters/pi.py +175 -0
  149. package/packages/sdk-py/src/agent_relay/communicate/adapters/swarms.py +44 -0
  150. package/packages/sdk-py/src/agent_relay/communicate/core.py +293 -0
  151. package/packages/sdk-py/src/agent_relay/communicate/transport.py +502 -0
  152. package/packages/sdk-py/src/agent_relay/communicate/types.py +89 -0
  153. package/packages/sdk-py/src/agent_relay/types.py +2 -1
  154. package/packages/sdk-py/tests/communicate/__init__.py +0 -0
  155. package/packages/sdk-py/tests/communicate/adapters/__init__.py +0 -0
  156. package/packages/sdk-py/tests/communicate/adapters/e2e_test_agno.py +154 -0
  157. package/packages/sdk-py/tests/communicate/adapters/e2e_test_claude_sdk.py +428 -0
  158. package/packages/sdk-py/tests/communicate/adapters/e2e_test_crewai.py +234 -0
  159. package/packages/sdk-py/tests/communicate/adapters/e2e_test_google_adk.py +182 -0
  160. package/packages/sdk-py/tests/communicate/adapters/e2e_test_langgraph.py +262 -0
  161. package/packages/sdk-py/tests/communicate/adapters/e2e_test_openai_agents.py +88 -0
  162. package/packages/sdk-py/tests/communicate/adapters/e2e_test_pi.py +156 -0
  163. package/packages/sdk-py/tests/communicate/adapters/e2e_test_swarms.py +239 -0
  164. package/packages/sdk-py/tests/communicate/adapters/test_agno.py +140 -0
  165. package/packages/sdk-py/tests/communicate/adapters/test_claude_sdk.py +147 -0
  166. package/packages/sdk-py/tests/communicate/adapters/test_crewai.py +136 -0
  167. package/packages/sdk-py/tests/communicate/adapters/test_google_adk.py +125 -0
  168. package/packages/sdk-py/tests/communicate/adapters/test_openai_agents.py +99 -0
  169. package/packages/sdk-py/tests/communicate/adapters/test_pi.py +270 -0
  170. package/packages/sdk-py/tests/communicate/adapters/test_swarms.py +113 -0
  171. package/packages/sdk-py/tests/communicate/conftest.py +555 -0
  172. package/packages/sdk-py/tests/communicate/integration/__init__.py +1 -0
  173. package/packages/sdk-py/tests/communicate/integration/test_cross_framework.py +331 -0
  174. package/packages/sdk-py/tests/communicate/integration/test_end_to_end.py +151 -0
  175. package/packages/sdk-py/tests/communicate/test_a2a_bridge.py +363 -0
  176. package/packages/sdk-py/tests/communicate/test_a2a_server.py +346 -0
  177. package/packages/sdk-py/tests/communicate/test_a2a_transport.py +561 -0
  178. package/packages/sdk-py/tests/communicate/test_a2a_types.py +342 -0
  179. package/packages/sdk-py/tests/communicate/test_auto_detect.py +67 -0
  180. package/packages/sdk-py/tests/communicate/test_core.py +331 -0
  181. package/packages/sdk-py/tests/communicate/test_transport.py +373 -0
  182. package/packages/sdk-py/tests/communicate/test_types.py +285 -0
  183. package/packages/sdk-py/tests/test_builder_deterministic.py +118 -0
  184. package/packages/telemetry/package.json +1 -1
  185. package/packages/trajectory/package.json +2 -2
  186. package/packages/user-directory/package.json +2 -2
  187. package/packages/utils/package.json +2 -2
  188. package/packages/sdk/dist/__tests__/completion-pipeline.test.d.ts +0 -14
  189. package/packages/sdk/dist/__tests__/completion-pipeline.test.d.ts.map +0 -1
  190. package/packages/sdk/dist/__tests__/completion-pipeline.test.js +0 -1476
  191. package/packages/sdk/dist/__tests__/completion-pipeline.test.js.map +0 -1
  192. package/packages/sdk/dist/__tests__/contract-fixtures.test.d.ts +0 -2
  193. package/packages/sdk/dist/__tests__/contract-fixtures.test.d.ts.map +0 -1
  194. package/packages/sdk/dist/__tests__/contract-fixtures.test.js +0 -152
  195. package/packages/sdk/dist/__tests__/contract-fixtures.test.js.map +0 -1
  196. package/packages/sdk/dist/__tests__/e2e-owner-review.test.d.ts +0 -16
  197. package/packages/sdk/dist/__tests__/e2e-owner-review.test.d.ts.map +0 -1
  198. package/packages/sdk/dist/__tests__/e2e-owner-review.test.js +0 -640
  199. package/packages/sdk/dist/__tests__/e2e-owner-review.test.js.map +0 -1
  200. package/packages/sdk/dist/__tests__/facade.test.d.ts +0 -2
  201. package/packages/sdk/dist/__tests__/facade.test.d.ts.map +0 -1
  202. package/packages/sdk/dist/__tests__/facade.test.js +0 -305
  203. package/packages/sdk/dist/__tests__/facade.test.js.map +0 -1
  204. package/packages/sdk/dist/__tests__/integration.test.d.ts +0 -2
  205. package/packages/sdk/dist/__tests__/integration.test.d.ts.map +0 -1
  206. package/packages/sdk/dist/__tests__/integration.test.js +0 -205
  207. package/packages/sdk/dist/__tests__/integration.test.js.map +0 -1
  208. package/packages/sdk/dist/__tests__/pty.test.d.ts +0 -2
  209. package/packages/sdk/dist/__tests__/pty.test.d.ts.map +0 -1
  210. package/packages/sdk/dist/__tests__/pty.test.js +0 -20
  211. package/packages/sdk/dist/__tests__/pty.test.js.map +0 -1
  212. package/packages/sdk/dist/__tests__/quickstart.test.d.ts +0 -2
  213. package/packages/sdk/dist/__tests__/quickstart.test.d.ts.map +0 -1
  214. package/packages/sdk/dist/__tests__/quickstart.test.js +0 -176
  215. package/packages/sdk/dist/__tests__/quickstart.test.js.map +0 -1
  216. package/packages/sdk/dist/__tests__/spawn-from-env.test.d.ts +0 -2
  217. package/packages/sdk/dist/__tests__/spawn-from-env.test.d.ts.map +0 -1
  218. package/packages/sdk/dist/__tests__/spawn-from-env.test.js +0 -222
  219. package/packages/sdk/dist/__tests__/spawn-from-env.test.js.map +0 -1
  220. package/packages/sdk/dist/__tests__/unit.test.d.ts +0 -2
  221. package/packages/sdk/dist/__tests__/unit.test.d.ts.map +0 -1
  222. package/packages/sdk/dist/__tests__/unit.test.js +0 -357
  223. package/packages/sdk/dist/__tests__/unit.test.js.map +0 -1
  224. package/packages/sdk-py/agent_relay/__init__.py +0 -21
  225. package/packages/sdk-py/agent_relay/models.py +0 -398
@@ -371,6 +371,17 @@ export interface DryRunReport {
371
371
  /** Estimated total agent-steps (counting retries as additional steps). */
372
372
  estimatedTotalAgentSteps?: number;
373
373
  }
374
+ /** Options that control how a workflow run executes. */
375
+ export interface WorkflowExecuteOptions {
376
+ /** Start execution from a specific step, skipping all predecessor steps.
377
+ * Predecessor outputs are loaded from cached step-outputs on disk when available. */
378
+ startFrom?: string;
379
+ /** Run ID of a previous execution whose cached step outputs should be used
380
+ * when skipping predecessor steps via `startFrom`. If omitted, the runner
381
+ * scans `.agent-relay/step-outputs/` for the most recent directory that
382
+ * contains the needed step files. */
383
+ previousRunId?: string;
384
+ }
374
385
  export type WorkflowRunStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
375
386
  /** Database row representing a workflow run. */
376
387
  export interface WorkflowRunRow {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workflows/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workflows/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Relay, onRelay } from '@agent-relay/sdk/communicate';
2
+
3
+ const relay = new Relay('ClaudeWorker');
4
+ const options = onRelay('ClaudeWorker', {}, relay);
5
+ console.log(options.mcpServers?.relaycast);
@@ -0,0 +1,8 @@
1
+ import { createAgentSession } from '@mariozechner/pi-coding-agent';
2
+ import { Relay, onRelay } from '@agent-relay/sdk/communicate';
3
+
4
+ const relay = new Relay('PiWorker');
5
+ const config = onRelay('PiWorker', {}, relay);
6
+ const { session } = await createAgentSession({ customTools: config.customTools });
7
+ await config.onSessionCreated(session);
8
+ await session.prompt('Check relay_inbox before you act.');
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/sdk",
3
- "version": "3.2.3",
3
+ "version": "3.2.4",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -49,6 +49,21 @@
49
49
  "types": "./dist/workflows/index.d.ts",
50
50
  "import": "./dist/workflows/index.js",
51
51
  "default": "./dist/workflows/index.js"
52
+ },
53
+ "./communicate": {
54
+ "types": "./dist/communicate/index.d.ts",
55
+ "import": "./dist/communicate/index.js",
56
+ "default": "./dist/communicate/index.js"
57
+ },
58
+ "./communicate/adapters/pi": {
59
+ "types": "./dist/communicate/adapters/pi.d.ts",
60
+ "import": "./dist/communicate/adapters/pi.js",
61
+ "default": "./dist/communicate/adapters/pi.js"
62
+ },
63
+ "./communicate/adapters/claude-sdk": {
64
+ "types": "./dist/communicate/adapters/claude-sdk.d.ts",
65
+ "import": "./dist/communicate/adapters/claude-sdk.js",
66
+ "default": "./dist/communicate/adapters/claude-sdk.js"
52
67
  }
53
68
  },
54
69
  "files": [
@@ -78,11 +93,42 @@
78
93
  },
79
94
  "devDependencies": {
80
95
  "@types/node": "^22.13.10",
96
+ "@types/ws": "^8.5.10",
81
97
  "typescript": "^5.7.3"
82
98
  },
83
99
  "dependencies": {
84
- "@agent-relay/config": "3.2.3",
100
+ "@agent-relay/config": "3.2.4",
85
101
  "@relaycast/sdk": "^0.4.0",
102
+ "@sinclair/typebox": "^0.34.48",
103
+ "ws": "^8.18.3",
86
104
  "yaml": "^2.7.0"
105
+ },
106
+ "peerDependencies": {
107
+ "@anthropic-ai/claude-agent-sdk": ">=0.1.0",
108
+ "@google/adk": ">=0.5.0",
109
+ "@langchain/langgraph": ">=1.2.0",
110
+ "@mariozechner/pi-coding-agent": ">=0.50.0",
111
+ "@openai/agents": ">=0.7.0",
112
+ "crewai": ">=1.0.0"
113
+ },
114
+ "peerDependenciesMeta": {
115
+ "@anthropic-ai/claude-agent-sdk": {
116
+ "optional": true
117
+ },
118
+ "@google/adk": {
119
+ "optional": true
120
+ },
121
+ "@langchain/langgraph": {
122
+ "optional": true
123
+ },
124
+ "@mariozechner/pi-coding-agent": {
125
+ "optional": true
126
+ },
127
+ "@openai/agents": {
128
+ "optional": true
129
+ },
130
+ "crewai": {
131
+ "optional": true
132
+ }
87
133
  }
88
134
  }
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Tests for deterministic and worktree step support in WorkflowBuilder.
3
+ */
4
+ import { describe, it, expect } from 'vitest';
5
+ import { workflow } from '../workflows/builder.js';
6
+
7
+ describe('deterministic/worktree steps in builder', () => {
8
+ it('deterministic step emits correct config', () => {
9
+ const config = workflow('test')
10
+ .agent('worker', { cli: 'claude' })
11
+ .step('read-files', {
12
+ type: 'deterministic',
13
+ command: 'cat src/index.ts',
14
+ verification: { type: 'exit_code', value: '0' },
15
+ })
16
+ .step('build', { agent: 'worker', task: 'Build the project' })
17
+ .toConfig();
18
+
19
+ const steps = config.workflows![0].steps;
20
+ expect(steps).toHaveLength(2);
21
+
22
+ // Deterministic step
23
+ expect(steps[0].name).toBe('read-files');
24
+ expect(steps[0].type).toBe('deterministic');
25
+ expect(steps[0].command).toBe('cat src/index.ts');
26
+ expect(steps[0].agent).toBeUndefined();
27
+ expect(steps[0].task).toBeUndefined();
28
+ expect(steps[0].verification).toEqual({ type: 'exit_code', value: '0' });
29
+
30
+ // Agent step
31
+ expect(steps[1].name).toBe('build');
32
+ expect(steps[1].agent).toBe('worker');
33
+ expect(steps[1].task).toBe('Build the project');
34
+ expect(steps[1].type).toBeUndefined();
35
+ });
36
+
37
+ it('deterministic step with all options', () => {
38
+ const config = workflow('test')
39
+ .agent('worker', { cli: 'claude' })
40
+ .step('run-cmd', {
41
+ type: 'deterministic',
42
+ command: 'npm test',
43
+ captureOutput: true,
44
+ failOnError: false,
45
+ dependsOn: ['build'],
46
+ timeoutMs: 30000,
47
+ })
48
+ .step('final', { agent: 'worker', task: 'Finalize' })
49
+ .toConfig();
50
+
51
+ const step = config.workflows![0].steps[0];
52
+ expect(step.captureOutput).toBe(true);
53
+ expect(step.failOnError).toBe(false);
54
+ expect(step.dependsOn).toEqual(['build']);
55
+ expect(step.timeoutMs).toBe(30000);
56
+ });
57
+
58
+ it('worktree step emits correct config', () => {
59
+ const config = workflow('test')
60
+ .agent('worker', { cli: 'claude' })
61
+ .step('setup-worktree', {
62
+ type: 'worktree',
63
+ branch: 'feature/new',
64
+ baseBranch: 'main',
65
+ path: '.worktrees/feature-new',
66
+ createBranch: true,
67
+ })
68
+ .step('work', { agent: 'worker', task: 'Do work', dependsOn: ['setup-worktree'] })
69
+ .toConfig();
70
+
71
+ const step = config.workflows![0].steps[0];
72
+ expect(step.type).toBe('worktree');
73
+ expect(step.branch).toBe('feature/new');
74
+ expect(step.baseBranch).toBe('main');
75
+ expect(step.path).toBe('.worktrees/feature-new');
76
+ expect(step.createBranch).toBe(true);
77
+ expect(step.agent).toBeUndefined();
78
+ expect(step.command).toBeUndefined();
79
+ });
80
+
81
+ it('deterministic-only workflow does not require agents', () => {
82
+ const config = workflow('infra')
83
+ .step('lint', { type: 'deterministic', command: 'npm run lint' })
84
+ .step('test', {
85
+ type: 'deterministic',
86
+ command: 'npm test',
87
+ dependsOn: ['lint'],
88
+ })
89
+ .toConfig();
90
+
91
+ expect(config.agents).toHaveLength(0);
92
+ expect(config.workflows![0].steps).toHaveLength(2);
93
+ });
94
+
95
+ it('deterministic step without command throws', () => {
96
+ expect(() => {
97
+ workflow('test')
98
+ .step('bad', { type: 'deterministic' } as any);
99
+ }).toThrow('deterministic steps must have a command');
100
+ });
101
+
102
+ it('deterministic step with agent throws', () => {
103
+ expect(() => {
104
+ workflow('test')
105
+ .step('bad', { type: 'deterministic', command: 'ls', agent: 'x', task: 'y' } as any);
106
+ }).toThrow('deterministic steps must not have agent or task');
107
+ });
108
+
109
+ it('agent step without agent/task throws', () => {
110
+ expect(() => {
111
+ workflow('test')
112
+ .step('bad', {} as any);
113
+ }).toThrow('Agent steps must have both agent and task');
114
+ });
115
+
116
+ it('agent steps without any agent definition throws', () => {
117
+ expect(() => {
118
+ workflow('test')
119
+ .step('work', { agent: 'worker', task: 'Do work' })
120
+ .toConfig();
121
+ }).toThrow('Workflow must have at least one agent when using agent steps');
122
+ });
123
+
124
+ it('toYaml includes deterministic steps', () => {
125
+ const yamlStr = workflow('test')
126
+ .step('check', { type: 'deterministic', command: 'echo hello' })
127
+ .toYaml();
128
+
129
+ expect(yamlStr).toContain('type: deterministic');
130
+ expect(yamlStr).toContain('command: echo hello');
131
+ });
132
+ });
@@ -0,0 +1,211 @@
1
+ import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest';
2
+ import http from 'node:http';
3
+
4
+ import { A2ABridge } from '../../communicate/a2a-bridge.js';
5
+ import { A2AServer } from '../../communicate/a2a-server.js';
6
+ import type { RelayConfig } from '../../communicate/types.js';
7
+
8
+ const mockRelayConfig: RelayConfig = {
9
+ workspace: 'test-workspace',
10
+ apiKey: 'rk_test_key',
11
+ baseUrl: 'https://api.test.dev',
12
+ };
13
+
14
+ describe('A2ABridge', () => {
15
+ describe('construction', () => {
16
+ it('creates bridge with correct properties', () => {
17
+ const bridge = new A2ABridge(
18
+ mockRelayConfig,
19
+ 'http://localhost:9999',
20
+ 'proxy-agent',
21
+ );
22
+ expect(bridge.proxyName).toBe('proxy-agent');
23
+ expect(bridge.a2aAgentUrl).toBe('http://localhost:9999');
24
+ });
25
+
26
+ it('strips trailing slashes from URL', () => {
27
+ const bridge = new A2ABridge(
28
+ mockRelayConfig,
29
+ 'http://localhost:9999///',
30
+ 'proxy-agent',
31
+ );
32
+ expect(bridge.a2aAgentUrl).toBe('http://localhost:9999');
33
+ });
34
+ });
35
+
36
+ describe('discoverAgent', () => {
37
+ let mockServer: http.Server;
38
+ let port: number;
39
+
40
+ beforeEach(async () => {
41
+ mockServer = http.createServer((req, res) => {
42
+ if (req.url === '/.well-known/agent.json') {
43
+ res.writeHead(200, { 'Content-Type': 'application/json' });
44
+ res.end(
45
+ JSON.stringify({
46
+ name: 'test-a2a-agent',
47
+ description: 'A test agent',
48
+ url: `http://localhost:${port}`,
49
+ version: '1.0.0',
50
+ capabilities: { streaming: false, pushNotifications: false },
51
+ skills: [{ id: 'billing', name: 'Billing', description: 'Handles billing' }],
52
+ defaultInputModes: ['text'],
53
+ defaultOutputModes: ['text'],
54
+ }),
55
+ );
56
+ } else {
57
+ res.writeHead(404);
58
+ res.end();
59
+ }
60
+ });
61
+ await new Promise<void>((resolve) => {
62
+ mockServer.listen(0, () => {
63
+ const addr = mockServer.address();
64
+ port = typeof addr === 'object' && addr ? addr.port : 0;
65
+ resolve();
66
+ });
67
+ });
68
+ });
69
+
70
+ afterEach(async () => {
71
+ await new Promise<void>((resolve) => mockServer.close(() => resolve()));
72
+ });
73
+
74
+ it('discovers agent card from well-known URL', async () => {
75
+ const bridge = new A2ABridge(
76
+ mockRelayConfig,
77
+ `http://localhost:${port}`,
78
+ 'proxy',
79
+ );
80
+ const card = await bridge.discoverAgent();
81
+ expect(card.name).toBe('test-a2a-agent');
82
+ expect(card.description).toBe('A test agent');
83
+ expect(card.skills).toHaveLength(1);
84
+ expect(card.skills[0].id).toBe('billing');
85
+ });
86
+ });
87
+
88
+ describe('sendA2AMessage', () => {
89
+ let mockServer: http.Server;
90
+ let port: number;
91
+
92
+ beforeEach(async () => {
93
+ mockServer = http.createServer((req, res) => {
94
+ if (req.method === 'POST') {
95
+ let body = '';
96
+ req.on('data', (chunk: Buffer) => { body += chunk.toString(); });
97
+ req.on('end', () => {
98
+ const request = JSON.parse(body);
99
+ res.writeHead(200, { 'Content-Type': 'application/json' });
100
+ res.end(
101
+ JSON.stringify({
102
+ jsonrpc: '2.0',
103
+ id: request.id,
104
+ result: {
105
+ id: 'task-001',
106
+ status: {
107
+ state: 'completed',
108
+ message: {
109
+ role: 'agent',
110
+ parts: [{ text: 'I processed your billing request' }],
111
+ },
112
+ },
113
+ messages: [],
114
+ },
115
+ }),
116
+ );
117
+ });
118
+ } else {
119
+ res.writeHead(404);
120
+ res.end();
121
+ }
122
+ });
123
+ await new Promise<void>((resolve) => {
124
+ mockServer.listen(0, () => {
125
+ const addr = mockServer.address();
126
+ port = typeof addr === 'object' && addr ? addr.port : 0;
127
+ resolve();
128
+ });
129
+ });
130
+ });
131
+
132
+ afterEach(async () => {
133
+ await new Promise<void>((resolve) => mockServer.close(() => resolve()));
134
+ });
135
+
136
+ it('sends A2A message and gets response', async () => {
137
+ const bridge = new A2ABridge(
138
+ mockRelayConfig,
139
+ `http://localhost:${port}`,
140
+ 'proxy',
141
+ );
142
+ const response = await bridge.sendA2AMessage('Process refund for order #1042');
143
+ expect(response).toBe('I processed your billing request');
144
+ });
145
+
146
+ it('returns null when no response text', async () => {
147
+ await new Promise<void>((resolve) => mockServer.close(() => resolve()));
148
+ mockServer = http.createServer((req, res) => {
149
+ let body = '';
150
+ req.on('data', (chunk: Buffer) => { body += chunk.toString(); });
151
+ req.on('end', () => {
152
+ const request = JSON.parse(body);
153
+ res.writeHead(200, { 'Content-Type': 'application/json' });
154
+ res.end(
155
+ JSON.stringify({
156
+ jsonrpc: '2.0',
157
+ id: request.id,
158
+ result: { id: 'task-002', status: { state: 'completed' }, messages: [] },
159
+ }),
160
+ );
161
+ });
162
+ });
163
+ await new Promise<void>((resolve) => {
164
+ mockServer.listen(port, () => resolve());
165
+ });
166
+
167
+ const bridge = new A2ABridge(
168
+ mockRelayConfig,
169
+ `http://localhost:${port}`,
170
+ 'proxy',
171
+ );
172
+ const response = await bridge.sendA2AMessage('hello');
173
+ expect(response).toBeNull();
174
+ });
175
+ });
176
+
177
+ describe('integration with A2AServer', () => {
178
+ let a2aServer: A2AServer;
179
+ beforeEach(async () => {
180
+ a2aServer = new A2AServer('billing-specialist', 0, '0.0.0.0', [
181
+ { id: 'billing', name: 'Billing', description: 'Handles billing queries' },
182
+ ]);
183
+ a2aServer.onMessage(async (msg) => {
184
+ const text = msg.parts.find((p) => p.text)?.text ?? '';
185
+ return {
186
+ role: 'agent' as const,
187
+ parts: [{ text: `Processed: ${text}` }],
188
+ };
189
+ });
190
+ await a2aServer.start();
191
+ });
192
+
193
+ afterEach(async () => {
194
+ await a2aServer.stop();
195
+ });
196
+
197
+ it('bridge discovers and communicates with A2AServer', async () => {
198
+ const bridge = new A2ABridge(
199
+ mockRelayConfig,
200
+ a2aServer.url,
201
+ 'billing-proxy',
202
+ );
203
+
204
+ const card = await bridge.discoverAgent();
205
+ expect(card.name).toBe('billing-specialist');
206
+
207
+ const response = await bridge.sendA2AMessage('Refund order #1042');
208
+ expect(response).toBe('Processed: Refund order #1042');
209
+ });
210
+ });
211
+ });