@agent-relay/sdk 3.2.3 → 3.2.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 (113) hide show
  1. package/dist/communicate/a2a-bridge.d.ts +25 -0
  2. package/dist/communicate/a2a-bridge.d.ts.map +1 -0
  3. package/dist/communicate/a2a-bridge.js +89 -0
  4. package/dist/communicate/a2a-bridge.js.map +1 -0
  5. package/dist/communicate/a2a-server.d.ts +31 -0
  6. package/dist/communicate/a2a-server.d.ts.map +1 -0
  7. package/dist/communicate/a2a-server.js +220 -0
  8. package/dist/communicate/a2a-server.js.map +1 -0
  9. package/dist/communicate/a2a-transport.d.ts +48 -0
  10. package/dist/communicate/a2a-transport.d.ts.map +1 -0
  11. package/dist/communicate/a2a-transport.js +302 -0
  12. package/dist/communicate/a2a-transport.js.map +1 -0
  13. package/dist/communicate/a2a-types.d.ts +107 -0
  14. package/dist/communicate/a2a-types.d.ts.map +1 -0
  15. package/dist/communicate/a2a-types.js +209 -0
  16. package/dist/communicate/a2a-types.js.map +1 -0
  17. package/dist/communicate/adapters/claude-sdk.d.ts +28 -0
  18. package/dist/communicate/adapters/claude-sdk.d.ts.map +1 -0
  19. package/dist/communicate/adapters/claude-sdk.js +47 -0
  20. package/dist/communicate/adapters/claude-sdk.js.map +1 -0
  21. package/dist/communicate/adapters/crewai.d.ts +42 -0
  22. package/dist/communicate/adapters/crewai.d.ts.map +1 -0
  23. package/dist/communicate/adapters/crewai.js +95 -0
  24. package/dist/communicate/adapters/crewai.js.map +1 -0
  25. package/dist/communicate/adapters/google-adk.d.ts +53 -0
  26. package/dist/communicate/adapters/google-adk.d.ts.map +1 -0
  27. package/dist/communicate/adapters/google-adk.js +77 -0
  28. package/dist/communicate/adapters/google-adk.js.map +1 -0
  29. package/dist/communicate/adapters/index.d.ts +7 -0
  30. package/dist/communicate/adapters/index.d.ts.map +1 -0
  31. package/dist/communicate/adapters/index.js +7 -0
  32. package/dist/communicate/adapters/index.js.map +1 -0
  33. package/dist/communicate/adapters/langgraph.d.ts +40 -0
  34. package/dist/communicate/adapters/langgraph.d.ts.map +1 -0
  35. package/dist/communicate/adapters/langgraph.js +77 -0
  36. package/dist/communicate/adapters/langgraph.js.map +1 -0
  37. package/dist/communicate/adapters/openai-agents.d.ts +25 -0
  38. package/dist/communicate/adapters/openai-agents.d.ts.map +1 -0
  39. package/dist/communicate/adapters/openai-agents.js +70 -0
  40. package/dist/communicate/adapters/openai-agents.js.map +1 -0
  41. package/dist/communicate/adapters/pi.d.ts +45 -0
  42. package/dist/communicate/adapters/pi.d.ts.map +1 -0
  43. package/dist/communicate/adapters/pi.js +59 -0
  44. package/dist/communicate/adapters/pi.js.map +1 -0
  45. package/dist/communicate/core.d.ts +58 -0
  46. package/dist/communicate/core.d.ts.map +1 -0
  47. package/dist/communicate/core.js +128 -0
  48. package/dist/communicate/core.js.map +1 -0
  49. package/dist/communicate/index.d.ts +4 -0
  50. package/dist/communicate/index.d.ts.map +1 -0
  51. package/dist/communicate/index.js +4 -0
  52. package/dist/communicate/index.js.map +1 -0
  53. package/dist/communicate/transport.d.ts +36 -0
  54. package/dist/communicate/transport.d.ts.map +1 -0
  55. package/dist/communicate/transport.js +371 -0
  56. package/dist/communicate/transport.js.map +1 -0
  57. package/dist/communicate/types.d.ts +58 -0
  58. package/dist/communicate/types.d.ts.map +1 -0
  59. package/dist/communicate/types.js +66 -0
  60. package/dist/communicate/types.js.map +1 -0
  61. package/dist/models.d.ts +1 -1
  62. package/dist/models.d.ts.map +1 -1
  63. package/dist/models.js +2 -2
  64. package/dist/models.js.map +1 -1
  65. package/dist/workflows/builder.d.ts +35 -5
  66. package/dist/workflows/builder.d.ts.map +1 -1
  67. package/dist/workflows/builder.js +81 -7
  68. package/dist/workflows/builder.js.map +1 -1
  69. package/dist/workflows/cli.js +14 -1
  70. package/dist/workflows/cli.js.map +1 -1
  71. package/dist/workflows/runner.d.ts +10 -2
  72. package/dist/workflows/runner.d.ts.map +1 -1
  73. package/dist/workflows/runner.js +95 -1
  74. package/dist/workflows/runner.js.map +1 -1
  75. package/dist/workflows/types.d.ts +11 -0
  76. package/dist/workflows/types.d.ts.map +1 -1
  77. package/package.json +48 -2
  78. package/dist/__tests__/completion-pipeline.test.d.ts +0 -14
  79. package/dist/__tests__/completion-pipeline.test.d.ts.map +0 -1
  80. package/dist/__tests__/completion-pipeline.test.js +0 -1476
  81. package/dist/__tests__/completion-pipeline.test.js.map +0 -1
  82. package/dist/__tests__/contract-fixtures.test.d.ts +0 -2
  83. package/dist/__tests__/contract-fixtures.test.d.ts.map +0 -1
  84. package/dist/__tests__/contract-fixtures.test.js +0 -152
  85. package/dist/__tests__/contract-fixtures.test.js.map +0 -1
  86. package/dist/__tests__/e2e-owner-review.test.d.ts +0 -16
  87. package/dist/__tests__/e2e-owner-review.test.d.ts.map +0 -1
  88. package/dist/__tests__/e2e-owner-review.test.js +0 -640
  89. package/dist/__tests__/e2e-owner-review.test.js.map +0 -1
  90. package/dist/__tests__/facade.test.d.ts +0 -2
  91. package/dist/__tests__/facade.test.d.ts.map +0 -1
  92. package/dist/__tests__/facade.test.js +0 -305
  93. package/dist/__tests__/facade.test.js.map +0 -1
  94. package/dist/__tests__/integration.test.d.ts +0 -2
  95. package/dist/__tests__/integration.test.d.ts.map +0 -1
  96. package/dist/__tests__/integration.test.js +0 -205
  97. package/dist/__tests__/integration.test.js.map +0 -1
  98. package/dist/__tests__/pty.test.d.ts +0 -2
  99. package/dist/__tests__/pty.test.d.ts.map +0 -1
  100. package/dist/__tests__/pty.test.js +0 -20
  101. package/dist/__tests__/pty.test.js.map +0 -1
  102. package/dist/__tests__/quickstart.test.d.ts +0 -2
  103. package/dist/__tests__/quickstart.test.d.ts.map +0 -1
  104. package/dist/__tests__/quickstart.test.js +0 -176
  105. package/dist/__tests__/quickstart.test.js.map +0 -1
  106. package/dist/__tests__/spawn-from-env.test.d.ts +0 -2
  107. package/dist/__tests__/spawn-from-env.test.d.ts.map +0 -1
  108. package/dist/__tests__/spawn-from-env.test.js +0 -222
  109. package/dist/__tests__/spawn-from-env.test.js.map +0 -1
  110. package/dist/__tests__/unit.test.d.ts +0 -2
  111. package/dist/__tests__/unit.test.d.ts.map +0 -1
  112. package/dist/__tests__/unit.test.js +0 -357
  113. package/dist/__tests__/unit.test.js.map +0 -1
