@langchain/core 0.2.0-rc.0 → 0.2.1
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/dist/callbacks/base.cjs +9 -1
- package/dist/callbacks/base.d.ts +3 -0
- package/dist/callbacks/base.js +9 -1
- package/dist/callbacks/manager.cjs +51 -0
- package/dist/callbacks/manager.js +51 -0
- package/dist/callbacks/tests/callbacks.test.d.ts +1 -0
- package/dist/callbacks/tests/callbacks.test.js +492 -0
- package/dist/callbacks/tests/manager.int.test.d.ts +1 -0
- package/dist/callbacks/tests/manager.int.test.js +29 -0
- package/dist/callbacks/tests/run_collector.test.d.ts +1 -0
- package/dist/callbacks/tests/run_collector.test.js +58 -0
- package/dist/chat_history.cjs +13 -0
- package/dist/chat_history.d.ts +9 -0
- package/dist/chat_history.js +13 -0
- package/dist/language_models/base.cjs +3 -0
- package/dist/language_models/base.js +3 -0
- package/dist/language_models/chat_models.cjs +21 -3
- package/dist/language_models/chat_models.d.ts +11 -2
- package/dist/language_models/chat_models.js +21 -3
- package/dist/language_models/tests/chat_models.test.d.ts +1 -0
- package/dist/language_models/tests/chat_models.test.js +154 -0
- package/dist/language_models/tests/count_tokens.test.d.ts +1 -0
- package/dist/language_models/tests/count_tokens.test.js +19 -0
- package/dist/language_models/tests/llms.test.d.ts +1 -0
- package/dist/language_models/tests/llms.test.js +39 -0
- package/dist/messages/tests/base_message.test.d.ts +1 -0
- package/dist/messages/tests/base_message.test.js +97 -0
- package/dist/output_parsers/openai_tools/tests/json_output_tools_parser.test.d.ts +1 -0
- package/dist/output_parsers/openai_tools/tests/json_output_tools_parser.test.js +81 -0
- package/dist/output_parsers/tests/json.test.d.ts +1 -0
- package/dist/output_parsers/tests/json.test.js +427 -0
- package/dist/output_parsers/tests/output_parser.test.d.ts +1 -0
- package/dist/output_parsers/tests/output_parser.test.js +78 -0
- package/dist/output_parsers/tests/string.test.d.ts +1 -0
- package/dist/output_parsers/tests/string.test.js +68 -0
- package/dist/output_parsers/tests/structured.test.d.ts +1 -0
- package/dist/output_parsers/tests/structured.test.js +166 -0
- package/dist/output_parsers/tests/xml.test.d.ts +1 -0
- package/dist/output_parsers/tests/xml.test.js +81 -0
- package/dist/prompts/tests/chat.mustache.test.d.ts +1 -0
- package/dist/prompts/tests/chat.mustache.test.js +61 -0
- package/dist/prompts/tests/chat.test.d.ts +1 -0
- package/dist/prompts/tests/chat.test.js +507 -0
- package/dist/prompts/tests/few_shot.test.d.ts +1 -0
- package/dist/prompts/tests/few_shot.test.js +224 -0
- package/dist/prompts/tests/pipeline.test.d.ts +1 -0
- package/dist/prompts/tests/pipeline.test.js +101 -0
- package/dist/prompts/tests/prompt.mustache.test.d.ts +1 -0
- package/dist/prompts/tests/prompt.mustache.test.js +85 -0
- package/dist/prompts/tests/prompt.test.d.ts +1 -0
- package/dist/prompts/tests/prompt.test.js +78 -0
- package/dist/prompts/tests/structured.test.d.ts +1 -0
- package/dist/prompts/tests/structured.test.js +37 -0
- package/dist/prompts/tests/template.test.d.ts +1 -0
- package/dist/prompts/tests/template.test.js +24 -0
- package/dist/runnables/base.cjs +174 -19
- package/dist/runnables/base.d.ts +47 -28
- package/dist/runnables/base.js +174 -19
- package/dist/runnables/history.cjs +87 -32
- package/dist/runnables/history.d.ts +1 -1
- package/dist/runnables/history.js +87 -32
- package/dist/runnables/iter.cjs +46 -0
- package/dist/runnables/iter.d.ts +5 -0
- package/dist/runnables/iter.js +39 -0
- package/dist/runnables/passthrough.cjs +1 -0
- package/dist/runnables/passthrough.d.ts +1 -1
- package/dist/runnables/passthrough.js +1 -0
- package/dist/runnables/remote.cjs +60 -48
- package/dist/runnables/remote.d.ts +8 -4
- package/dist/runnables/remote.js +61 -49
- package/dist/runnables/tests/runnable.test.d.ts +1 -0
- package/dist/runnables/tests/runnable.test.js +491 -0
- package/dist/runnables/tests/runnable_binding.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_binding.test.js +46 -0
- package/dist/runnables/tests/runnable_branch.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_branch.test.js +116 -0
- package/dist/runnables/tests/runnable_graph.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_graph.test.js +84 -0
- package/dist/runnables/tests/runnable_history.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_history.test.js +177 -0
- package/dist/runnables/tests/runnable_interface.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_interface.test.js +209 -0
- package/dist/runnables/tests/runnable_map.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_map.test.js +238 -0
- package/dist/runnables/tests/runnable_passthrough.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_passthrough.test.js +96 -0
- package/dist/runnables/tests/runnable_remote.int.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_remote.int.test.js +138 -0
- package/dist/runnables/tests/runnable_remote.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_remote.test.js +200 -0
- package/dist/runnables/tests/runnable_retry.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_retry.test.js +125 -0
- package/dist/runnables/tests/runnable_stream_events.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_stream_events.test.js +1013 -0
- package/dist/runnables/tests/runnable_stream_events_v2.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_stream_events_v2.test.js +973 -0
- package/dist/runnables/tests/runnable_stream_log.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_stream_log.test.js +282 -0
- package/dist/runnables/tests/runnable_tracing.int.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_tracing.int.test.js +37 -0
- package/dist/runnables/tests/runnable_with_fallbacks.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_with_fallbacks.test.js +36 -0
- package/dist/runnables/utils.d.ts +1 -1
- package/dist/singletons/index.cjs +1 -1
- package/dist/singletons/index.d.ts +2 -2
- package/dist/singletons/index.js +1 -1
- package/dist/singletons/tests/async_local_storage.test.d.ts +1 -0
- package/dist/singletons/tests/async_local_storage.test.js +120 -0
- package/dist/structured_query/tests/utils.test.d.ts +1 -0
- package/dist/structured_query/tests/utils.test.js +47 -0
- package/dist/tracers/event_stream.cjs +493 -0
- package/dist/tracers/event_stream.d.ts +137 -0
- package/dist/tracers/event_stream.js +489 -0
- package/dist/tracers/log_stream.d.ts +2 -77
- package/dist/tracers/tests/langchain_tracer.int.test.d.ts +1 -0
- package/dist/tracers/tests/langchain_tracer.int.test.js +74 -0
- package/dist/tracers/tests/tracer.test.d.ts +1 -0
- package/dist/tracers/tests/tracer.test.js +378 -0
- package/dist/utils/stream.cjs +27 -11
- package/dist/utils/stream.d.ts +6 -1
- package/dist/utils/stream.js +27 -11
- package/dist/utils/testing/tests/chatfake.test.d.ts +1 -0
- package/dist/utils/testing/tests/chatfake.test.js +112 -0
- package/dist/utils/tests/async_caller.test.d.ts +1 -0
- package/dist/utils/tests/async_caller.test.js +27 -0
- package/dist/utils/tests/enviroment.test.d.ts +1 -0
- package/dist/utils/tests/enviroment.test.js +6 -0
- package/dist/utils/tests/function_calling.test.d.ts +1 -0
- package/dist/utils/tests/function_calling.test.js +107 -0
- package/dist/utils/tests/math_utils.test.d.ts +1 -0
- package/dist/utils/tests/math_utils.test.js +139 -0
- package/dist/utils/tests/polyfill_stream.test.d.ts +1 -0
- package/dist/utils/tests/polyfill_stream.test.js +15 -0
- package/package.json +7 -7
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AsyncLocalStorageProviderSingleton } from "../singletons/index.js";
|
|
2
|
+
export function isIterator(thing) {
|
|
3
|
+
return (typeof thing === "object" &&
|
|
4
|
+
thing !== null &&
|
|
5
|
+
typeof thing[Symbol.iterator] === "function" &&
|
|
6
|
+
// avoid detecting array/set as iterator
|
|
7
|
+
typeof thing.next === "function");
|
|
8
|
+
}
|
|
9
|
+
export function isAsyncIterable(thing) {
|
|
10
|
+
return (typeof thing === "object" &&
|
|
11
|
+
thing !== null &&
|
|
12
|
+
typeof thing[Symbol.asyncIterator] ===
|
|
13
|
+
"function");
|
|
14
|
+
}
|
|
15
|
+
export function* consumeIteratorInContext(context, iter) {
|
|
16
|
+
const storage = AsyncLocalStorageProviderSingleton.getInstance();
|
|
17
|
+
while (true) {
|
|
18
|
+
const { value, done } = storage.run(context, iter.next.bind(iter));
|
|
19
|
+
if (done) {
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
yield value;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export async function* consumeAsyncIterableInContext(context, iter) {
|
|
28
|
+
const storage = AsyncLocalStorageProviderSingleton.getInstance();
|
|
29
|
+
const iterator = iter[Symbol.asyncIterator]();
|
|
30
|
+
while (true) {
|
|
31
|
+
const { value, done } = await storage.run(context, iterator.next.bind(iter));
|
|
32
|
+
if (done) {
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
yield value;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -27,7 +27,7 @@ type RunnablePassthroughFunc<RunInput = any> = ((input: RunInput) => void) | ((i
|
|
|
27
27
|
* );
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
|
-
export declare class RunnablePassthrough<RunInput> extends Runnable<RunInput, RunInput> {
|
|
30
|
+
export declare class RunnablePassthrough<RunInput = any> extends Runnable<RunInput, RunInput> {
|
|
31
31
|
static lc_name(): string;
|
|
32
32
|
lc_namespace: string[];
|
|
33
33
|
lc_serializable: boolean;
|
|
@@ -405,58 +405,70 @@ class RemoteRunnable extends base_js_1.Runnable {
|
|
|
405
405
|
}
|
|
406
406
|
await runManager?.handleChainEnd(runLog?.state.final_output);
|
|
407
407
|
}
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
408
|
+
_streamEvents(input, options, streamOptions) {
|
|
409
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
410
|
+
const outerThis = this;
|
|
411
|
+
const generator = async function* () {
|
|
412
|
+
const [config, kwargs] = outerThis._separateRunnableConfigFromCallOptions(options);
|
|
413
|
+
const callbackManager_ = await (0, config_js_1.getCallbackManagerForConfig)(options);
|
|
414
|
+
const runManager = await callbackManager_?.handleChainStart(outerThis.toJSON(), (0, base_js_1._coerceToDict)(input, "input"), undefined, undefined, undefined, undefined, options?.runName);
|
|
415
|
+
// The type is in camelCase but the API only accepts snake_case.
|
|
416
|
+
const camelCaseStreamOptions = {
|
|
417
|
+
include_names: streamOptions?.includeNames,
|
|
418
|
+
include_types: streamOptions?.includeTypes,
|
|
419
|
+
include_tags: streamOptions?.includeTags,
|
|
420
|
+
exclude_names: streamOptions?.excludeNames,
|
|
421
|
+
exclude_types: streamOptions?.excludeTypes,
|
|
422
|
+
exclude_tags: streamOptions?.excludeTags,
|
|
423
|
+
};
|
|
424
|
+
const events = [];
|
|
425
|
+
try {
|
|
426
|
+
const response = await outerThis.post("/stream_events", {
|
|
427
|
+
input,
|
|
428
|
+
config: removeCallbacks(config),
|
|
429
|
+
kwargs,
|
|
430
|
+
...camelCaseStreamOptions,
|
|
431
|
+
diff: false,
|
|
432
|
+
});
|
|
433
|
+
const { body, ok } = response;
|
|
434
|
+
if (!ok) {
|
|
435
|
+
throw new Error(`${response.status} Error: ${await response.text()}`);
|
|
436
|
+
}
|
|
437
|
+
if (!body) {
|
|
438
|
+
throw new Error("Could not begin remote stream events. Please check the given URL and try again.");
|
|
439
|
+
}
|
|
440
|
+
const runnableStream = (0, event_source_parse_js_1.convertEventStreamToIterableReadableDataStream)(body);
|
|
441
|
+
for await (const log of runnableStream) {
|
|
442
|
+
const chunk = revive(JSON.parse(log));
|
|
443
|
+
const event = {
|
|
444
|
+
event: chunk.event,
|
|
445
|
+
name: chunk.name,
|
|
446
|
+
run_id: chunk.run_id,
|
|
447
|
+
tags: chunk.tags,
|
|
448
|
+
metadata: chunk.metadata,
|
|
449
|
+
data: chunk.data,
|
|
450
|
+
};
|
|
451
|
+
yield event;
|
|
452
|
+
events.push(event);
|
|
453
|
+
}
|
|
436
454
|
}
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
const runnableStream = (0, event_source_parse_js_1.convertEventStreamToIterableReadableDataStream)(body);
|
|
441
|
-
for await (const log of runnableStream) {
|
|
442
|
-
const chunk = revive(JSON.parse(log));
|
|
443
|
-
const event = {
|
|
444
|
-
event: chunk.event,
|
|
445
|
-
name: chunk.name,
|
|
446
|
-
run_id: chunk.run_id,
|
|
447
|
-
tags: chunk.tags,
|
|
448
|
-
metadata: chunk.metadata,
|
|
449
|
-
data: chunk.data,
|
|
450
|
-
};
|
|
451
|
-
yield event;
|
|
452
|
-
events.push(event);
|
|
455
|
+
catch (err) {
|
|
456
|
+
await runManager?.handleChainError(err);
|
|
457
|
+
throw err;
|
|
453
458
|
}
|
|
459
|
+
await runManager?.handleChainEnd(events);
|
|
460
|
+
};
|
|
461
|
+
return generator();
|
|
462
|
+
}
|
|
463
|
+
streamEvents(input, options, streamOptions) {
|
|
464
|
+
if (options.version !== "v1" && options.version !== "v2") {
|
|
465
|
+
throw new Error(`Only versions "v1" and "v2" of the events schema is currently supported.`);
|
|
454
466
|
}
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
throw err;
|
|
467
|
+
if (options.encoding !== undefined) {
|
|
468
|
+
throw new Error("Special encodings are not supported for this runnable.");
|
|
458
469
|
}
|
|
459
|
-
|
|
470
|
+
const eventStream = this._streamEvents(input, options, streamOptions);
|
|
471
|
+
return stream_js_1.IterableReadableStream.fromAsyncGenerator(eventStream);
|
|
460
472
|
}
|
|
461
473
|
}
|
|
462
474
|
exports.RemoteRunnable = RemoteRunnable;
|
|
@@ -2,6 +2,7 @@ import { Runnable, RunnableBatchOptions } from "./base.js";
|
|
|
2
2
|
import { type RunnableConfig } from "./config.js";
|
|
3
3
|
import { CallbackManagerForChainRun } from "../callbacks/manager.js";
|
|
4
4
|
import { RunLogPatch, type LogStreamCallbackHandlerInput, type StreamEvent } from "../tracers/log_stream.js";
|
|
5
|
+
import { IterableReadableStream } from "../utils/stream.js";
|
|
5
6
|
type RemoteRunnableOptions = {
|
|
6
7
|
timeout?: number;
|
|
7
8
|
headers?: Record<string, unknown>;
|
|
@@ -27,12 +28,15 @@ export declare class RemoteRunnable<RunInput, RunOutput, CallOptions extends Run
|
|
|
27
28
|
batch(inputs: RunInput[], options?: Partial<CallOptions> | Partial<CallOptions>[], batchOptions?: RunnableBatchOptions): Promise<(RunOutput | Error)[]>;
|
|
28
29
|
_streamIterator(input: RunInput, options?: Partial<CallOptions>): AsyncGenerator<RunOutput>;
|
|
29
30
|
streamLog(input: RunInput, options?: Partial<CallOptions>, streamOptions?: Omit<LogStreamCallbackHandlerInput, "autoClose">): AsyncGenerator<RunLogPatch>;
|
|
31
|
+
_streamEvents(input: RunInput, options: Partial<CallOptions> & {
|
|
32
|
+
version: "v1" | "v2";
|
|
33
|
+
}, streamOptions?: Omit<LogStreamCallbackHandlerInput, "autoClose"> | undefined): AsyncGenerator<StreamEvent>;
|
|
30
34
|
streamEvents(input: RunInput, options: Partial<CallOptions> & {
|
|
31
|
-
version: "v1";
|
|
32
|
-
}, streamOptions?: Omit<LogStreamCallbackHandlerInput, "autoClose">):
|
|
35
|
+
version: "v1" | "v2";
|
|
36
|
+
}, streamOptions?: Omit<LogStreamCallbackHandlerInput, "autoClose">): IterableReadableStream<StreamEvent>;
|
|
33
37
|
streamEvents(input: RunInput, options: Partial<CallOptions> & {
|
|
34
|
-
version: "v1";
|
|
38
|
+
version: "v1" | "v2";
|
|
35
39
|
encoding: "text/event-stream";
|
|
36
|
-
}, streamOptions?: Omit<LogStreamCallbackHandlerInput, "autoClose">):
|
|
40
|
+
}, streamOptions?: Omit<LogStreamCallbackHandlerInput, "autoClose">): IterableReadableStream<Uint8Array>;
|
|
37
41
|
}
|
|
38
42
|
export {};
|
package/dist/runnables/remote.js
CHANGED
|
@@ -6,7 +6,7 @@ import { RunLogPatch, RunLog, } from "../tracers/log_stream.js";
|
|
|
6
6
|
import { AIMessage, AIMessageChunk, ChatMessage, ChatMessageChunk, FunctionMessage, FunctionMessageChunk, HumanMessage, HumanMessageChunk, SystemMessage, SystemMessageChunk, ToolMessage, ToolMessageChunk, isBaseMessage, } from "../messages/index.js";
|
|
7
7
|
import { GenerationChunk, ChatGenerationChunk, RUN_KEY } from "../outputs.js";
|
|
8
8
|
import { convertEventStreamToIterableReadableDataStream } from "../utils/event_source_parse.js";
|
|
9
|
-
import { concat } from "../utils/stream.js";
|
|
9
|
+
import { IterableReadableStream, concat } from "../utils/stream.js";
|
|
10
10
|
function isSuperset(set, subset) {
|
|
11
11
|
for (const elem of subset) {
|
|
12
12
|
if (!set.has(elem)) {
|
|
@@ -402,57 +402,69 @@ export class RemoteRunnable extends Runnable {
|
|
|
402
402
|
}
|
|
403
403
|
await runManager?.handleChainEnd(runLog?.state.final_output);
|
|
404
404
|
}
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
405
|
+
_streamEvents(input, options, streamOptions) {
|
|
406
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
407
|
+
const outerThis = this;
|
|
408
|
+
const generator = async function* () {
|
|
409
|
+
const [config, kwargs] = outerThis._separateRunnableConfigFromCallOptions(options);
|
|
410
|
+
const callbackManager_ = await getCallbackManagerForConfig(options);
|
|
411
|
+
const runManager = await callbackManager_?.handleChainStart(outerThis.toJSON(), _coerceToDict(input, "input"), undefined, undefined, undefined, undefined, options?.runName);
|
|
412
|
+
// The type is in camelCase but the API only accepts snake_case.
|
|
413
|
+
const camelCaseStreamOptions = {
|
|
414
|
+
include_names: streamOptions?.includeNames,
|
|
415
|
+
include_types: streamOptions?.includeTypes,
|
|
416
|
+
include_tags: streamOptions?.includeTags,
|
|
417
|
+
exclude_names: streamOptions?.excludeNames,
|
|
418
|
+
exclude_types: streamOptions?.excludeTypes,
|
|
419
|
+
exclude_tags: streamOptions?.excludeTags,
|
|
420
|
+
};
|
|
421
|
+
const events = [];
|
|
422
|
+
try {
|
|
423
|
+
const response = await outerThis.post("/stream_events", {
|
|
424
|
+
input,
|
|
425
|
+
config: removeCallbacks(config),
|
|
426
|
+
kwargs,
|
|
427
|
+
...camelCaseStreamOptions,
|
|
428
|
+
diff: false,
|
|
429
|
+
});
|
|
430
|
+
const { body, ok } = response;
|
|
431
|
+
if (!ok) {
|
|
432
|
+
throw new Error(`${response.status} Error: ${await response.text()}`);
|
|
433
|
+
}
|
|
434
|
+
if (!body) {
|
|
435
|
+
throw new Error("Could not begin remote stream events. Please check the given URL and try again.");
|
|
436
|
+
}
|
|
437
|
+
const runnableStream = convertEventStreamToIterableReadableDataStream(body);
|
|
438
|
+
for await (const log of runnableStream) {
|
|
439
|
+
const chunk = revive(JSON.parse(log));
|
|
440
|
+
const event = {
|
|
441
|
+
event: chunk.event,
|
|
442
|
+
name: chunk.name,
|
|
443
|
+
run_id: chunk.run_id,
|
|
444
|
+
tags: chunk.tags,
|
|
445
|
+
metadata: chunk.metadata,
|
|
446
|
+
data: chunk.data,
|
|
447
|
+
};
|
|
448
|
+
yield event;
|
|
449
|
+
events.push(event);
|
|
450
|
+
}
|
|
433
451
|
}
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
const runnableStream = convertEventStreamToIterableReadableDataStream(body);
|
|
438
|
-
for await (const log of runnableStream) {
|
|
439
|
-
const chunk = revive(JSON.parse(log));
|
|
440
|
-
const event = {
|
|
441
|
-
event: chunk.event,
|
|
442
|
-
name: chunk.name,
|
|
443
|
-
run_id: chunk.run_id,
|
|
444
|
-
tags: chunk.tags,
|
|
445
|
-
metadata: chunk.metadata,
|
|
446
|
-
data: chunk.data,
|
|
447
|
-
};
|
|
448
|
-
yield event;
|
|
449
|
-
events.push(event);
|
|
452
|
+
catch (err) {
|
|
453
|
+
await runManager?.handleChainError(err);
|
|
454
|
+
throw err;
|
|
450
455
|
}
|
|
456
|
+
await runManager?.handleChainEnd(events);
|
|
457
|
+
};
|
|
458
|
+
return generator();
|
|
459
|
+
}
|
|
460
|
+
streamEvents(input, options, streamOptions) {
|
|
461
|
+
if (options.version !== "v1" && options.version !== "v2") {
|
|
462
|
+
throw new Error(`Only versions "v1" and "v2" of the events schema is currently supported.`);
|
|
451
463
|
}
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
throw err;
|
|
464
|
+
if (options.encoding !== undefined) {
|
|
465
|
+
throw new Error("Special encodings are not supported for this runnable.");
|
|
455
466
|
}
|
|
456
|
-
|
|
467
|
+
const eventStream = this._streamEvents(input, options, streamOptions);
|
|
468
|
+
return IterableReadableStream.fromAsyncGenerator(eventStream);
|
|
457
469
|
}
|
|
458
470
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|