network-ai 4.0.17 → 4.2.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.
Files changed (34) hide show
  1. package/README.md +113 -30
  2. package/dist/adapters/a2a-adapter.d.ts +152 -0
  3. package/dist/adapters/a2a-adapter.d.ts.map +1 -0
  4. package/dist/adapters/a2a-adapter.js +235 -0
  5. package/dist/adapters/a2a-adapter.js.map +1 -0
  6. package/dist/adapters/codex-adapter.d.ts +152 -0
  7. package/dist/adapters/codex-adapter.d.ts.map +1 -0
  8. package/dist/adapters/codex-adapter.js +318 -0
  9. package/dist/adapters/codex-adapter.js.map +1 -0
  10. package/dist/adapters/custom-streaming-adapter.d.ts +68 -0
  11. package/dist/adapters/custom-streaming-adapter.d.ts.map +1 -0
  12. package/dist/adapters/custom-streaming-adapter.js +181 -0
  13. package/dist/adapters/custom-streaming-adapter.js.map +1 -0
  14. package/dist/adapters/index.d.ts +9 -0
  15. package/dist/adapters/index.d.ts.map +1 -1
  16. package/dist/adapters/index.js +15 -1
  17. package/dist/adapters/index.js.map +1 -1
  18. package/dist/adapters/langchain-streaming-adapter.d.ts +48 -0
  19. package/dist/adapters/langchain-streaming-adapter.d.ts.map +1 -0
  20. package/dist/adapters/langchain-streaming-adapter.js +161 -0
  21. package/dist/adapters/langchain-streaming-adapter.js.map +1 -0
  22. package/dist/adapters/streaming-base-adapter.d.ts +42 -0
  23. package/dist/adapters/streaming-base-adapter.d.ts.map +1 -0
  24. package/dist/adapters/streaming-base-adapter.js +68 -0
  25. package/dist/adapters/streaming-base-adapter.js.map +1 -0
  26. package/dist/index.d.ts +9 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +15 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/run.js +1 -0
  31. package/dist/run.js.map +1 -1
  32. package/package.json +7 -4
  33. package/socket.json +12 -0
  34. package/types/streaming-adapter.d.ts +63 -0
@@ -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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"}
@@ -43,5 +43,14 @@ 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 { CodexAdapter } from './codex-adapter';
53
+ export type { CodexMode, CodexAgentConfig, CodexChatClient, CodexCompletionClient, CodexCLIExecutor, } from './codex-adapter';
54
+ export type { StreamingChunk, IStreamingAdapter, StreamCollector } from '../types/streaming-adapter';
46
55
  export type { IAgentAdapter, AgentPayload, AgentContext, AgentResult, AgentInfo, AdapterConfig, AdapterCapabilities, AdapterRoute, RegistryConfig, AdapterEvent, AdapterEventHandler, AdapterEventType, } from '../types/agent-adapter';
47
56
  //# 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":"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"}
@@ -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.CodexAdapter = 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,18 @@ 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; } });
67
+ // Codex adapter (OpenAI Codex CLI / chat / completion)
68
+ var codex_adapter_1 = require("./codex-adapter");
69
+ Object.defineProperty(exports, "CodexAdapter", { enumerable: true, get: function () { return codex_adapter_1.CodexAdapter; } });
56
70
  //# 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;AAUnB,uDAAuD;AACvD,iDAA+C;AAAtC,6GAAA,YAAY,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"}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ /**