@@ -0,0 +1,28 @@
1
+ import { type Message } from '../types.js';
2
+ type HookResult = {
3
+ continue?: boolean;
4
+ systemMessage?: string;
5
+ };
6
+ type HookCallback = (...args: unknown[]) => Promise<HookResult>;
7
+ type HookMatcher = {
8
+ matcher?: string;
9
+ hooks: HookCallback[];
10
+ timeout?: number;
11
+ };
12
+ type ClaudeOptionsLike = {
13
+ mcpServers?: Record<string, unknown>;
14
+ hooks?: Partial<Record<'PostToolUse' | 'Stop', HookMatcher[]>>;
15
+ };
16
+ type RelayLike = {
17
+ inbox(): Promise<Message[]>;
18
+ };
19
+ /**
20
+ * Attach relay communication to Claude Agent SDK options via MCP server and hooks.
21
+ * @param _name - Agent name for relay registration.
22
+ * @param options - Claude SDK query options to augment.
23
+ * @param relay - Optional pre-configured Relay instance.
24
+ * @returns Augmented options with relaycast MCP server and inbox-draining hooks.
25
+ */
26
+ export declare function onRelay<TOptions extends ClaudeOptionsLike>(_name: string, options: TOptions, relay?: RelayLike): TOptions;
27
+ export {};
28
+ //# sourceMappingURL=claude-sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-sdk.d.ts","sourceRoot":"","sources":["../../../src/communicate/adapters/claude-sdk.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAE/D,KAAK,UAAU,GAAG;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,KAAK,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAEhE,KAAK,WAAW,GAAG;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;CAChE,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC7B,CAAC;AAwBF;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,QAAQ,SAAS,iBAAiB,EACxD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,QAAQ,EACjB,KAAK,GAAE,SAA4B,GAClC,QAAQ,CA0BV"}
@@ -0,0 +1,47 @@
1
+ import { Relay } from '../core.js';
2
+ import { formatRelayMessage } from '../types.js';
3
+ function appendHook(hooks, event, callback) {
4
+ const matchers = [...(hooks?.[event] ?? []), { hooks: [callback] }];
5
+ return {
6
+ ...hooks,
7
+ [event]: matchers,
8
+ };
9
+ }
10
+ async function drainInbox(relay) {
11
+ const messages = await relay.inbox();
12
+ if (messages.length === 0) {
13
+ return undefined;
14
+ }
15
+ return `New messages from other agents:\n${messages.map((message) => formatRelayMessage(message)).join('\n')}`;
16
+ }
17
+ /**
18
+ * Attach relay communication to Claude Agent SDK options via MCP server and hooks.
19
+ * @param _name - Agent name for relay registration.
20
+ * @param options - Claude SDK query options to augment.
21
+ * @param relay - Optional pre-configured Relay instance.
22
+ * @returns Augmented options with relaycast MCP server and inbox-draining hooks.
23
+ */
24
+ export function onRelay(_name, options, relay = new Relay(_name)) {
25
+ const mcpServers = {
26
+ ...(options.mcpServers ?? {}),
27
+ relaycast: {
28
+ command: 'agent-relay',
29
+ args: ['mcp'],
30
+ },
31
+ };
32
+ let hooks = options.hooks;
33
+ hooks = appendHook(hooks, 'PostToolUse', async () => {
34
+ const systemMessage = await drainInbox(relay);
35
+ return systemMessage ? { systemMessage } : {};
36
+ });
37
+ hooks = appendHook(hooks, 'Stop', async () => {
38
+ const systemMessage = await drainInbox(relay);
39
+ return systemMessage ? { continue: true, systemMessage } : {};
40
+ });
41
+ return {
42
+ ...options,
43
+ mcpServers,
44
+ hooks,
45
+ };
46
+ }
47
+ //# sourceMappingURL=claude-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-sdk.js","sourceRoot":"","sources":["../../../src/communicate/adapters/claude-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAgB,MAAM,aAAa,CAAC;AAwB/D,SAAS,UAAU,CACjB,KAAiC,EACjC,KAA6B,EAC7B,QAAsB;IAEtB,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEpE,OAAO;QACL,GAAG,KAAK;QACR,CAAC,KAAK,CAAC,EAAE,QAAQ;KAClB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,KAAgB;IACxC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACrC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,oCAAoC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACjH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CACrB,KAAa,EACb,OAAiB,EACjB,QAAmB,IAAI,KAAK,CAAC,KAAK,CAAC;IAEnC,MAAM,UAAU,GAAG;QACjB,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;QAC7B,SAAS,EAAE;YACT,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,CAAC,KAAK,CAAC;SACd;KACF,CAAC;IAEF,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAE1B,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,OAAO;QACV,UAAU;QACV,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { type Message, type MessageCallback } from '../types.js';
2
+ type CrewAIAgentLike = {
3
+ role: string;
4
+ tools: any[];
5
+ step_callback?: ((step: any) => void) | null;
6
+ };
7
+ type CrewAICrewLike = {
8
+ agents: CrewAIAgentLike[];
9
+ task_callback?: ((output: any) => void) | null;
10
+ };
11
+ type RelayLike = {
12
+ send(to: string, text: string): Promise<void>;
13
+ post(channel: string, text: string): Promise<void>;
14
+ inbox(): Promise<Message[]>;
15
+ agents(): Promise<string[]>;
16
+ onMessage(callback: MessageCallback): () => void;
17
+ };
18
+ /**
19
+ * Attach relay communication tools and message routing to a CrewAI Agent.
20
+ *
21
+ * Adds relay tools to the agent's `tools` array and installs a `step_callback`
22
+ * that receives incoming relay messages.
23
+ *
24
+ * @param agent - A CrewAI Agent instance (or duck-typed equivalent).
25
+ * @param relay - Optional pre-configured Relay instance.
26
+ * @returns Object with an `unsubscribe` function to stop message routing.
27
+ */
28
+ export declare function onRelay(agent: CrewAIAgentLike, relay?: RelayLike): {
29
+ unsubscribe: () => void;
30
+ };
31
+ /**
32
+ * Attach relay communication tools to all agents in a CrewAI Crew.
33
+ *
34
+ * @param crew - A CrewAI Crew instance (or duck-typed equivalent).
35
+ * @param relay - Optional pre-configured Relay instance.
36
+ * @returns Object with an `unsubscribe` function to stop all message routing.
37
+ */
38
+ export declare function onCrewRelay(crew: CrewAICrewLike, relay?: RelayLike): {
39
+ unsubscribe: () => void;
40
+ };
41
+ export {};
42
+ //# sourceMappingURL=crewai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crewai.d.ts","sourceRoot":"","sources":["../../../src/communicate/adapters/crewai.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAavG,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CAC9C,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5B,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5B,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI,CAAC;CAClD,CAAC;AAqCF;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,eAAe,EACtB,KAAK,CAAC,EAAE,SAAS,GAChB;IAAE,WAAW,EAAE,MAAM,IAAI,CAAA;CAAE,CAgC7B;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,cAAc,EACpB,KAAK,CAAC,EAAE,SAAS,GAChB;IAAE,WAAW,EAAE,MAAM,IAAI,CAAA;CAAE,CAe7B"}
@@ -0,0 +1,95 @@
1
+ import { Relay } from '../core.js';
2
+ import { formatRelayInbox, formatRelayMessage } from '../types.js';
3
+ function createRelayTools(relay) {
4
+ return [
5
+ {
6
+ tool_name: 'relay_send',
7
+ description: 'Send a direct message to another relay agent.',
8
+ async execute(args) {
9
+ await relay.send(args.to, args.text);
10
+ return `Sent relay message to ${args.to}.`;
11
+ },
12
+ },
13
+ {
14
+ tool_name: 'relay_inbox',
15
+ description: 'Drain and inspect newly received relay messages.',
16
+ async execute() {
17
+ return formatRelayInbox(await relay.inbox());
18
+ },
19
+ },
20
+ {
21
+ tool_name: 'relay_post',
22
+ description: 'Post a message to a relay channel.',
23
+ async execute(args) {
24
+ await relay.post(args.channel, args.text);
25
+ return `Posted relay message to #${args.channel}.`;
26
+ },
27
+ },
28
+ {
29
+ tool_name: 'relay_agents',
30
+ description: 'List currently online relay agents.',
31
+ async execute() {
32
+ return (await relay.agents()).join('\n');
33
+ },
34
+ },
35
+ ];
36
+ }
37
+ /**
38
+ * Attach relay communication tools and message routing to a CrewAI Agent.
39
+ *
40
+ * Adds relay tools to the agent's `tools` array and installs a `step_callback`
41
+ * that receives incoming relay messages.
42
+ *
43
+ * @param agent - A CrewAI Agent instance (or duck-typed equivalent).
44
+ * @param relay - Optional pre-configured Relay instance.
45
+ * @returns Object with an `unsubscribe` function to stop message routing.
46
+ */
47
+ export function onRelay(agent, relay) {
48
+ const relayInstance = relay ?? new Relay(agent.role);
49
+ const relayTools = createRelayTools(relayInstance);
50
+ // Append relay tools to agent's tools array
51
+ for (const tool of relayTools) {
52
+ agent.tools.push(tool);
53
+ }
54
+ // Install message routing via step_callback
55
+ const originalCallback = agent.step_callback;
56
+ const unsubscribe = relayInstance.onMessage(async (message) => {
57
+ const formatted = formatRelayMessage(message);
58
+ // Route relay messages through the original callback if one exists
59
+ if (originalCallback) {
60
+ originalCallback({ relay_message: formatted });
61
+ }
62
+ });
63
+ // Compose original callback with relay step forwarding
64
+ if (originalCallback) {
65
+ agent.step_callback = (step) => {
66
+ // Forward non-relay steps to original callback
67
+ if (!step?.relay_message) {
68
+ originalCallback(step);
69
+ }
70
+ };
71
+ }
72
+ return { unsubscribe };
73
+ }
74
+ /**
75
+ * Attach relay communication tools to all agents in a CrewAI Crew.
76
+ *
77
+ * @param crew - A CrewAI Crew instance (or duck-typed equivalent).
78
+ * @param relay - Optional pre-configured Relay instance.
79
+ * @returns Object with an `unsubscribe` function to stop all message routing.
80
+ */
81
+ export function onCrewRelay(crew, relay) {
82
+ const unsubscribers = [];
83
+ for (const agent of crew.agents) {
84
+ const result = onRelay(agent, relay);
85
+ unsubscribers.push(result.unsubscribe);
86
+ }
87
+ return {
88
+ unsubscribe() {
89
+ for (const unsub of unsubscribers) {
90
+ unsub();
91
+ }
92
+ },
93
+ };
94
+ }
95
+ //# sourceMappingURL=crewai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crewai.js","sourceRoot":"","sources":["../../../src/communicate/adapters/crewai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { type Message, type MessageCallback } from '../types.js';
2
+ type FunctionToolLike = {
3
+ name: string;
4
+ description: string;
5
+ };
6
+ type ToolUnionLike = FunctionToolLike;
7
+ type RunnerLike = {
8
+ runAsync(params: {
9
+ userId: string;
10
+ sessionId: string;
11
+ newMessage: {
12
+ role: string;
13
+ parts: Array<{
14
+ text: string;
15
+ }>;
16
+ };
17
+ }): AsyncGenerator<unknown, void, undefined>;
18
+ };
19
+ type LlmAgentLike = {
20
+ name: string;
21
+ tools: ToolUnionLike[];
22
+ };
23
+ type RelayLike = {
24
+ send(to: string, text: string): Promise<void>;
25
+ post(channel: string, text: string): Promise<void>;
26
+ inbox(): Promise<Message[]>;
27
+ agents(): Promise<string[]>;
28
+ onMessage(callback: MessageCallback): () => void;
29
+ };
30
+ interface GoogleAdkRelayOptions {
31
+ /** Google ADK LlmAgent instance. */
32
+ agent: LlmAgentLike;
33
+ /** Optional Runner for routing incoming messages to the agent. */
34
+ runner?: RunnerLike;
35
+ /** User ID for runner sessions. Defaults to 'relay'. */
36
+ userId?: string;
37
+ /** Session ID for runner sessions. Defaults to 'relay-session'. */
38
+ sessionId?: string;
39
+ }
40
+ /**
41
+ * Attach relay communication tools and message routing to a Google ADK agent.
42
+ * @param name - Agent name for relay registration.
43
+ * @param options - Google ADK agent and optional runner configuration.
44
+ * @param relay - Optional pre-configured Relay instance.
45
+ * @returns Object with the augmented agent, an unsubscribe function, and the relay tools added.
46
+ */
47
+ export declare function onRelay(name: string, options: GoogleAdkRelayOptions, relay?: RelayLike): {
48
+ agent: LlmAgentLike;
49
+ tools: FunctionToolLike[];
50
+ unsubscribe: () => void;
51
+ };
52
+ export {};
53
+ //# sourceMappingURL=google-adk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-adk.d.ts","sourceRoot":"","sources":["../../../src/communicate/adapters/google-adk.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAQvG,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,aAAa,GAAG,gBAAgB,CAAC;AAEtC,KAAK,UAAU,GAAG;IAChB,QAAQ,CAAC,MAAM,EAAE;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC;KAC9D,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;CAC9C,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5B,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5B,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI,CAAC;CAClD,CAAC;AAEF,UAAU,qBAAqB;IAC7B,oCAAoC;IACpC,KAAK,EAAE,YAAY,CAAC;IACpB,kEAAkE;IAClE,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwDD;;;;;;GAMG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,qBAAqB,EAC9B,KAAK,GAAE,SAA2B,GACjC;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,IAAI,CAAA;CAAE,CAyB7E"}
@@ -0,0 +1,77 @@
1
+ import { Relay } from '../core.js';
2
+ import { formatRelayInbox, formatRelayMessage } from '../types.js';
3
+ /**
4
+ * Create a FunctionTool-shaped object for Google ADK.
5
+ * We construct the tool objects duck-typed to avoid importing the actual
6
+ * FunctionTool class (which requires @google/genai at runtime).
7
+ */
8
+ function createRelayFunctionTools(relay) {
9
+ // We dynamically import FunctionTool to create real ADK tool instances
10
+ // For now, we build tool-like objects that match the FunctionTool constructor shape
11
+ // and lazily construct them.
12
+ const toolDefs = [
13
+ {
14
+ name: 'relay_send',
15
+ description: 'Send a direct message to another relay agent.',
16
+ parameters: { type: 'object', properties: { to: { type: 'string' }, text: { type: 'string' } }, required: ['to', 'text'] },
17
+ async execute(input) {
18
+ await relay.send(input.to, input.text);
19
+ return { result: `Sent relay message to ${input.to}.` };
20
+ },
21
+ },
22
+ {
23
+ name: 'relay_inbox',
24
+ description: 'Drain and inspect newly received relay messages.',
25
+ parameters: { type: 'object', properties: {}, required: [] },
26
+ async execute() {
27
+ return { result: formatRelayInbox(await relay.inbox()) };
28
+ },
29
+ },
30
+ {
31
+ name: 'relay_post',
32
+ description: 'Post a message to a relay channel.',
33
+ parameters: { type: 'object', properties: { channel: { type: 'string' }, text: { type: 'string' } }, required: ['channel', 'text'] },
34
+ async execute(input) {
35
+ await relay.post(input.channel, input.text);
36
+ return { result: `Posted relay message to #${input.channel}.` };
37
+ },
38
+ },
39
+ {
40
+ name: 'relay_agents',
41
+ description: 'List currently online relay agents.',
42
+ parameters: { type: 'object', properties: {}, required: [] },
43
+ async execute() {
44
+ return { result: (await relay.agents()).join('\n') };
45
+ },
46
+ },
47
+ ];
48
+ return toolDefs;
49
+ }
50
+ /**
51
+ * Attach relay communication tools and message routing to a Google ADK agent.
52
+ * @param name - Agent name for relay registration.
53
+ * @param options - Google ADK agent and optional runner configuration.
54
+ * @param relay - Optional pre-configured Relay instance.
55
+ * @returns Object with the augmented agent, an unsubscribe function, and the relay tools added.
56
+ */
57
+ export function onRelay(name, options, relay = new Relay(name)) {
58
+ const { agent, runner, userId = 'relay', sessionId = 'relay-session' } = options;
59
+ const relayTools = createRelayFunctionTools(relay);
60
+ // Append relay tools to the agent's tool list
61
+ for (const tool of relayTools) {
62
+ agent.tools.push(tool);
63
+ }
64
+ let unsubscribe = () => { };
65
+ if (runner) {
66
+ unsubscribe = relay.onMessage(async (message) => {
67
+ const prompt = formatRelayMessage(message);
68
+ const content = { role: 'user', parts: [{ text: prompt }] };
69
+ // Drain the async generator to completion
70
+ for await (const _event of runner.runAsync({ userId, sessionId, newMessage: content })) {
71
+ // Events are consumed; the agent handles them internally.
72
+ }
73
+ });
74
+ }
75
+ return { agent, tools: relayTools, unsubscribe };
76
+ }
77
+ //# sourceMappingURL=google-adk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-adk.js","sourceRoot":"","sources":["../../../src/communicate/adapters/google-adk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { onRelay as onPiRelay } from './pi.js';
2
+ export { onRelay as onClaudeRelay } from './claude-sdk.js';
3
+ export { onRelay as onCrewAIRelay, onCrewRelay } from './crewai.js';
4
+ export { onRelay as onOpenAIAgentsRelay } from './openai-agents.js';
5
+ export { onRelay as onLangGraphRelay } from './langgraph.js';
6
+ export { onRelay as onGoogleAdkRelay } from './google-adk.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/communicate/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { onRelay as onPiRelay } from './pi.js';
2
+ export { onRelay as onClaudeRelay } from './claude-sdk.js';
3
+ export { onRelay as onCrewAIRelay, onCrewRelay } from './crewai.js';
4
+ export { onRelay as onOpenAIAgentsRelay } from './openai-agents.js';
5
+ export { onRelay as onLangGraphRelay } from './langgraph.js';
6
+ export { onRelay as onGoogleAdkRelay } from './google-adk.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/communicate/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { type Message, type MessageCallback } from '../types.js';
2
+ /** Minimal shape of a LangGraph CompiledStateGraph for relay integration. */
3
+ type CompiledGraphLike = {
4
+ invoke(input: Record<string, unknown>, config?: Record<string, unknown>): Promise<Record<string, unknown>>;
5
+ nodes: Record<string, unknown>;
6
+ };
7
+ type RelayLike = {
8
+ send(to: string, text: string): Promise<void>;
9
+ post(channel: string, text: string): Promise<void>;
10
+ inbox(): Promise<Message[]>;
11
+ agents(): Promise<string[]>;
12
+ onMessage(callback: MessageCallback): () => void;
13
+ };
14
+ /** A tool definition compatible with LangGraph ToolNode. */
15
+ export interface RelayToolDef {
16
+ name: string;
17
+ description: string;
18
+ schema: Record<string, unknown>;
19
+ invoke(input: Record<string, string>): Promise<string>;
20
+ }
21
+ export interface LangGraphRelayResult {
22
+ /** Relay tool definitions to pass to a LangGraph ToolNode. */
23
+ tools: RelayToolDef[];
24
+ /** Unsubscribe from incoming relay messages. */
25
+ unsubscribe: () => void;
26
+ }
27
+ /**
28
+ * Attach relay communication tools and message routing to a LangGraph compiled graph.
29
+ *
30
+ * Tools are returned as objects compatible with LangGraph's ToolNode. Incoming
31
+ * relay messages are routed into the graph via `graph.invoke()` with a
32
+ * `messages` state update.
33
+ *
34
+ * @param graph - A compiled LangGraph state graph.
35
+ * @param relayOrName - Optional pre-configured Relay instance or agent name string (defaults to 'langgraph').
36
+ * @returns Relay tools and an unsubscribe handle.
37
+ */
38
+ export declare function onRelay(graph: CompiledGraphLike, relayOrName?: RelayLike | string): LangGraphRelayResult;
39
+ export {};
40
+ //# sourceMappingURL=langgraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langgraph.d.ts","sourceRoot":"","sources":["../../../src/communicate/adapters/langgraph.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEvG,6EAA6E;AAC7E,KAAK,iBAAiB,GAAG;IACvB,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3G,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5B,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5B,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI,CAAC;CAClD,CAAC;AAEF,4DAA4D;AAC5D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxD;AAuDD,MAAM,WAAW,oBAAoB;IACnC,8DAA8D;IAC9D,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,gDAAgD;IAChD,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,iBAAiB,EACxB,WAAW,CAAC,EAAE,SAAS,GAAG,MAAM,GAC/B,oBAAoB,CAYtB"}
@@ -0,0 +1,77 @@
1
+ import { Relay } from '../core.js';
2
+ import { formatRelayInbox, formatRelayMessage } from '../types.js';
3
+ function createRelayTools(relay) {
4
+ return [
5
+ {
6
+ name: 'relay_send',
7
+ description: 'Send a direct message to another relay agent.',
8
+ schema: {
9
+ type: 'object',
10
+ properties: {
11
+ to: { type: 'string', description: 'Recipient agent name' },
12
+ text: { type: 'string', description: 'Message text' },
13
+ },
14
+ required: ['to', 'text'],
15
+ },
16
+ async invoke(input) {
17
+ await relay.send(input.to, input.text);
18
+ return `Sent relay message to ${input.to}.`;
19
+ },
20
+ },
21
+ {
22
+ name: 'relay_inbox',
23
+ description: 'Drain and inspect newly received relay messages.',
24
+ schema: { type: 'object', properties: {}, required: [] },
25
+ async invoke() {
26
+ return formatRelayInbox(await relay.inbox());
27
+ },
28
+ },
29
+ {
30
+ name: 'relay_post',
31
+ description: 'Post a message to a relay channel.',
32
+ schema: {
33
+ type: 'object',
34
+ properties: {
35
+ channel: { type: 'string', description: 'Channel name' },
36
+ text: { type: 'string', description: 'Message text' },
37
+ },
38
+ required: ['channel', 'text'],
39
+ },
40
+ async invoke(input) {
41
+ await relay.post(input.channel, input.text);
42
+ return `Posted relay message to #${input.channel}.`;
43
+ },
44
+ },
45
+ {
46
+ name: 'relay_agents',
47
+ description: 'List currently online relay agents.',
48
+ schema: { type: 'object', properties: {}, required: [] },
49
+ async invoke() {
50
+ return (await relay.agents()).join('\n');
51
+ },
52
+ },
53
+ ];
54
+ }
55
+ /**
56
+ * Attach relay communication tools and message routing to a LangGraph compiled graph.
57
+ *
58
+ * Tools are returned as objects compatible with LangGraph's ToolNode. Incoming
59
+ * relay messages are routed into the graph via `graph.invoke()` with a
60
+ * `messages` state update.
61
+ *
62
+ * @param graph - A compiled LangGraph state graph.
63
+ * @param relayOrName - Optional pre-configured Relay instance or agent name string (defaults to 'langgraph').
64
+ * @returns Relay tools and an unsubscribe handle.
65
+ */
66
+ export function onRelay(graph, relayOrName) {
67
+ const r = typeof relayOrName === 'string'
68
+ ? new Relay(relayOrName)
69
+ : relayOrName ?? new Relay('langgraph');
70
+ const tools = createRelayTools(r);
71
+ const unsubscribe = r.onMessage(async (message) => {
72
+ const prompt = formatRelayMessage(message);
73
+ await graph.invoke({ messages: [{ role: 'user', content: prompt }] });
74
+ });
75
+ return { tools, unsubscribe };
76
+ }
77
+ //# sourceMappingURL=langgraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langgraph.js","sourceRoot":"","sources":["../../../src/communicate/adapters/langgraph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type Message, type MessageCallback } from '../types.js';
2
+ type RelayLike = {
3
+ send(to: string, text: string): Promise<void>;
4
+ post(channel: string, text: string): Promise<void>;
5
+ inbox(): Promise<Message[]>;
6
+ agents(): Promise<string[]>;
7
+ onMessage(callback: MessageCallback): () => void;
8
+ };
9
+ type AgentLike = {
10
+ name: string;
11
+ instructions: string | ((...args: unknown[]) => string | Promise<string>);
12
+ tools: unknown[];
13
+ };
14
+ /**
15
+ * Attach relay communication tools and message routing to an OpenAI Agent.
16
+ * @param agent - OpenAI Agent instance to augment with relay tools.
17
+ * @param relay - Optional pre-configured Relay instance.
18
+ * @returns Object with the augmented agent and a cleanup function.
19
+ */
20
+ export declare function onRelay<TAgent extends AgentLike>(agent: TAgent, relay?: RelayLike): {
21
+ agent: TAgent;
22
+ cleanup: () => void;
23
+ };
24
+ export {};
25
+ //# sourceMappingURL=openai-agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-agents.d.ts","sourceRoot":"","sources":["../../../src/communicate/adapters/openai-agents.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEvG,KAAK,SAAS,GAAG;IACf,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5B,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5B,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI,CAAC;CAClD,CAAC;AAoBF,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB,CAAC;AAqCF;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,MAAM,SAAS,SAAS,EAC9C,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,SAAiC,GACvC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAiCxC"}
@@ -0,0 +1,70 @@
1
+ import { Relay } from '../core.js';
2
+ import { formatRelayInbox, formatRelayMessage } from '../types.js';
3
+ function schema(props, required) {
4
+ return { type: 'object', properties: props, required, additionalProperties: false };
5
+ }
6
+ function createRelayTools(relay) {
7
+ const defs = [
8
+ ['relay_send', 'Send a direct message to another relay agent.',
9
+ schema({ to: { type: 'string' }, text: { type: 'string' } }, ['to', 'text']),
10
+ async (p) => { await relay.send(p.to, p.text); return `Sent relay message to ${p.to}.`; }],
11
+ ['relay_inbox', 'Drain and inspect newly received relay messages.',
12
+ schema({}, []),
13
+ async () => formatRelayInbox(await relay.inbox())],
14
+ ['relay_post', 'Post a message to a relay channel.',
15
+ schema({ channel: { type: 'string' }, text: { type: 'string' } }, ['channel', 'text']),
16
+ async (p) => { await relay.post(p.channel, p.text); return `Posted relay message to #${p.channel}.`; }],
17
+ ['relay_agents', 'List currently online relay agents.',
18
+ schema({}, []),
19
+ async () => (await relay.agents()).join('\n')],
20
+ ];
21
+ return defs.map(([name, description, parameters, run]) => ({
22
+ type: 'function',
23
+ name,
24
+ description,
25
+ parameters,
26
+ strict: false,
27
+ needsApproval: false,
28
+ isEnabled: true,
29
+ async invoke(_runContext, input) {
30
+ const params = input ? JSON.parse(input) : {};
31
+ return run(params);
32
+ },
33
+ }));
34
+ }
35
+ /**
36
+ * Attach relay communication tools and message routing to an OpenAI Agent.
37
+ * @param agent - OpenAI Agent instance to augment with relay tools.
38
+ * @param relay - Optional pre-configured Relay instance.
39
+ * @returns Object with the augmented agent and a cleanup function.
40
+ */
41
+ export function onRelay(agent, relay = new Relay(agent.name)) {
42
+ const relayTools = createRelayTools(relay);
43
+ agent.tools = [...agent.tools, ...relayTools];
44
+ const pendingMessages = [];
45
+ const originalInstructions = agent.instructions;
46
+ const unsubscribe = relay.onMessage(async (message) => {
47
+ pendingMessages.push(formatRelayMessage(message));
48
+ });
49
+ agent.instructions = async (...args) => {
50
+ let base;
51
+ if (typeof originalInstructions === 'function') {
52
+ base = await originalInstructions(...args);
53
+ }
54
+ else {
55
+ base = originalInstructions ?? '';
56
+ }
57
+ if (pendingMessages.length > 0) {
58
+ const msgs = pendingMessages.splice(0, pendingMessages.length);
59
+ return `${base}\n\n--- Relay Messages ---\n${msgs.join('\n')}`;
60
+ }
61
+ return base;
62
+ };
63
+ const cleanup = () => {
64
+ unsubscribe();
65
+ agent.instructions = originalInstructions;
66
+ agent.tools = agent.tools.filter((t) => !relayTools.includes(t));
67
+ };
68
+ return { agent, cleanup };
69
+ }
70
+ //# sourceMappingURL=openai-agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-agents.js","sourceRoot":"","sources":["../../../src/communicate/adapters/openai-agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAsC,MAAM,aAAa,CAAC;AAkCvG,SAAS,MAAM,CAAC,KAA8C,EAAE,QAAkB;IAChF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;AACtF,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAgB;IACxC,MAAM,IAAI,GAA8F;QACtG,CAAC,YAAY,EAAE,+CAA+C;YAC5D,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5E,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,yBAAyB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5F,CAAC,aAAa,EAAE,kDAAkD;YAChE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;YACd,KAAK,IAAI,EAAE,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC,YAAY,EAAE,oCAAoC;YACjD,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACtF,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,4BAA4B,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QACzG,CAAC,cAAc,EAAE,qCAAqC;YACpD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;YACd,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjD,CAAC;IAEF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,EAAE,UAAmB;QACzB,IAAI;QACJ,WAAW;QACX,UAAU;QACV,MAAM,EAAE,KAAK;QACb,aAAa,EAAE,KAAc;QAC7B,SAAS,EAAE,IAAa;QACxB,KAAK,CAAC,MAAM,CAAC,WAAoB,EAAE,KAAa;YAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CACrB,KAAa,EACb,QAAmB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;IAExC,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC3C,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,CAAC;IAE9C,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,MAAM,oBAAoB,GAAG,KAAK,CAAC,YAAY,CAAC;IAEhD,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACpD,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,YAAY,GAAG,KAAK,EAAE,GAAG,IAAe,EAAmB,EAAE;QACjE,IAAI,IAAY,CAAC;QACjB,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE,CAAC;YAC/C,IAAI,GAAG,MAAM,oBAAoB,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,oBAAoB,IAAI,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;YAC/D,OAAO,GAAG,IAAI,+BAA+B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,WAAW,EAAE,CAAC;QACd,KAAK,CAAC,YAAY,GAAG,oBAAoB,CAAC;QAC1C,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAqB,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC"}