network-ai 4.0.16 → 4.1.0
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.
- package/README.md +152 -64
- package/dist/adapters/a2a-adapter.d.ts +152 -0
- package/dist/adapters/a2a-adapter.d.ts.map +1 -0
- package/dist/adapters/a2a-adapter.js +235 -0
- package/dist/adapters/a2a-adapter.js.map +1 -0
- package/dist/adapters/custom-streaming-adapter.d.ts +68 -0
- package/dist/adapters/custom-streaming-adapter.d.ts.map +1 -0
- package/dist/adapters/custom-streaming-adapter.js +181 -0
- package/dist/adapters/custom-streaming-adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +7 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +12 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/langchain-streaming-adapter.d.ts +48 -0
- package/dist/adapters/langchain-streaming-adapter.d.ts.map +1 -0
- package/dist/adapters/langchain-streaming-adapter.js +161 -0
- package/dist/adapters/langchain-streaming-adapter.js.map +1 -0
- package/dist/adapters/streaming-base-adapter.d.ts +42 -0
- package/dist/adapters/streaming-base-adapter.d.ts.map +1 -0
- package/dist/adapters/streaming-base-adapter.js +68 -0
- package/dist/adapters/streaming-base-adapter.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -2
- package/dist/index.js.map +1 -1
- package/dist/run.js +1 -0
- package/dist/run.js.map +1 -1
- package/package.json +6 -4
- package/types/streaming-adapter.d.ts +63 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* A2AAdapter — Agent-to-Agent (A2A) protocol adapter.
|
|
4
|
+
*
|
|
5
|
+
* Implements the Google A2A (Agent-to-Agent) open protocol that lets
|
|
6
|
+
* independently hosted agents discover each other through a standard
|
|
7
|
+
* Agent Card (/.well-known/agent.json) and exchange tasks via a
|
|
8
|
+
* JSON-RPC envelope posted to the agent's task endpoint.
|
|
9
|
+
*
|
|
10
|
+
* References:
|
|
11
|
+
* https://google.github.io/A2A/
|
|
12
|
+
* https://github.com/google/A2A
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
*
|
|
16
|
+
* const adapter = new A2AAdapter();
|
|
17
|
+
* await adapter.initialize({});
|
|
18
|
+
*
|
|
19
|
+
* // Register a remote agent by its Agent Card URL
|
|
20
|
+
* await adapter.registerRemoteAgent('remote-analyst', 'https://agent.example.com');
|
|
21
|
+
*
|
|
22
|
+
* // Or register a local agent that serves an A2A-compliant card
|
|
23
|
+
* adapter.registerLocalA2AAgent('local-writer', {
|
|
24
|
+
* name: 'Writing Agent',
|
|
25
|
+
* description: 'Draft documents given a topic',
|
|
26
|
+
* version: '1.0',
|
|
27
|
+
* capabilities: { streaming: false },
|
|
28
|
+
* taskEndpoint: 'https://writer.internal/tasks',
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* await registry.addAdapter(adapter);
|
|
32
|
+
*
|
|
33
|
+
* // In the orchestrator:
|
|
34
|
+
* delegateTask({ targetAgent: 'a2a:remote-analyst', ... })
|
|
35
|
+
*
|
|
36
|
+
* @module A2AAdapter
|
|
37
|
+
* @version 1.0.0
|
|
38
|
+
*/
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.A2AAdapter = void 0;
|
|
41
|
+
const base_adapter_1 = require("./base-adapter");
|
|
42
|
+
class A2AAdapter extends base_adapter_1.BaseAdapter {
|
|
43
|
+
name = 'a2a';
|
|
44
|
+
version = '1.0.0';
|
|
45
|
+
a2aAgents = new Map();
|
|
46
|
+
defaultBearerToken;
|
|
47
|
+
defaultTimeoutMs = 30_000;
|
|
48
|
+
fetchImpl = globalThis.fetch;
|
|
49
|
+
get capabilities() {
|
|
50
|
+
return {
|
|
51
|
+
streaming: false,
|
|
52
|
+
parallel: true,
|
|
53
|
+
bidirectional: false,
|
|
54
|
+
discovery: true,
|
|
55
|
+
authentication: true,
|
|
56
|
+
statefulSessions: false,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async initialize(config) {
|
|
60
|
+
await super.initialize(config);
|
|
61
|
+
if (config.defaultBearerToken)
|
|
62
|
+
this.defaultBearerToken = config.defaultBearerToken;
|
|
63
|
+
if (config.defaultTimeoutMs)
|
|
64
|
+
this.defaultTimeoutMs = config.defaultTimeoutMs;
|
|
65
|
+
if (config.fetchImpl)
|
|
66
|
+
this.fetchImpl = config.fetchImpl;
|
|
67
|
+
}
|
|
68
|
+
// ── Registration ────────────────────────────────────────────────────────────
|
|
69
|
+
/**
|
|
70
|
+
* Fetch the Agent Card from `<baseUrl>/.well-known/agent.json` and register
|
|
71
|
+
* the remote agent for use in the orchestrator.
|
|
72
|
+
*
|
|
73
|
+
* @param agentId - Local identifier (used in `delegate_task` calls)
|
|
74
|
+
* @param baseUrl - Root URL of the remote A2A-compliant agent server
|
|
75
|
+
* @param options - Optional bearer token / timeout override
|
|
76
|
+
*/
|
|
77
|
+
async registerRemoteAgent(agentId, baseUrl, options) {
|
|
78
|
+
const url = baseUrl.replace(/\/$/, '');
|
|
79
|
+
const card = await this.fetchAgentCard(url, options?.bearerToken ?? this.defaultBearerToken);
|
|
80
|
+
const taskEndpoint = card.taskEndpoint ??
|
|
81
|
+
(card.url ? `${card.url.replace(/\/$/, '')}/tasks` : `${url}/tasks`);
|
|
82
|
+
this.a2aAgents.set(agentId, {
|
|
83
|
+
baseUrl: url,
|
|
84
|
+
card,
|
|
85
|
+
taskEndpoint,
|
|
86
|
+
bearerToken: options?.bearerToken ?? this.defaultBearerToken,
|
|
87
|
+
timeoutMs: options?.timeoutMs ?? this.defaultTimeoutMs,
|
|
88
|
+
});
|
|
89
|
+
this.registerLocalAgent({
|
|
90
|
+
id: agentId,
|
|
91
|
+
name: card.name,
|
|
92
|
+
description: card.description ?? `Remote A2A agent at ${url}`,
|
|
93
|
+
capabilities: card.capabilities
|
|
94
|
+
? Object.keys(card.capabilities).filter(k => card.capabilities[k] === true)
|
|
95
|
+
: undefined,
|
|
96
|
+
status: 'available',
|
|
97
|
+
metadata: { a2aBaseUrl: url, taskEndpoint },
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Register a local A2A agent whose card you already have (no network fetch).
|
|
102
|
+
* Useful when the card is embedded in config or returned from another service.
|
|
103
|
+
*/
|
|
104
|
+
registerLocalA2AAgent(agentId, card, options) {
|
|
105
|
+
this.a2aAgents.set(agentId, {
|
|
106
|
+
baseUrl: card.url ?? '',
|
|
107
|
+
card,
|
|
108
|
+
taskEndpoint: card.taskEndpoint,
|
|
109
|
+
bearerToken: options?.bearerToken ?? this.defaultBearerToken,
|
|
110
|
+
timeoutMs: options?.timeoutMs ?? this.defaultTimeoutMs,
|
|
111
|
+
});
|
|
112
|
+
this.registerLocalAgent({
|
|
113
|
+
id: agentId,
|
|
114
|
+
name: card.name,
|
|
115
|
+
description: card.description ?? `Local A2A agent: ${agentId}`,
|
|
116
|
+
capabilities: card.capabilities
|
|
117
|
+
? Object.keys(card.capabilities).filter(k => card.capabilities[k] === true)
|
|
118
|
+
: undefined,
|
|
119
|
+
status: 'available',
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
// ── Execution ───────────────────────────────────────────────────────────────
|
|
123
|
+
async executeAgent(agentId, payload, context) {
|
|
124
|
+
this.ensureReady();
|
|
125
|
+
const config = this.a2aAgents.get(agentId);
|
|
126
|
+
if (!config) {
|
|
127
|
+
return this.errorResult('AGENT_NOT_FOUND', `A2A agent "${agentId}" is not registered. Call registerRemoteAgent() or registerLocalA2AAgent() first.`, false);
|
|
128
|
+
}
|
|
129
|
+
const startTime = Date.now();
|
|
130
|
+
// Build the task instruction from the handoff payload
|
|
131
|
+
const instruction = payload.handoff?.instruction ??
|
|
132
|
+
(payload.params ? JSON.stringify(payload.params) : 'No instruction provided');
|
|
133
|
+
const taskId = `${context.taskId ?? 'task'}-${Date.now()}`;
|
|
134
|
+
const taskEnvelope = {
|
|
135
|
+
jsonrpc: '2.0',
|
|
136
|
+
id: taskId,
|
|
137
|
+
method: 'tasks/send',
|
|
138
|
+
params: {
|
|
139
|
+
id: taskId,
|
|
140
|
+
message: {
|
|
141
|
+
role: 'user',
|
|
142
|
+
parts: [{ type: 'text', text: instruction }],
|
|
143
|
+
},
|
|
144
|
+
metadata: {
|
|
145
|
+
sourceAgent: context.agentId,
|
|
146
|
+
sessionId: context.sessionId,
|
|
147
|
+
...(payload.handoff?.context ?? {}),
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
try {
|
|
152
|
+
const response = await this.sendTask(config, taskEnvelope);
|
|
153
|
+
if (response.error) {
|
|
154
|
+
return this.errorResult(`A2A_ERROR_${response.error.code}`, response.error.message, response.error.code >= 500, response.error);
|
|
155
|
+
}
|
|
156
|
+
if (!response.result) {
|
|
157
|
+
return this.errorResult('A2A_EMPTY_RESPONSE', 'A2A response had no result field', true);
|
|
158
|
+
}
|
|
159
|
+
const state = response.result.status.state;
|
|
160
|
+
if (state === 'failed' || state === 'canceled') {
|
|
161
|
+
return this.errorResult(`A2A_TASK_${state.toUpperCase()}`, response.result.status.message ?? `Task ended with state: ${state}`, state === 'failed');
|
|
162
|
+
}
|
|
163
|
+
// Extract text from artifacts
|
|
164
|
+
const output = this.extractOutput(response.result.artifacts);
|
|
165
|
+
return this.successResult({ output, state, artifacts: response.result.artifacts, metadata: response.result.metadata }, Date.now() - startTime);
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
if (err instanceof Error && err.name === 'AbortError') {
|
|
169
|
+
return this.errorResult('A2A_TIMEOUT', `A2A request timed out after ${config.timeoutMs}ms`, true);
|
|
170
|
+
}
|
|
171
|
+
return this.errorResult('A2A_REQUEST_FAILED', err instanceof Error ? err.message : 'A2A request failed', true, err);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// ── Internals ───────────────────────────────────────────────────────────────
|
|
175
|
+
async fetchAgentCard(baseUrl, bearerToken) {
|
|
176
|
+
const cardUrl = `${baseUrl}/.well-known/agent.json`;
|
|
177
|
+
const headers = { Accept: 'application/json' };
|
|
178
|
+
if (bearerToken)
|
|
179
|
+
headers.Authorization = `Bearer ${bearerToken}`;
|
|
180
|
+
const controller = new AbortController();
|
|
181
|
+
const id = setTimeout(() => controller.abort(), this.defaultTimeoutMs);
|
|
182
|
+
let response;
|
|
183
|
+
try {
|
|
184
|
+
response = await this.fetchImpl(cardUrl, { headers, signal: controller.signal });
|
|
185
|
+
}
|
|
186
|
+
finally {
|
|
187
|
+
clearTimeout(id);
|
|
188
|
+
}
|
|
189
|
+
if (!response.ok) {
|
|
190
|
+
throw new Error(`Failed to fetch agent card from ${cardUrl}: HTTP ${response.status}`);
|
|
191
|
+
}
|
|
192
|
+
const card = await response.json();
|
|
193
|
+
if (!card.name) {
|
|
194
|
+
throw new Error(`Agent card at ${cardUrl} is missing required "name" field`);
|
|
195
|
+
}
|
|
196
|
+
return card;
|
|
197
|
+
}
|
|
198
|
+
async sendTask(config, task) {
|
|
199
|
+
const headers = {
|
|
200
|
+
'Content-Type': 'application/json',
|
|
201
|
+
Accept: 'application/json',
|
|
202
|
+
};
|
|
203
|
+
if (config.bearerToken)
|
|
204
|
+
headers.Authorization = `Bearer ${config.bearerToken}`;
|
|
205
|
+
const controller = new AbortController();
|
|
206
|
+
const id = setTimeout(() => controller.abort(), config.timeoutMs);
|
|
207
|
+
let response;
|
|
208
|
+
try {
|
|
209
|
+
response = await this.fetchImpl(config.taskEndpoint, {
|
|
210
|
+
method: 'POST',
|
|
211
|
+
headers,
|
|
212
|
+
body: JSON.stringify(task),
|
|
213
|
+
signal: controller.signal,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
finally {
|
|
217
|
+
clearTimeout(id);
|
|
218
|
+
}
|
|
219
|
+
if (!response.ok) {
|
|
220
|
+
throw new Error(`A2A task endpoint returned HTTP ${response.status}: ${response.statusText}`);
|
|
221
|
+
}
|
|
222
|
+
return response.json();
|
|
223
|
+
}
|
|
224
|
+
extractOutput(artifacts) {
|
|
225
|
+
if (!artifacts?.length)
|
|
226
|
+
return '';
|
|
227
|
+
return artifacts
|
|
228
|
+
.flatMap(a => a.parts)
|
|
229
|
+
.filter(p => p.type === 'text' && typeof p.text === 'string')
|
|
230
|
+
.map(p => p.text)
|
|
231
|
+
.join('\n');
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
exports.A2AAdapter = A2AAdapter;
|
|
235
|
+
//# sourceMappingURL=a2a-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a-adapter.js","sourceRoot":"","sources":["../../adapters/a2a-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CustomStreamingAdapter — CustomAdapter with streaming support.
|
|
3
|
+
*
|
|
4
|
+
* Extends {@link CustomAdapter} so that handlers can yield incremental text
|
|
5
|
+
* by returning an `AsyncIterable<string>` or `AsyncIterable<StreamingChunk>`.
|
|
6
|
+
* Plain `Promise<unknown>` handlers work unchanged (single-chunk fallback).
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
*
|
|
10
|
+
* const adapter = new CustomStreamingAdapter();
|
|
11
|
+
*
|
|
12
|
+
* // Streaming handler — yields tokens incrementally
|
|
13
|
+
* adapter.registerHandler('writer', async function*(payload) {
|
|
14
|
+
* yield 'Once ';
|
|
15
|
+
* yield 'upon ';
|
|
16
|
+
* yield 'a time…';
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // Non-streaming handler — works exactly as before
|
|
20
|
+
* adapter.registerHandler('analyze', async (payload) => ({ result: 'done' }));
|
|
21
|
+
*
|
|
22
|
+
* // Consume the stream
|
|
23
|
+
* for await (const chunk of adapter.executeAgentStream('writer', payload, ctx)) {
|
|
24
|
+
* process.stdout.write(chunk.text);
|
|
25
|
+
* }
|
|
26
|
+
*
|
|
27
|
+
* @module CustomStreamingAdapter
|
|
28
|
+
* @version 1.0.0
|
|
29
|
+
*/
|
|
30
|
+
import type { AgentPayload, AgentContext, AdapterCapabilities } from '../types/agent-adapter';
|
|
31
|
+
import type { IStreamingAdapter, StreamingChunk } from '../types/streaming-adapter';
|
|
32
|
+
import { CustomAdapter, AgentHandler } from './custom-adapter';
|
|
33
|
+
/**
|
|
34
|
+
* Extended handler type that may also return an async iterable of string tokens
|
|
35
|
+
* or full `StreamingChunk` objects.
|
|
36
|
+
*/
|
|
37
|
+
export type StreamingAgentHandler = AgentHandler | ((payload: AgentPayload, context: AgentContext) => AsyncIterable<string>) | ((payload: AgentPayload, context: AgentContext) => AsyncIterable<StreamingChunk>);
|
|
38
|
+
export declare class CustomStreamingAdapter extends CustomAdapter implements IStreamingAdapter {
|
|
39
|
+
private streamingHandlers;
|
|
40
|
+
get capabilities(): AdapterCapabilities;
|
|
41
|
+
/**
|
|
42
|
+
* Register a handler. Streaming handlers (functions returning `AsyncIterable`)
|
|
43
|
+
* are detected automatically and exposed through `executeAgentStream()`.
|
|
44
|
+
*/
|
|
45
|
+
registerHandler(agentId: string, handler: StreamingAgentHandler, metadata?: {
|
|
46
|
+
description?: string;
|
|
47
|
+
capabilities?: string[];
|
|
48
|
+
}): void;
|
|
49
|
+
/**
|
|
50
|
+
* Mark an already-registered handler as streaming.
|
|
51
|
+
* Useful when the handler function is not an async generator but returns
|
|
52
|
+
* an `AsyncIterable` (e.g. a closure around a separate generator).
|
|
53
|
+
*/
|
|
54
|
+
markStreaming(agentId: string): void;
|
|
55
|
+
supportsStreaming(agentId: string): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Execute a handler with streaming support.
|
|
58
|
+
*
|
|
59
|
+
* - If the handler is registered as streaming (yields tokens), pipes the
|
|
60
|
+
* async iterable to `StreamingChunk` values.
|
|
61
|
+
* - Otherwise falls back to `executeAgent()` and wraps the result as a
|
|
62
|
+
* single chunk (same behaviour as the non-streaming `CustomAdapter`).
|
|
63
|
+
*/
|
|
64
|
+
executeAgentStream(agentId: string, payload: AgentPayload, context: AgentContext): AsyncIterable<StreamingChunk>;
|
|
65
|
+
/** Pipe an `AsyncIterable<string | StreamingChunk>` to `StreamingChunk` values. */
|
|
66
|
+
private _pipeIterable;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=custom-streaming-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-streaming-adapter.d.ts","sourceRoot":"","sources":["../../adapters/custom-streaming-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE/D;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAC7B,YAAY,GACZ,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,GACzE,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,KAAK,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;AAqBtF,qBAAa,sBAAuB,SAAQ,aAAc,YAAW,iBAAiB;IAEpF,OAAO,CAAC,iBAAiB,CAAqB;IAE9C,IAAI,YAAY,IAAI,mBAAmB,CAKtC;IAED;;;OAGG;IACH,eAAe,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC3D,IAAI;IAgBP;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;;;;OAOG;IACI,kBAAkB,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,YAAY,GACpB,aAAa,CAAC,cAAc,CAAC;IA4EhC,mFAAmF;YACpE,aAAa;CAqB7B"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CustomStreamingAdapter — CustomAdapter with streaming support.
|
|
4
|
+
*
|
|
5
|
+
* Extends {@link CustomAdapter} so that handlers can yield incremental text
|
|
6
|
+
* by returning an `AsyncIterable<string>` or `AsyncIterable<StreamingChunk>`.
|
|
7
|
+
* Plain `Promise<unknown>` handlers work unchanged (single-chunk fallback).
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
*
|
|
11
|
+
* const adapter = new CustomStreamingAdapter();
|
|
12
|
+
*
|
|
13
|
+
* // Streaming handler — yields tokens incrementally
|
|
14
|
+
* adapter.registerHandler('writer', async function*(payload) {
|
|
15
|
+
* yield 'Once ';
|
|
16
|
+
* yield 'upon ';
|
|
17
|
+
* yield 'a time…';
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // Non-streaming handler — works exactly as before
|
|
21
|
+
* adapter.registerHandler('analyze', async (payload) => ({ result: 'done' }));
|
|
22
|
+
*
|
|
23
|
+
* // Consume the stream
|
|
24
|
+
* for await (const chunk of adapter.executeAgentStream('writer', payload, ctx)) {
|
|
25
|
+
* process.stdout.write(chunk.text);
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* @module CustomStreamingAdapter
|
|
29
|
+
* @version 1.0.0
|
|
30
|
+
*/
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.CustomStreamingAdapter = void 0;
|
|
33
|
+
const custom_adapter_1 = require("./custom-adapter");
|
|
34
|
+
/** Type guard — checks whether the return value of a handler is async-iterable. */
|
|
35
|
+
function isAsyncIterable(val) {
|
|
36
|
+
return (val != null &&
|
|
37
|
+
typeof val === 'object' &&
|
|
38
|
+
Symbol.asyncIterator in val);
|
|
39
|
+
}
|
|
40
|
+
/** Type guard — checks whether a `StreamingChunk`-shaped object was yielded. */
|
|
41
|
+
function isStreamingChunk(val) {
|
|
42
|
+
return (val !== null &&
|
|
43
|
+
typeof val === 'object' &&
|
|
44
|
+
typeof val.text === 'string' &&
|
|
45
|
+
typeof val.done === 'boolean');
|
|
46
|
+
}
|
|
47
|
+
class CustomStreamingAdapter extends custom_adapter_1.CustomAdapter {
|
|
48
|
+
streamingHandlers = new Set();
|
|
49
|
+
get capabilities() {
|
|
50
|
+
return {
|
|
51
|
+
...super.capabilities,
|
|
52
|
+
streaming: true,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Register a handler. Streaming handlers (functions returning `AsyncIterable`)
|
|
57
|
+
* are detected automatically and exposed through `executeAgentStream()`.
|
|
58
|
+
*/
|
|
59
|
+
registerHandler(agentId, handler, metadata) {
|
|
60
|
+
// Probe: call the handler with synthetic inputs and check if the return
|
|
61
|
+
// is async-iterable. We do this via a duck-typed try, falling back safely.
|
|
62
|
+
// Instead, infer from the handler's prototype / generator signature:
|
|
63
|
+
const isGenerator = handler.constructor?.name === 'AsyncGeneratorFunction' ||
|
|
64
|
+
(Object.prototype.toString.call(handler) === '[object AsyncGeneratorFunction]');
|
|
65
|
+
if (isGenerator) {
|
|
66
|
+
this.streamingHandlers.add(agentId);
|
|
67
|
+
}
|
|
68
|
+
// Cast to base AgentHandler — the broader type is compatible at runtime
|
|
69
|
+
super.registerHandler(agentId, handler, metadata);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Mark an already-registered handler as streaming.
|
|
73
|
+
* Useful when the handler function is not an async generator but returns
|
|
74
|
+
* an `AsyncIterable` (e.g. a closure around a separate generator).
|
|
75
|
+
*/
|
|
76
|
+
markStreaming(agentId) {
|
|
77
|
+
this.streamingHandlers.add(agentId);
|
|
78
|
+
}
|
|
79
|
+
supportsStreaming(agentId) {
|
|
80
|
+
return this.streamingHandlers.has(agentId);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Execute a handler with streaming support.
|
|
84
|
+
*
|
|
85
|
+
* - If the handler is registered as streaming (yields tokens), pipes the
|
|
86
|
+
* async iterable to `StreamingChunk` values.
|
|
87
|
+
* - Otherwise falls back to `executeAgent()` and wraps the result as a
|
|
88
|
+
* single chunk (same behaviour as the non-streaming `CustomAdapter`).
|
|
89
|
+
*/
|
|
90
|
+
async *executeAgentStream(agentId, payload, context) {
|
|
91
|
+
this.ensureReady();
|
|
92
|
+
// Access the internal handlers map stored in the parent class
|
|
93
|
+
const handlers = this.handlers;
|
|
94
|
+
const handler = handlers?.get(agentId);
|
|
95
|
+
if (!handler) {
|
|
96
|
+
// No handler — delegate to base executeAgent (which returns AGENT_NOT_FOUND)
|
|
97
|
+
const result = await this.executeAgent(agentId, payload, context);
|
|
98
|
+
yield {
|
|
99
|
+
text: result.error?.message ?? 'Agent not found',
|
|
100
|
+
done: true,
|
|
101
|
+
metadata: { error: true },
|
|
102
|
+
};
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// Invoke the handler — may return a Promise or an AsyncIterable
|
|
106
|
+
let returnValue;
|
|
107
|
+
try {
|
|
108
|
+
returnValue = handler(payload, context);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
yield {
|
|
112
|
+
text: err instanceof Error ? err.message : 'Handler threw synchronously',
|
|
113
|
+
done: true,
|
|
114
|
+
metadata: { error: true },
|
|
115
|
+
};
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// If the return is a Promise, await it first
|
|
119
|
+
if (returnValue instanceof Promise) {
|
|
120
|
+
let resolved;
|
|
121
|
+
try {
|
|
122
|
+
resolved = await returnValue;
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
yield {
|
|
126
|
+
text: err instanceof Error ? err.message : 'Handler rejected',
|
|
127
|
+
done: true,
|
|
128
|
+
metadata: { error: true },
|
|
129
|
+
};
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (isAsyncIterable(resolved)) {
|
|
133
|
+
// Resolved to an async iterable — pipe it through
|
|
134
|
+
yield* this._pipeIterable(resolved);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
// Plain resolved value — single chunk fallback
|
|
138
|
+
const text = typeof resolved === 'string' ? resolved :
|
|
139
|
+
resolved != null ? JSON.stringify(resolved) :
|
|
140
|
+
'';
|
|
141
|
+
yield { text, done: false };
|
|
142
|
+
yield { text: '', done: true };
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
// Returned an AsyncIterable directly (generator function, etc.)
|
|
146
|
+
if (isAsyncIterable(returnValue)) {
|
|
147
|
+
yield* this._pipeIterable(returnValue);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
// Fallback — single chunk from whatever value was returned
|
|
151
|
+
const text = typeof returnValue === 'string' ? returnValue :
|
|
152
|
+
returnValue != null ? JSON.stringify(returnValue) :
|
|
153
|
+
'';
|
|
154
|
+
yield { text, done: false };
|
|
155
|
+
yield { text: '', done: true };
|
|
156
|
+
}
|
|
157
|
+
/** Pipe an `AsyncIterable<string | StreamingChunk>` to `StreamingChunk` values. */
|
|
158
|
+
async *_pipeIterable(iterable) {
|
|
159
|
+
try {
|
|
160
|
+
for await (const item of iterable) {
|
|
161
|
+
if (isStreamingChunk(item)) {
|
|
162
|
+
yield item;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
const text = typeof item === 'string' ? item : JSON.stringify(item);
|
|
166
|
+
yield { text, done: false };
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
yield { text: '', done: true };
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
yield {
|
|
173
|
+
text: err instanceof Error ? err.message : 'Stream iteration failed',
|
|
174
|
+
done: true,
|
|
175
|
+
metadata: { error: true },
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.CustomStreamingAdapter = CustomStreamingAdapter;
|
|
181
|
+
//# sourceMappingURL=custom-streaming-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-streaming-adapter.js","sourceRoot":"","sources":["../../adapters/custom-streaming-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/index.d.ts
CHANGED
|
@@ -43,5 +43,12 @@ export { DSPyAdapter } from './dspy-adapter';
|
|
|
43
43
|
export type { DSPyModule, DSPyProgram, DSPyPrediction, DSPyPredictor } from './dspy-adapter';
|
|
44
44
|
export { AgnoAdapter } from './agno-adapter';
|
|
45
45
|
export type { AgnoAgent, AgnoTeam, AgnoResponse, AgnoFunction, } from './agno-adapter';
|
|
46
|
+
export { StreamingBaseAdapter, collectStream } from './streaming-base-adapter';
|
|
47
|
+
export { LangChainStreamingAdapter } from './langchain-streaming-adapter';
|
|
48
|
+
export { CustomStreamingAdapter } from './custom-streaming-adapter';
|
|
49
|
+
export type { StreamingAgentHandler } from './custom-streaming-adapter';
|
|
50
|
+
export { A2AAdapter } from './a2a-adapter';
|
|
51
|
+
export type { A2AAgentCard, A2ATask, A2ATaskResponse, A2ATaskState, A2AArtifact, A2AAdapterConfig, } from './a2a-adapter';
|
|
52
|
+
export type { StreamingChunk, IStreamingAdapter, StreamCollector } from '../types/streaming-adapter';
|
|
46
53
|
export type { IAgentAdapter, AgentPayload, AgentContext, AgentResult, AgentInfo, AdapterConfig, AdapterCapabilities, AdapterRoute, RegistryConfig, AdapterEvent, AdapterEventHandler, AdapterEventType, } from '../types/agent-adapter';
|
|
47
54
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGlE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,SAAS,GACV,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EACV,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGlE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,SAAS,GACV,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EACV,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGxE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EACV,YAAY,EACZ,OAAO,EACP,eAAe,EACf,YAAY,EACZ,WAAW,EACX,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGrG,YAAY,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC"}
|
package/dist/adapters/index.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* @version 1.0.0
|
|
21
21
|
*/
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.AgnoAdapter = exports.DSPyAdapter = exports.HaystackAdapter = exports.OpenAIAssistantsAdapter = exports.SemanticKernelAdapter = exports.LlamaIndexAdapter = exports.CustomAdapter = exports.MCPAdapter = exports.CrewAIAdapter = exports.AutoGenAdapter = exports.LangChainAdapter = exports.OpenClawAdapter = exports.getRegistry = exports.AdapterRegistry = exports.BaseAdapter = void 0;
|
|
23
|
+
exports.A2AAdapter = exports.CustomStreamingAdapter = exports.LangChainStreamingAdapter = exports.collectStream = exports.StreamingBaseAdapter = exports.AgnoAdapter = exports.DSPyAdapter = exports.HaystackAdapter = exports.OpenAIAssistantsAdapter = exports.SemanticKernelAdapter = exports.LlamaIndexAdapter = exports.CustomAdapter = exports.MCPAdapter = exports.CrewAIAdapter = exports.AutoGenAdapter = exports.LangChainAdapter = exports.OpenClawAdapter = exports.getRegistry = exports.AdapterRegistry = exports.BaseAdapter = void 0;
|
|
24
24
|
// Core infrastructure
|
|
25
25
|
var base_adapter_1 = require("./base-adapter");
|
|
26
26
|
Object.defineProperty(exports, "BaseAdapter", { enumerable: true, get: function () { return base_adapter_1.BaseAdapter; } });
|
|
@@ -53,4 +53,15 @@ var dspy_adapter_1 = require("./dspy-adapter");
|
|
|
53
53
|
Object.defineProperty(exports, "DSPyAdapter", { enumerable: true, get: function () { return dspy_adapter_1.DSPyAdapter; } });
|
|
54
54
|
var agno_adapter_1 = require("./agno-adapter");
|
|
55
55
|
Object.defineProperty(exports, "AgnoAdapter", { enumerable: true, get: function () { return agno_adapter_1.AgnoAdapter; } });
|
|
56
|
+
// Streaming adapters
|
|
57
|
+
var streaming_base_adapter_1 = require("./streaming-base-adapter");
|
|
58
|
+
Object.defineProperty(exports, "StreamingBaseAdapter", { enumerable: true, get: function () { return streaming_base_adapter_1.StreamingBaseAdapter; } });
|
|
59
|
+
Object.defineProperty(exports, "collectStream", { enumerable: true, get: function () { return streaming_base_adapter_1.collectStream; } });
|
|
60
|
+
var langchain_streaming_adapter_1 = require("./langchain-streaming-adapter");
|
|
61
|
+
Object.defineProperty(exports, "LangChainStreamingAdapter", { enumerable: true, get: function () { return langchain_streaming_adapter_1.LangChainStreamingAdapter; } });
|
|
62
|
+
var custom_streaming_adapter_1 = require("./custom-streaming-adapter");
|
|
63
|
+
Object.defineProperty(exports, "CustomStreamingAdapter", { enumerable: true, get: function () { return custom_streaming_adapter_1.CustomStreamingAdapter; } });
|
|
64
|
+
// A2A (Agent-to-Agent) adapter
|
|
65
|
+
var a2a_adapter_1 = require("./a2a-adapter");
|
|
66
|
+
Object.defineProperty(exports, "A2AAdapter", { enumerable: true, get: function () { return a2a_adapter_1.A2AAdapter; } });
|
|
56
67
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../adapters/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,sBAAsB;AACtB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,uDAAkE;AAAzD,mHAAA,eAAe,OAAA;AAAE,+GAAA,WAAW,OAAA;AAErC,mCAAmC;AACnC,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AAEzB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAEvB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAEtB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAEnB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAGtB,8BAA8B;AAC9B,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAO1B,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA;AAE9B,yEAAsE;AAA7D,oIAAA,uBAAuB,OAAA;AAOhC,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAQxB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAEpB,+CAA6C;AAApC,2GAAA,WAAW,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../adapters/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,sBAAsB;AACtB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,uDAAkE;AAAzD,mHAAA,eAAe,OAAA;AAAE,+GAAA,WAAW,OAAA;AAErC,mCAAmC;AACnC,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AAEzB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAEvB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAEtB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAEnB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAGtB,8BAA8B;AAC9B,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAO1B,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA;AAE9B,yEAAsE;AAA7D,oIAAA,uBAAuB,OAAA;AAOhC,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAQxB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAEpB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAQpB,qBAAqB;AACrB,mEAA+E;AAAtE,8HAAA,oBAAoB,OAAA;AAAE,uHAAA,aAAa,OAAA;AAC5C,6EAA0E;AAAjE,wIAAA,yBAAyB,OAAA;AAClC,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA;AAG/B,+BAA+B;AAC/B,6CAA2C;AAAlC,yGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LangChainStreamingAdapter — LangChainAdapter with real incremental streaming.
|
|
3
|
+
*
|
|
4
|
+
* Extends {@link LangChainAdapter} with genuine streaming via the LangChain
|
|
5
|
+
* Runnable `.stream()` interface. Falls back gracefully to `.invoke()` for
|
|
6
|
+
* agents whose Runnable does not expose `.stream()`.
|
|
7
|
+
*
|
|
8
|
+
* Usage (drop-in replacement for LangChainAdapter):
|
|
9
|
+
*
|
|
10
|
+
* const adapter = new LangChainStreamingAdapter();
|
|
11
|
+
* adapter.registerAgent('analyst', myChain); // same API
|
|
12
|
+
* await registry.addAdapter(adapter);
|
|
13
|
+
*
|
|
14
|
+
* // Stream the response
|
|
15
|
+
* for await (const chunk of adapter.executeAgentStream('analyst', payload, ctx)) {
|
|
16
|
+
* process.stdout.write(chunk.text);
|
|
17
|
+
* if (chunk.done) break;
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* @module LangChainStreamingAdapter
|
|
21
|
+
* @version 1.0.0
|
|
22
|
+
*/
|
|
23
|
+
import type { AgentPayload, AgentContext, AdapterCapabilities } from '../types/agent-adapter';
|
|
24
|
+
import type { StreamingChunk } from '../types/streaming-adapter';
|
|
25
|
+
import type { IStreamingAdapter } from '../types/streaming-adapter';
|
|
26
|
+
import { LangChainAdapter, LangChainRunnable } from './langchain-adapter';
|
|
27
|
+
export declare class LangChainStreamingAdapter extends LangChainAdapter implements IStreamingAdapter {
|
|
28
|
+
private streamableAgentIds;
|
|
29
|
+
get capabilities(): AdapterCapabilities;
|
|
30
|
+
/**
|
|
31
|
+
* Register a LangChain agent. Automatically detects `.stream()` support.
|
|
32
|
+
*/
|
|
33
|
+
registerAgent(agentId: string, runnable: LangChainRunnable, metadata?: {
|
|
34
|
+
description?: string;
|
|
35
|
+
capabilities?: string[];
|
|
36
|
+
}): void;
|
|
37
|
+
/** Returns `true` when the agent exposes LangChain's `.stream()` method. */
|
|
38
|
+
supportsStreaming(agentId: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Stream agent execution as incremental `StreamingChunk` values.
|
|
41
|
+
*
|
|
42
|
+
* - If the registered Runnable exposes `.stream()`, emits tokens incrementally.
|
|
43
|
+
* - Otherwise falls back to `.invoke()` and emits a single chunk.
|
|
44
|
+
*/
|
|
45
|
+
executeAgentStream(agentId: string, payload: AgentPayload, context: AgentContext): AsyncIterable<StreamingChunk>;
|
|
46
|
+
private _fallbackStream;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=langchain-streaming-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchain-streaming-adapter.d.ts","sourceRoot":"","sources":["../../adapters/langchain-streaming-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAsC1E,qBAAa,yBAA0B,SAAQ,gBAAiB,YAAW,iBAAiB;IAG1F,OAAO,CAAC,kBAAkB,CAAqB;IAE/C,IAAI,YAAY,IAAI,mBAAmB,CAKtC;IAED;;OAEG;IACH,aAAa,CACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC3D,IAAI;IAOP,4EAA4E;IAC5E,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;;OAKG;IACI,kBAAkB,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,YAAY,GACpB,aAAa,CAAC,cAAc,CAAC;YAkEjB,eAAe;CAsB/B"}
|