3
+ * LangChainStreamingAdapter — LangChainAdapter with real incremental streaming.
4
+ *
5
+ * Extends {@link LangChainAdapter} with genuine streaming via the LangChain
6
+ * Runnable `.stream()` interface. Falls back gracefully to `.invoke()` for
7
+ * agents whose Runnable does not expose `.stream()`.
8
+ *
9
+ * Usage (drop-in replacement for LangChainAdapter):
10
+ *
11
+ * const adapter = new LangChainStreamingAdapter();
12
+ * adapter.registerAgent('analyst', myChain); // same API
13
+ * await registry.addAdapter(adapter);
14
+ *
15
+ * // Stream the response
16
+ * for await (const chunk of adapter.executeAgentStream('analyst', payload, ctx)) {
17
+ * process.stdout.write(chunk.text);
18
+ * if (chunk.done) break;
19
+ * }
20
+ *
21
+ * @module LangChainStreamingAdapter
22
+ * @version 1.0.0
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.LangChainStreamingAdapter = void 0;
26
+ const langchain_adapter_1 = require("./langchain-adapter");
27
+ function isStreamable(runnable) {
28
+ return (typeof runnable === 'object' &&
29
+ runnable !== null &&
30
+ typeof runnable.stream === 'function');
31
+ }
32
+ /** Coerce any chunk value yielded by a LangChain stream to a string. */
33
+ function chunkToText(raw) {
34
+ if (typeof raw === 'string')
35
+ return raw;
36
+ if (raw == null)
37
+ return '';
38
+ if (typeof raw === 'object') {
39
+ const obj = raw;
40
+ // AIMessage / BaseMessage pattern
41
+ if (typeof obj.content === 'string')
42
+ return obj.content;
43
+ // { output: "..." } pattern
44
+ if (typeof obj.output === 'string')
45
+ return obj.output;
46
+ // { result: "..." } pattern
47
+ if (typeof obj.result === 'string')
48
+ return obj.result;
49
+ // Generic object — stringify
50
+ return JSON.stringify(obj);
51
+ }
52
+ return String(raw);
53
+ }
54
+ class LangChainStreamingAdapter extends langchain_adapter_1.LangChainAdapter {
55
+ // Internal registry of agents that have a real .stream() method
56
+ streamableAgentIds = new Set();
57
+ get capabilities() {
58
+ return {
59
+ ...super.capabilities,
60
+ streaming: true,
61
+ };
62
+ }
63
+ /**
64
+ * Register a LangChain agent. Automatically detects `.stream()` support.
65
+ */
66
+ registerAgent(agentId, runnable, metadata) {
67
+ super.registerAgent(agentId, runnable, metadata);
68
+ if (isStreamable(runnable)) {
69
+ this.streamableAgentIds.add(agentId);
70
+ }
71
+ }
72
+ /** Returns `true` when the agent exposes LangChain's `.stream()` method. */
73
+ supportsStreaming(agentId) {
74
+ return this.streamableAgentIds.has(agentId);
75
+ }
76
+ /**
77
+ * Stream agent execution as incremental `StreamingChunk` values.
78
+ *
79
+ * - If the registered Runnable exposes `.stream()`, emits tokens incrementally.
80
+ * - Otherwise falls back to `.invoke()` and emits a single chunk.
81
+ */
82
+ async *executeAgentStream(agentId, payload, context) {
83
+ this.ensureReady();
84
+ // Access the internal runnables map via the parent's execute path.
85
+ // We override at the stream level; non-streamable agents fall through
86
+ // to the single-chunk wrapper in the base non-streaming path.
87
+ if (!this.streamableAgentIds.has(agentId)) {
88
+ // Fall back: executeAgent → single chunk
89
+ const result = await this.executeAgent(agentId, payload, context);
90
+ if (!result.success) {
91
+ yield {
92
+ text: result.error?.message ?? 'Agent execution failed',
93
+ done: true,
94
+ metadata: { error: true, code: result.error?.code },
95
+ };
96
+ return;
97
+ }
98
+ const data = result.data;
99
+ const text = typeof data === 'string' ? data :
100
+ data != null ? JSON.stringify(data) :
101
+ '';
102
+ yield { text, done: false, metadata: result.metadata };
103
+ yield { text: '', done: true, metadata: { adapter: this.name } };
104
+ return;
105
+ }
106
+ // Build the same input the non-streaming path would use
107
+ const input = this.buildInput(payload, context);
108
+ // We need the runnable — access it via executeAgent's path by delegating
109
+ // through a custom approach: re-invoke via the known runnables map.
110
+ // The parent stores runnables as a private field; we get it via symbol.
111
+ const runnables = this.runnables;
112
+ const runnable = runnables?.get(agentId);
113
+ if (!runnable || !isStreamable(runnable)) {
114
+ // Shouldn't happen — fallback anyway
115
+ yield* this._fallbackStream(agentId, payload, context);
116
+ return;
117
+ }
118
+ const langchainConfig = {
119
+ metadata: {
120
+ taskId: context.taskId,
121
+ sessionId: context.sessionId,
122
+ sourceAgent: context.agentId,
123
+ },
124
+ };
125
+ try {
126
+ for await (const rawChunk of runnable.stream(input, langchainConfig)) {
127
+ const text = chunkToText(rawChunk);
128
+ if (text)
129
+ yield { text, done: false };
130
+ }
131
+ yield { text: '', done: true, metadata: { adapter: this.name } };
132
+ }
133
+ catch (error) {
134
+ yield {
135
+ text: error instanceof Error ? error.message : 'Streaming failed',
136
+ done: true,
137
+ metadata: { error: true },
138
+ };
139
+ }
140
+ }
141
+ // Private helper used for fallback path
142
+ async *_fallbackStream(agentId, payload, context) {
143
+ const result = await this.executeAgent(agentId, payload, context);
144
+ if (!result.success) {
145
+ yield {
146
+ text: result.error?.message ?? 'Agent execution failed',
147
+ done: true,
148
+ metadata: { error: true },
149
+ };
150
+ return;
151
+ }
152
+ const data = result.data;
153
+ const text = typeof data === 'string' ? data :
154
+ data != null ? JSON.stringify(data) :
155
+ '';
156
+ yield { text, done: false };
157
+ yield { text: '', done: true };
158
+ }
159
+ }
160
+ exports.LangChainStreamingAdapter = LangChainStreamingAdapter;
161
+ //# sourceMappingURL=langchain-streaming-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain-streaming-adapter.js","sourceRoot":"","sources":["../../adapters/langchain-streaming-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * StreamingBaseAdapter — Abstract base for all streaming-capable adapters.
3
+ *
4
+ * Extends {@link BaseAdapter} with a default `executeAgentStream()` that wraps
5
+ * the non-streaming `executeAgent()` result as a single `StreamingChunk`.
6
+ * Subclasses override `executeAgentStream()` and/or `supportsStreaming()` to
7
+ * provide genuine incremental streaming.
8
+ *
9
+ * @module StreamingBaseAdapter
10
+ * @version 1.0.0
11
+ */
12
+ import type { AgentPayload, AgentContext } from '../types/agent-adapter';
13
+ import type { IStreamingAdapter, StreamingChunk } from '../types/streaming-adapter';
14
+ import { BaseAdapter } from './base-adapter';
15
+ export declare abstract class StreamingBaseAdapter extends BaseAdapter implements IStreamingAdapter {
16
+ /**
17
+ * Returns `true` when the named agent has a real streaming implementation.
18
+ * Default: `false` (fallback single-chunk wrapper is used).
19
+ * Override in subclasses that register streaming agents.
20
+ */
21
+ supportsStreaming(_agentId: string): boolean;
22
+ /**
23
+ * Default streaming implementation — wraps `executeAgent()` as a single chunk.
24
+ *
25
+ * Subclasses that support genuine streaming should override this method.
26
+ * The overriding implementation should:
27
+ * 1. yield partial text chunks as they arrive
28
+ * 2. yield a final chunk with `done: true` and `text: ''`
29
+ */
30
+ executeAgentStream(agentId: string, payload: AgentPayload, context: AgentContext): AsyncIterable<StreamingChunk>;
31
+ }
32
+ /**
33
+ * Utility: drain a streaming adapter into a single accumulated result.
34
+ *
35
+ * @example
36
+ * const { output } = await collectStream(adapter.executeAgentStream('my-agent', payload, ctx));
37
+ */
38
+ export declare function collectStream(stream: AsyncIterable<StreamingChunk>): Promise<{
39
+ output: string;
40
+ chunks: StreamingChunk[];
41
+ }>;
42
+ //# sourceMappingURL=streaming-base-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-base-adapter.d.ts","sourceRoot":"","sources":["../../adapters/streaming-base-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,8BAAsB,oBAAqB,SAAQ,WAAY,YAAW,iBAAiB;IAEzF;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI5C;;;;;;;OAOG;IACI,kBAAkB,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,YAAY,GACpB,aAAa,CAAC,cAAc,CAAC;CAoBjC;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,GACpC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,EAAE,CAAA;CAAE,CAAC,CAQvD"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ /**
3
+ * StreamingBaseAdapter — Abstract base for all streaming-capable adapters.
4
+ *
5
+ * Extends {@link BaseAdapter} with a default `executeAgentStream()` that wraps
6
+ * the non-streaming `executeAgent()` result as a single `StreamingChunk`.
7
+ * Subclasses override `executeAgentStream()` and/or `supportsStreaming()` to
8
+ * provide genuine incremental streaming.
9
+ *
10
+ * @module StreamingBaseAdapter
11
+ * @version 1.0.0
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.StreamingBaseAdapter = void 0;
15
+ exports.collectStream = collectStream;
16
+ const base_adapter_1 = require("./base-adapter");
17
+ class StreamingBaseAdapter extends base_adapter_1.BaseAdapter {
18
+ /**
19
+ * Returns `true` when the named agent has a real streaming implementation.
20
+ * Default: `false` (fallback single-chunk wrapper is used).
21
+ * Override in subclasses that register streaming agents.
22
+ */
23
+ supportsStreaming(_agentId) {
24
+ return false;
25
+ }
26
+ /**
27
+ * Default streaming implementation — wraps `executeAgent()` as a single chunk.
28
+ *
29
+ * Subclasses that support genuine streaming should override this method.
30
+ * The overriding implementation should:
31
+ * 1. yield partial text chunks as they arrive
32
+ * 2. yield a final chunk with `done: true` and `text: ''`
33
+ */
34
+ async *executeAgentStream(agentId, payload, context) {
35
+ const result = await this.executeAgent(agentId, payload, context);
36
+ if (!result.success) {
37
+ // Propagate the error as a single done-chunk with error text
38
+ const msg = result.error?.message ?? 'Agent execution failed';
39
+ yield { text: msg, done: true, metadata: { error: true, code: result.error?.code } };
40
+ return;
41
+ }
42
+ // Flatten data to a string for the streaming consumer
43
+ const data = result.data;
44
+ const text = typeof data === 'string' ? data :
45
+ data != null ? JSON.stringify(data) :
46
+ '';
47
+ yield { text, done: false, metadata: result.metadata };
48
+ yield { text: '', done: true, metadata: { adapter: this.name } };
49
+ }
50
+ }
51
+ exports.StreamingBaseAdapter = StreamingBaseAdapter;
52
+ /**
53
+ * Utility: drain a streaming adapter into a single accumulated result.
54
+ *
55
+ * @example
56
+ * const { output } = await collectStream(adapter.executeAgentStream('my-agent', payload, ctx));
57
+ */
58
+ async function collectStream(stream) {
59
+ const chunks = [];
60
+ let output = '';
61
+ for await (const chunk of stream) {
62
+ chunks.push(chunk);
63
+ if (chunk.text)
64
+ output += chunk.text;
65
+ }
66
+ return { output, chunks };
67
+ }
68
+ //# sourceMappingURL=streaming-base-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-base-adapter.js","sourceRoot":"","sources":["../../adapters/streaming-base-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAyDH,sCAUC;AA/DD,iDAA6C;AAE7C,MAAsB,oBAAqB,SAAQ,0BAAW;IAE5D;;;;OAIG;IACH,iBAAiB,CAAC,QAAgB;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,CAAC,kBAAkB,CACvB,OAAe,EACf,OAAqB,EACrB,OAAqB;QAErB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAElE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,6DAA6D;YAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,wBAAwB,CAAC;YAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;YACrF,OAAO;QACT,CAAC;QAED,sDAAsD;QACtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,MAAM,IAAI,GACR,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,IAAI,IAAI,CAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtB,EAAE,CAAC;QAEhC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IACnE,CAAC;CACF;AA3CD,oDA2CC;AAED;;;;;GAKG;AACI,KAAK,UAAU,aAAa,CACjC,MAAqC;IAErC,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,KAAK,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC;IACvC,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -788,4 +788,13 @@ export { ExtendedMcpTools } from './lib/mcp-tools-extended';
788
788
  export type { IBudget, ITokenManager, ExtendedMcpToolsOptions } from './lib/mcp-tools-extended';
789
789
  export { ControlMcpTools } from './lib/mcp-tools-control';
790
790
  export type { IConfig, IAgentStatus, ControlMcpToolsOptions } from './lib/mcp-tools-control';
791
+ export { StreamingBaseAdapter, collectStream } from './adapters/streaming-base-adapter';
792
+ export { LangChainStreamingAdapter } from './adapters/langchain-streaming-adapter';
793
+ export { CustomStreamingAdapter } from './adapters/custom-streaming-adapter';
794
+ export type { StreamingAgentHandler } from './adapters/custom-streaming-adapter';
795
+ export { A2AAdapter } from './adapters/a2a-adapter';
796
+ export type { A2AAgentCard, A2ATask, A2ATaskResponse, A2ATaskState, A2AArtifact, A2AAdapterConfig, } from './adapters/a2a-adapter';
797
+ export { CodexAdapter } from './adapters/codex-adapter';
798
+ export type { CodexMode, CodexAgentConfig, CodexChatClient, CodexCompletionClient, CodexCLIExecutor, } from './adapters/codex-adapter';
799
+ export type { StreamingChunk, IStreamingAdapter, StreamCollector } from './types/streaming-adapter';
791
800
  //# sourceMappingURL=index.d.ts.map