assistant-stream 0.3.15 → 0.3.17
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 +6 -4
- package/dist/core/AssistantStream.d.ts +35 -31
- package/dist/core/AssistantStream.d.ts.map +1 -1
- package/dist/core/AssistantStream.js +39 -37
- package/dist/core/AssistantStream.js.map +1 -1
- package/dist/core/AssistantStreamChunk.d.ts +71 -78
- package/dist/core/AssistantStreamChunk.d.ts.map +1 -1
- package/dist/core/AssistantStreamChunk.js +0 -2
- package/dist/core/accumulators/AssistantMessageStream.d.ts +15 -11
- package/dist/core/accumulators/AssistantMessageStream.d.ts.map +1 -1
- package/dist/core/accumulators/AssistantMessageStream.js +52 -48
- package/dist/core/accumulators/AssistantMessageStream.js.map +1 -1
- package/dist/core/accumulators/TimingTracker.d.ts +15 -11
- package/dist/core/accumulators/TimingTracker.d.ts.map +1 -1
- package/dist/core/accumulators/TimingTracker.js +36 -43
- package/dist/core/accumulators/TimingTracker.js.map +1 -1
- package/dist/core/accumulators/assistant-message-accumulator.d.ts +21 -11
- package/dist/core/accumulators/assistant-message-accumulator.d.ts.map +1 -1
- package/dist/core/accumulators/assistant-message-accumulator.js +349 -390
- package/dist/core/accumulators/assistant-message-accumulator.js.map +1 -1
- package/dist/core/converters/toGenericMessages.d.ts +49 -47
- package/dist/core/converters/toGenericMessages.d.ts.map +1 -1
- package/dist/core/converters/toGenericMessages.js +122 -136
- package/dist/core/converters/toGenericMessages.js.map +1 -1
- package/dist/core/modules/assistant-stream.d.ts +62 -66
- package/dist/core/modules/assistant-stream.d.ts.map +1 -1
- package/dist/core/modules/assistant-stream.js +176 -182
- package/dist/core/modules/assistant-stream.js.map +1 -1
- package/dist/core/modules/text.d.ts +11 -7
- package/dist/core/modules/text.d.ts.map +1 -1
- package/dist/core/modules/text.js +45 -45
- package/dist/core/modules/text.js.map +1 -1
- package/dist/core/modules/tool-call.d.ts +15 -11
- package/dist/core/modules/tool-call.d.ts.map +1 -1
- package/dist/core/modules/tool-call.js +81 -96
- package/dist/core/modules/tool-call.js.map +1 -1
- package/dist/core/object/ObjectStreamAccumulator.d.ts +13 -9
- package/dist/core/object/ObjectStreamAccumulator.d.ts.map +1 -1
- package/dist/core/object/ObjectStreamAccumulator.js +44 -52
- package/dist/core/object/ObjectStreamAccumulator.js.map +1 -1
- package/dist/core/object/ObjectStreamResponse.d.ts +12 -8
- package/dist/core/object/ObjectStreamResponse.d.ts.map +1 -1
- package/dist/core/object/ObjectStreamResponse.js +52 -71
- package/dist/core/object/ObjectStreamResponse.js.map +1 -1
- package/dist/core/object/createObjectStream.d.ts +14 -8
- package/dist/core/object/createObjectStream.d.ts.map +1 -1
- package/dist/core/object/createObjectStream.js +50 -47
- package/dist/core/object/createObjectStream.js.map +1 -1
- package/dist/core/object/types.d.ts +14 -11
- package/dist/core/object/types.d.ts.map +1 -1
- package/dist/core/object/types.js +0 -2
- package/dist/core/serialization/PlainText.d.ts +11 -7
- package/dist/core/serialization/PlainText.d.ts.map +1 -1
- package/dist/core/serialization/PlainText.js +40 -48
- package/dist/core/serialization/PlainText.js.map +1 -1
- package/dist/core/serialization/assistant-transport/AssistantTransport.d.ts +11 -7
- package/dist/core/serialization/assistant-transport/AssistantTransport.d.ts.map +1 -1
- package/dist/core/serialization/assistant-transport/AssistantTransport.js +102 -117
- package/dist/core/serialization/assistant-transport/AssistantTransport.js.map +1 -1
- package/dist/core/serialization/data-stream/DataStream.d.ts +11 -7
- package/dist/core/serialization/data-stream/DataStream.d.ts.map +1 -1
- package/dist/core/serialization/data-stream/DataStream.js +320 -371
- package/dist/core/serialization/data-stream/DataStream.js.map +1 -1
- package/dist/core/serialization/data-stream/chunk-types.d.ts +101 -100
- package/dist/core/serialization/data-stream/chunk-types.d.ts.map +1 -1
- package/dist/core/serialization/data-stream/chunk-types.js +27 -23
- package/dist/core/serialization/data-stream/chunk-types.js.map +1 -1
- package/dist/core/serialization/data-stream/serialization.d.ts +9 -5
- package/dist/core/serialization/data-stream/serialization.d.ts.map +1 -1
- package/dist/core/serialization/data-stream/serialization.js +23 -24
- package/dist/core/serialization/data-stream/serialization.js.map +1 -1
- package/dist/core/serialization/ui-message-stream/UIMessageStream.d.ts +15 -12
- package/dist/core/serialization/ui-message-stream/UIMessageStream.d.ts.map +1 -1
- package/dist/core/serialization/ui-message-stream/UIMessageStream.js +205 -228
- package/dist/core/serialization/ui-message-stream/UIMessageStream.js.map +1 -1
- package/dist/core/serialization/ui-message-stream/chunk-types.d.ts +68 -65
- package/dist/core/serialization/ui-message-stream/chunk-types.d.ts.map +1 -1
- package/dist/core/serialization/ui-message-stream/chunk-types.js +0 -2
- package/dist/core/tool/ToolCallReader.d.ts +34 -30
- package/dist/core/tool/ToolCallReader.d.ts.map +1 -1
- package/dist/core/tool/ToolCallReader.js +264 -317
- package/dist/core/tool/ToolCallReader.js.map +1 -1
- package/dist/core/tool/ToolExecutionStream.d.ts +20 -17
- package/dist/core/tool/ToolExecutionStream.d.ts.map +1 -1
- package/dist/core/tool/ToolExecutionStream.js +123 -146
- package/dist/core/tool/ToolExecutionStream.js.map +1 -1
- package/dist/core/tool/ToolResponse.d.ts +41 -41
- package/dist/core/tool/ToolResponse.d.ts.map +1 -1
- package/dist/core/tool/ToolResponse.js +50 -56
- package/dist/core/tool/ToolResponse.js.map +1 -1
- package/dist/core/tool/schema-utils.d.ts +19 -15
- package/dist/core/tool/schema-utils.d.ts.map +1 -1
- package/dist/core/tool/schema-utils.js +50 -84
- package/dist/core/tool/schema-utils.js.map +1 -1
- package/dist/core/tool/tool-types.d.ts +103 -122
- package/dist/core/tool/tool-types.d.ts.map +1 -1
- package/dist/core/tool/tool-types.js +0 -2
- package/dist/core/tool/toolResultStream.d.ts +11 -9
- package/dist/core/tool/toolResultStream.d.ts.map +1 -1
- package/dist/core/tool/toolResultStream.js +127 -157
- package/dist/core/tool/toolResultStream.js.map +1 -1
- package/dist/core/tool/type-path-utils.d.ts +8 -19
- package/dist/core/tool/type-path-utils.d.ts.map +1 -1
- package/dist/core/tool/type-path-utils.js +0 -2
- package/dist/core/utils/Counter.d.ts +6 -3
- package/dist/core/utils/Counter.d.ts.map +1 -1
- package/dist/core/utils/Counter.js +10 -6
- package/dist/core/utils/Counter.js.map +1 -1
- package/dist/core/utils/generateId.d.ts +4 -1
- package/dist/core/utils/generateId.d.ts.map +1 -1
- package/dist/core/utils/generateId.js +5 -1
- package/dist/core/utils/generateId.js.map +1 -1
- package/dist/core/utils/stream/AssistantMetaTransformStream.d.ts +15 -11
- package/dist/core/utils/stream/AssistantMetaTransformStream.d.ts.map +1 -1
- package/dist/core/utils/stream/AssistantMetaTransformStream.js +38 -42
- package/dist/core/utils/stream/AssistantMetaTransformStream.js.map +1 -1
- package/dist/core/utils/stream/AssistantTransformStream.d.ts +11 -8
- package/dist/core/utils/stream/AssistantTransformStream.d.ts.map +1 -1
- package/dist/core/utils/stream/AssistantTransformStream.js +37 -35
- package/dist/core/utils/stream/AssistantTransformStream.js.map +1 -1
- package/dist/core/utils/stream/LineDecoderStream.d.ts +6 -3
- package/dist/core/utils/stream/LineDecoderStream.d.ts.map +1 -1
- package/dist/core/utils/stream/LineDecoderStream.js +23 -26
- package/dist/core/utils/stream/LineDecoderStream.js.map +1 -1
- package/dist/core/utils/stream/PipeableTransformStream.d.ts +5 -2
- package/dist/core/utils/stream/PipeableTransformStream.d.ts.map +1 -1
- package/dist/core/utils/stream/PipeableTransformStream.js +14 -10
- package/dist/core/utils/stream/PipeableTransformStream.js.map +1 -1
- package/dist/core/utils/stream/SSE.d.ts +10 -6
- package/dist/core/utils/stream/SSE.d.ts.map +1 -1
- package/dist/core/utils/stream/SSE.js +79 -91
- package/dist/core/utils/stream/SSE.js.map +1 -1
- package/dist/core/utils/stream/UnderlyingReadable.d.ts +7 -4
- package/dist/core/utils/stream/UnderlyingReadable.d.ts.map +1 -1
- package/dist/core/utils/stream/UnderlyingReadable.js +0 -2
- package/dist/core/utils/stream/merge.d.ts +11 -7
- package/dist/core/utils/stream/merge.d.ts.map +1 -1
- package/dist/core/utils/stream/merge.js +68 -170
- package/dist/core/utils/stream/merge.js.map +1 -1
- package/dist/core/utils/stream/path-utils.d.ts +11 -7
- package/dist/core/utils/stream/path-utils.d.ts.map +1 -1
- package/dist/core/utils/stream/path-utils.js +46 -52
- package/dist/core/utils/stream/path-utils.js.map +1 -1
- package/dist/core/utils/types.d.ts +109 -113
- package/dist/core/utils/types.d.ts.map +1 -1
- package/dist/core/utils/types.js +0 -2
- package/dist/core/utils/withPromiseOrValue.d.ts +4 -1
- package/dist/core/utils/withPromiseOrValue.d.ts.map +1 -1
- package/dist/core/utils/withPromiseOrValue.js +12 -15
- package/dist/core/utils/withPromiseOrValue.js.map +1 -1
- package/dist/index.d.ts +23 -24
- package/dist/index.js +16 -16
- package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts +141 -0
- package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts.map +1 -0
- package/dist/resumable/ResumableStreamContext.d.ts +28 -24
- package/dist/resumable/ResumableStreamContext.d.ts.map +1 -1
- package/dist/resumable/ResumableStreamContext.js +99 -114
- package/dist/resumable/ResumableStreamContext.js.map +1 -1
- package/dist/resumable/constants.d.ts +4 -1
- package/dist/resumable/constants.d.ts.map +1 -1
- package/dist/resumable/constants.js +5 -1
- package/dist/resumable/constants.js.map +1 -1
- package/dist/resumable/createResumableAssistantStreamResponse.d.ts +22 -21
- package/dist/resumable/createResumableAssistantStreamResponse.d.ts.map +1 -1
- package/dist/resumable/createResumableAssistantStreamResponse.js +25 -32
- package/dist/resumable/createResumableAssistantStreamResponse.js.map +1 -1
- package/dist/resumable/errors.d.ts +8 -5
- package/dist/resumable/errors.d.ts.map +1 -1
- package/dist/resumable/errors.js +14 -12
- package/dist/resumable/errors.js.map +1 -1
- package/dist/resumable/index.d.ts +7 -7
- package/dist/resumable/index.js +5 -5
- package/dist/resumable/stores/InMemoryResumableStreamStore.d.ts +14 -10
- package/dist/resumable/stores/InMemoryResumableStreamStore.d.ts.map +1 -1
- package/dist/resumable/stores/InMemoryResumableStreamStore.js +159 -193
- package/dist/resumable/stores/InMemoryResumableStreamStore.js.map +1 -1
- package/dist/resumable/stores/ioredis.d.ts +9 -5
- package/dist/resumable/stores/ioredis.d.ts.map +1 -1
- package/dist/resumable/stores/ioredis.js +70 -82
- package/dist/resumable/stores/ioredis.js.map +1 -1
- package/dist/resumable/stores/redis-impl.d.ts +51 -48
- package/dist/resumable/stores/redis-impl.d.ts.map +1 -1
- package/dist/resumable/stores/redis-impl.js +176 -176
- package/dist/resumable/stores/redis-impl.js.map +1 -1
- package/dist/resumable/stores/redis.d.ts +31 -28
- package/dist/resumable/stores/redis.d.ts.map +1 -1
- package/dist/resumable/stores/redis.js +87 -95
- package/dist/resumable/stores/redis.js.map +1 -1
- package/dist/resumable/types.d.ts +29 -26
- package/dist/resumable/types.d.ts.map +1 -1
- package/dist/resumable/types.js +0 -2
- package/dist/utils/AsyncIterableStream.d.ts +5 -2
- package/dist/utils/AsyncIterableStream.d.ts.map +1 -1
- package/dist/utils/AsyncIterableStream.js +17 -16
- package/dist/utils/AsyncIterableStream.js.map +1 -1
- package/dist/utils/json/fix-json.d.ts +4 -1
- package/dist/utils/json/fix-json.d.ts.map +1 -1
- package/dist/utils/json/fix-json.js +286 -380
- package/dist/utils/json/fix-json.js.map +1 -1
- package/dist/utils/json/is-json.d.ts +8 -4
- package/dist/utils/json/is-json.d.ts.map +1 -1
- package/dist/utils/json/is-json.js +13 -21
- package/dist/utils/json/is-json.js.map +1 -1
- package/dist/utils/json/json-value.d.ts +7 -4
- package/dist/utils/json/json-value.d.ts.map +1 -1
- package/dist/utils/json/json-value.js +0 -2
- package/dist/utils/json/parse-partial-json-object.d.ts +11 -8
- package/dist/utils/json/parse-partial-json-object.d.ts.map +1 -1
- package/dist/utils/json/parse-partial-json-object.js +50 -62
- package/dist/utils/json/parse-partial-json-object.js.map +1 -1
- package/dist/utils/promiseWithResolvers.d.ts +7 -4
- package/dist/utils/promiseWithResolvers.d.ts.map +1 -1
- package/dist/utils/promiseWithResolvers.js +17 -10
- package/dist/utils/promiseWithResolvers.js.map +1 -1
- package/dist/utils.d.ts +6 -6
- package/dist/utils.js +5 -5
- package/package.json +3 -3
- package/src/core/modules/assistant-stream.test.ts +104 -0
- package/src/core/modules/assistant-stream.ts +13 -4
- package/dist/core/AssistantStreamChunk.js.map +0 -1
- package/dist/core/object/types.js.map +0 -1
- package/dist/core/serialization/ui-message-stream/chunk-types.js.map +0 -1
- package/dist/core/tool/tool-types.js.map +0 -1
- package/dist/core/tool/type-path-utils.js.map +0 -1
- package/dist/core/utils/stream/UnderlyingReadable.js.map +0 -1
- package/dist/core/utils/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/resumable/index.d.ts.map +0 -1
- package/dist/resumable/index.js.map +0 -1
- package/dist/resumable/types.js.map +0 -1
- package/dist/utils/json/json-value.js.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-types.d.ts","
|
|
1
|
+
{"version":3,"file":"chunk-types.d.ts","names":[],"sources":["../../../../src/core/serialization/ui-message-stream/chunk-types.ts"],"mappings":";;;KAEK,YAAA;AAAA,KASA,KAAA;EACH,WAAA;EACA,YAAY;AAAA;AAAA,KAGF,oBAAA;EACN,IAAA;EAAe,SAAA;AAAA;EACf,IAAA;EAAoB,EAAA;AAAA;EACpB,IAAA;EAAoB,SAAA;AAAA;EACpB,IAAA;AAAA;EACA,IAAA;EAAyB,EAAA;AAAA;EACzB,IAAA;EAAyB,KAAA;AAAA;EACzB,IAAA;AAAA;EAEA,IAAA;EACA,MAAA;IAAU,UAAA;IAAmB,EAAA;IAAY,GAAA;IAAa,KAAA;EAAA;AAAA;EAEtD,IAAA;EAAc,IAAA;IAAQ,QAAA;IAAkB,IAAA;EAAA;AAAA;EAExC,IAAA;EACA,EAAA;EACA,UAAA;EACA,QAAA;AAAA;EAEA,IAAA;EAAyB,QAAA;AAAA;EACzB,IAAA;AAAA;EAEA,IAAA;EACA,UAAA;EACA,MAAA,EAAQ,iBAAA;EACR,OAAA;EACA,QAAA,GAAW,iBAAA;AAAA;EAEX,IAAA;EAAoB,SAAA;AAAA;EAEpB,IAAA;EACA,YAAA,EAAc,YAAA;EACd,KAAA,EAAO,KAAA;EACP,WAAA;AAAA;EAEA,IAAA;EAAgB,YAAA,EAAc,YAAA;EAAc,KAAA,EAAO,KAAA;AAAA;EACnD,IAAA;EAAe,SAAA;AAAA,IACjB,wBAAA;AAAA,KAEQ,wBAAA;EACV,IAAA;EACA,EAAA;EACA,IAAA,EAAM,iBAAiB;EACvB,SAAA;AAAA"}
|
|
@@ -1,34 +1,38 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import { ReadonlyJSONObject, ReadonlyJSONValue } from "../../utils/json/json-value.js";
|
|
2
|
+
import { AsyncIterableStream } from "../../utils/AsyncIterableStream.js";
|
|
3
|
+
import { DeepPartial, TypeAtPath, TypePath } from "./type-path-utils.js";
|
|
4
|
+
import { ToolCallArgsReader, ToolCallReader, ToolCallResponseReader } from "./tool-types.js";
|
|
5
|
+
import { ToolResponse } from "./ToolResponse.js";
|
|
6
|
+
//#region src/core/tool/ToolCallReader.d.ts
|
|
7
|
+
declare class ToolCallArgsReaderImpl<T extends ReadonlyJSONObject> implements ToolCallArgsReader<T> {
|
|
8
|
+
private argTextDeltas;
|
|
9
|
+
private handles;
|
|
10
|
+
private args;
|
|
11
|
+
constructor(argTextDeltas: ReadableStream<string>);
|
|
12
|
+
private processStream;
|
|
13
|
+
get<PathT extends TypePath<T>>(...fieldPath: PathT): Promise<TypeAtPath<T, PathT>>;
|
|
14
|
+
streamValues<PathT extends TypePath<T>>(...fieldPath: PathT): AsyncIterableStream<DeepPartial<TypeAtPath<T, PathT>>>;
|
|
15
|
+
streamText<PathT extends TypePath<T>>(...fieldPath: PathT): TypeAtPath<T, PathT> extends string & infer U ? AsyncIterableStream<U> : never;
|
|
16
|
+
forEach<PathT extends TypePath<T>>(...fieldPath: PathT): TypeAtPath<T, PathT> extends Array<infer U> ? AsyncIterableStream<U> : never;
|
|
15
17
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
declare class ToolCallResponseReaderImpl<TResult extends ReadonlyJSONValue> implements ToolCallResponseReader<TResult> {
|
|
19
|
+
private readonly promise;
|
|
20
|
+
constructor(promise: Promise<ToolResponse<TResult>>);
|
|
21
|
+
get(): Promise<ToolResponse<TResult>>;
|
|
20
22
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
23
|
+
declare class ToolCallReaderImpl<TArgs extends ReadonlyJSONObject, TResult extends ReadonlyJSONValue> implements ToolCallReader<TArgs, TResult> {
|
|
24
|
+
readonly args: ToolCallArgsReaderImpl<TArgs>;
|
|
25
|
+
readonly response: ToolCallResponseReaderImpl<TResult>;
|
|
26
|
+
private readonly writable;
|
|
27
|
+
private readonly resolve;
|
|
28
|
+
argsText: string;
|
|
29
|
+
constructor();
|
|
30
|
+
appendArgsTextDelta(text: string): Promise<void>;
|
|
31
|
+
setResponse(value: ToolResponse<TResult>): void;
|
|
32
|
+
result: {
|
|
33
|
+
get: () => Promise<TResult>;
|
|
34
|
+
};
|
|
33
35
|
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { ToolCallArgsReaderImpl, ToolCallReaderImpl, ToolCallResponseReaderImpl };
|
|
34
38
|
//# sourceMappingURL=ToolCallReader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCallReader.d.ts","
|
|
1
|
+
{"version":3,"file":"ToolCallReader.d.ts","names":[],"sources":["../../../src/core/tool/ToolCallReader.ts"],"mappings":";;;;;;cA0Oa,sBAAA,WAAiC,kBAAA,aACjC,kBAAA,CAAmB,CAAA;EAAA,QAEtB,aAAA;EAAA,QACA,OAAA;EAAA,QACA,IAAA;cAEI,aAAA,EAAe,cAAA;EAAA,QAKb,aAAA;EA6Bd,GAAA,eAAkB,QAAA,CAAS,CAAA,EAAA,CAAA,GACtB,SAAA,EAAW,KAAA,GACb,OAAA,CAAQ,UAAA,CAAW,CAAA,EAAG,KAAA;EA4BzB,YAAA,eAA2B,QAAA,CAAS,CAAA,EAAA,CAAA,GAC/B,SAAA,EAAW,KAAA,GACb,mBAAA,CAAoB,WAAA,CAAY,UAAA,CAAW,CAAA,EAAG,KAAA;EA2BjD,UAAA,eAAyB,QAAA,CAAS,CAAA,EAAA,CAAA,GAC7B,SAAA,EAAW,KAAA,GACb,UAAA,CAAW,CAAA,EAAG,KAAA,6BACb,mBAAA,CAAoB,CAAA;EA4BxB,OAAA,eAAsB,QAAA,CAAS,CAAA,EAAA,CAAA,GAC1B,SAAA,EAAW,KAAA,GACb,UAAA,CAAW,CAAA,EAAG,KAAA,UAAe,KAAA,YAC5B,mBAAA,CAAoB,CAAA;AAAA;AAAA,cA6Bb,0BAAA,iBAA2C,iBAAA,aAC3C,sBAAA,CAAuB,OAAA;EAAA,iBAEL,OAAA;cAAA,OAAA,EAAS,OAAA,CAAQ,YAAA,CAAa,OAAA;EAEpD,GAAA,CAAA,GAAG,OAAA,CAAA,YAAA,CAAA,OAAA;AAAA;AAAA,cAKC,kBAAA,eACG,kBAAA,kBACE,iBAAA,aACL,cAAA,CAAe,KAAA,EAAO,OAAA;EAAA,SAEjB,IAAA,EAAM,sBAAA,CAAuB,KAAA;EAAA,SAC7B,QAAA,EAAU,0BAAA,CAA2B,OAAA;EAAA,iBACpC,QAAA;EAAA,iBACA,OAAA;EAEV,QAAA;;EAYD,mBAAA,CAAoB,IAAA,WAAe,OAAA;EAazC,WAAA,CAAY,KAAA,EAAO,YAAA,CAAa,OAAA;EAIhC,MAAA"}
|
|
@@ -1,322 +1,269 @@
|
|
|
1
1
|
import { promiseWithResolvers } from "../../utils/promiseWithResolvers.js";
|
|
2
|
-
import {
|
|
2
|
+
import { getPartialJsonObjectFieldState, parsePartialJsonObject } from "../../utils/json/parse-partial-json-object.js";
|
|
3
3
|
import { asAsyncIterableStream } from "../../utils/AsyncIterableStream.js";
|
|
4
|
-
|
|
4
|
+
//#region src/core/tool/ToolCallReader.ts
|
|
5
5
|
function getField(obj, fieldPath) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
return current;
|
|
14
|
-
}
|
|
15
|
-
class GetHandle {
|
|
16
|
-
resolve;
|
|
17
|
-
reject;
|
|
18
|
-
disposed = false;
|
|
19
|
-
fieldPath;
|
|
20
|
-
constructor(resolve, reject, fieldPath) {
|
|
21
|
-
this.resolve = resolve;
|
|
22
|
-
this.reject = reject;
|
|
23
|
-
this.fieldPath = fieldPath;
|
|
24
|
-
}
|
|
25
|
-
update(args) {
|
|
26
|
-
if (this.disposed)
|
|
27
|
-
return;
|
|
28
|
-
try {
|
|
29
|
-
// Check if the field is complete
|
|
30
|
-
if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
|
|
31
|
-
const value = getField(args, this.fieldPath);
|
|
32
|
-
if (value !== undefined) {
|
|
33
|
-
this.resolve(value);
|
|
34
|
-
this.dispose();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
catch (e) {
|
|
39
|
-
this.reject(e);
|
|
40
|
-
this.dispose();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
dispose() {
|
|
44
|
-
this.disposed = true;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
class StreamValuesHandle {
|
|
48
|
-
controller;
|
|
49
|
-
disposed = false;
|
|
50
|
-
fieldPath;
|
|
51
|
-
constructor(controller, fieldPath) {
|
|
52
|
-
this.controller = controller;
|
|
53
|
-
this.fieldPath = fieldPath;
|
|
54
|
-
}
|
|
55
|
-
update(args) {
|
|
56
|
-
if (this.disposed)
|
|
57
|
-
return;
|
|
58
|
-
try {
|
|
59
|
-
const value = getField(args, this.fieldPath);
|
|
60
|
-
if (value !== undefined) {
|
|
61
|
-
this.controller.enqueue(value);
|
|
62
|
-
}
|
|
63
|
-
// Check if the field is complete, if so close the stream
|
|
64
|
-
if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
|
|
65
|
-
this.controller.close();
|
|
66
|
-
this.dispose();
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
catch (e) {
|
|
70
|
-
this.controller.error(e);
|
|
71
|
-
this.dispose();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
dispose() {
|
|
75
|
-
this.disposed = true;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
class StreamTextHandle {
|
|
79
|
-
controller;
|
|
80
|
-
disposed = false;
|
|
81
|
-
fieldPath;
|
|
82
|
-
lastValue = undefined;
|
|
83
|
-
constructor(controller, fieldPath) {
|
|
84
|
-
this.controller = controller;
|
|
85
|
-
this.fieldPath = fieldPath;
|
|
86
|
-
}
|
|
87
|
-
update(args) {
|
|
88
|
-
if (this.disposed)
|
|
89
|
-
return;
|
|
90
|
-
try {
|
|
91
|
-
const value = getField(args, this.fieldPath);
|
|
92
|
-
if (value !== undefined && typeof value === "string") {
|
|
93
|
-
const delta = value.substring(this.lastValue?.length || 0);
|
|
94
|
-
this.lastValue = value;
|
|
95
|
-
this.controller.enqueue(delta);
|
|
96
|
-
}
|
|
97
|
-
// Check if the field is complete, if so close the stream
|
|
98
|
-
if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
|
|
99
|
-
this.controller.close();
|
|
100
|
-
this.dispose();
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
catch (e) {
|
|
104
|
-
this.controller.error(e);
|
|
105
|
-
this.dispose();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
dispose() {
|
|
109
|
-
this.disposed = true;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
class ForEachHandle {
|
|
113
|
-
controller;
|
|
114
|
-
disposed = false;
|
|
115
|
-
fieldPath;
|
|
116
|
-
processedIndexes = new Set();
|
|
117
|
-
constructor(controller, fieldPath) {
|
|
118
|
-
this.controller = controller;
|
|
119
|
-
this.fieldPath = fieldPath;
|
|
120
|
-
}
|
|
121
|
-
update(args) {
|
|
122
|
-
if (this.disposed)
|
|
123
|
-
return;
|
|
124
|
-
try {
|
|
125
|
-
const array = getField(args, this.fieldPath);
|
|
126
|
-
if (!Array.isArray(array)) {
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
// Check each array element and emit completed ones that haven't been processed
|
|
130
|
-
for (let i = 0; i < array.length; i++) {
|
|
131
|
-
if (!this.processedIndexes.has(i)) {
|
|
132
|
-
const elementPath = [...this.fieldPath, i];
|
|
133
|
-
if (getPartialJsonObjectFieldState(args, elementPath) === "complete") {
|
|
134
|
-
this.controller.enqueue(array[i]);
|
|
135
|
-
this.processedIndexes.add(i);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
// Check if the entire array is complete
|
|
140
|
-
if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
|
|
141
|
-
this.controller.close();
|
|
142
|
-
this.dispose();
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
catch (e) {
|
|
146
|
-
this.controller.error(e);
|
|
147
|
-
this.dispose();
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
dispose() {
|
|
151
|
-
this.disposed = true;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
// Implementation of ToolCallReader that uses stream of partial JSON
|
|
155
|
-
export class ToolCallArgsReaderImpl {
|
|
156
|
-
argTextDeltas;
|
|
157
|
-
handles = new Set();
|
|
158
|
-
args = parsePartialJsonObject("");
|
|
159
|
-
constructor(argTextDeltas) {
|
|
160
|
-
this.argTextDeltas = argTextDeltas;
|
|
161
|
-
this.processStream();
|
|
162
|
-
}
|
|
163
|
-
async processStream() {
|
|
164
|
-
try {
|
|
165
|
-
let accumulatedText = "";
|
|
166
|
-
const reader = this.argTextDeltas.getReader();
|
|
167
|
-
while (true) {
|
|
168
|
-
const { value, done } = await reader.read();
|
|
169
|
-
if (done)
|
|
170
|
-
break;
|
|
171
|
-
accumulatedText += value;
|
|
172
|
-
const parsedArgs = parsePartialJsonObject(accumulatedText);
|
|
173
|
-
if (parsedArgs !== undefined) {
|
|
174
|
-
this.args = parsedArgs;
|
|
175
|
-
// Notify all handles of the updated args
|
|
176
|
-
for (const handle of this.handles) {
|
|
177
|
-
handle.update(parsedArgs);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
catch (error) {
|
|
183
|
-
console.error("Error processing argument stream:", error);
|
|
184
|
-
// Notify handles of the error
|
|
185
|
-
for (const handle of this.handles) {
|
|
186
|
-
handle.dispose();
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
get(...fieldPath) {
|
|
191
|
-
return new Promise((resolve, reject) => {
|
|
192
|
-
const handle = new GetHandle(resolve, reject, fieldPath);
|
|
193
|
-
// Check if the field is already complete in current args
|
|
194
|
-
if (this.args &&
|
|
195
|
-
getPartialJsonObjectFieldState(this.args, fieldPath) === "complete") {
|
|
196
|
-
const value = getField(this.args, fieldPath);
|
|
197
|
-
if (value !== undefined) {
|
|
198
|
-
resolve(value);
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
this.handles.add(handle);
|
|
203
|
-
handle.update(this.args);
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
streamValues(...fieldPath) {
|
|
207
|
-
// Use a type assertion to convert the complex TypePath to a simple array
|
|
208
|
-
const simplePath = fieldPath;
|
|
209
|
-
const stream = new ReadableStream({
|
|
210
|
-
start: (controller) => {
|
|
211
|
-
const handle = new StreamValuesHandle(controller, simplePath);
|
|
212
|
-
this.handles.add(handle);
|
|
213
|
-
// Check current args immediately
|
|
214
|
-
handle.update(this.args);
|
|
215
|
-
},
|
|
216
|
-
cancel: () => {
|
|
217
|
-
// Find and dispose the corresponding handle
|
|
218
|
-
for (const handle of this.handles) {
|
|
219
|
-
if (handle instanceof StreamValuesHandle) {
|
|
220
|
-
handle.dispose();
|
|
221
|
-
this.handles.delete(handle);
|
|
222
|
-
break;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
},
|
|
226
|
-
});
|
|
227
|
-
return asAsyncIterableStream(stream);
|
|
228
|
-
}
|
|
229
|
-
streamText(...fieldPath) {
|
|
230
|
-
// Use a type assertion to convert the complex TypePath to a simple array
|
|
231
|
-
const simplePath = fieldPath;
|
|
232
|
-
const stream = new ReadableStream({
|
|
233
|
-
start: (controller) => {
|
|
234
|
-
const handle = new StreamTextHandle(controller, simplePath);
|
|
235
|
-
this.handles.add(handle);
|
|
236
|
-
// Check current args immediately
|
|
237
|
-
handle.update(this.args);
|
|
238
|
-
},
|
|
239
|
-
cancel: () => {
|
|
240
|
-
// Find and dispose the corresponding handle
|
|
241
|
-
for (const handle of this.handles) {
|
|
242
|
-
if (handle instanceof StreamTextHandle) {
|
|
243
|
-
handle.dispose();
|
|
244
|
-
this.handles.delete(handle);
|
|
245
|
-
break;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
},
|
|
249
|
-
});
|
|
250
|
-
return asAsyncIterableStream(stream);
|
|
251
|
-
}
|
|
252
|
-
forEach(...fieldPath) {
|
|
253
|
-
// Use a type assertion to convert the complex TypePath to a simple array
|
|
254
|
-
const simplePath = fieldPath;
|
|
255
|
-
const stream = new ReadableStream({
|
|
256
|
-
start: (controller) => {
|
|
257
|
-
const handle = new ForEachHandle(controller, simplePath);
|
|
258
|
-
this.handles.add(handle);
|
|
259
|
-
// Check current args immediately
|
|
260
|
-
handle.update(this.args);
|
|
261
|
-
},
|
|
262
|
-
cancel: () => {
|
|
263
|
-
// Find and dispose the corresponding handle
|
|
264
|
-
for (const handle of this.handles) {
|
|
265
|
-
if (handle instanceof ForEachHandle) {
|
|
266
|
-
handle.dispose();
|
|
267
|
-
this.handles.delete(handle);
|
|
268
|
-
break;
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
},
|
|
272
|
-
});
|
|
273
|
-
return asAsyncIterableStream(stream);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
export class ToolCallResponseReaderImpl {
|
|
277
|
-
promise;
|
|
278
|
-
constructor(promise) {
|
|
279
|
-
this.promise = promise;
|
|
280
|
-
}
|
|
281
|
-
get() {
|
|
282
|
-
return this.promise;
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
export class ToolCallReaderImpl {
|
|
286
|
-
args;
|
|
287
|
-
response;
|
|
288
|
-
writable;
|
|
289
|
-
resolve;
|
|
290
|
-
argsText = "";
|
|
291
|
-
constructor() {
|
|
292
|
-
const stream = new TransformStream();
|
|
293
|
-
this.writable = stream.writable;
|
|
294
|
-
this.args = new ToolCallArgsReaderImpl(stream.readable);
|
|
295
|
-
const { promise, resolve } = promiseWithResolvers();
|
|
296
|
-
this.resolve = resolve;
|
|
297
|
-
this.response = new ToolCallResponseReaderImpl(promise);
|
|
298
|
-
}
|
|
299
|
-
async appendArgsTextDelta(text) {
|
|
300
|
-
const writer = this.writable.getWriter();
|
|
301
|
-
try {
|
|
302
|
-
await writer.write(text);
|
|
303
|
-
}
|
|
304
|
-
catch (err) {
|
|
305
|
-
console.warn(err);
|
|
306
|
-
}
|
|
307
|
-
finally {
|
|
308
|
-
writer.releaseLock();
|
|
309
|
-
}
|
|
310
|
-
this.argsText += text;
|
|
311
|
-
}
|
|
312
|
-
setResponse(value) {
|
|
313
|
-
this.resolve(value);
|
|
314
|
-
}
|
|
315
|
-
result = {
|
|
316
|
-
get: async () => {
|
|
317
|
-
const response = await this.response.get();
|
|
318
|
-
return response.result;
|
|
319
|
-
},
|
|
320
|
-
};
|
|
6
|
+
let current = obj;
|
|
7
|
+
for (const key of fieldPath) {
|
|
8
|
+
if (current === void 0 || current === null) return;
|
|
9
|
+
current = current[key];
|
|
10
|
+
}
|
|
11
|
+
return current;
|
|
321
12
|
}
|
|
13
|
+
var GetHandle = class {
|
|
14
|
+
resolve;
|
|
15
|
+
reject;
|
|
16
|
+
disposed = false;
|
|
17
|
+
fieldPath;
|
|
18
|
+
constructor(resolve, reject, fieldPath) {
|
|
19
|
+
this.resolve = resolve;
|
|
20
|
+
this.reject = reject;
|
|
21
|
+
this.fieldPath = fieldPath;
|
|
22
|
+
}
|
|
23
|
+
update(args) {
|
|
24
|
+
if (this.disposed) return;
|
|
25
|
+
try {
|
|
26
|
+
if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
|
|
27
|
+
const value = getField(args, this.fieldPath);
|
|
28
|
+
if (value !== void 0) {
|
|
29
|
+
this.resolve(value);
|
|
30
|
+
this.dispose();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
} catch (e) {
|
|
34
|
+
this.reject(e);
|
|
35
|
+
this.dispose();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
dispose() {
|
|
39
|
+
this.disposed = true;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
var StreamValuesHandle = class {
|
|
43
|
+
controller;
|
|
44
|
+
disposed = false;
|
|
45
|
+
fieldPath;
|
|
46
|
+
constructor(controller, fieldPath) {
|
|
47
|
+
this.controller = controller;
|
|
48
|
+
this.fieldPath = fieldPath;
|
|
49
|
+
}
|
|
50
|
+
update(args) {
|
|
51
|
+
if (this.disposed) return;
|
|
52
|
+
try {
|
|
53
|
+
const value = getField(args, this.fieldPath);
|
|
54
|
+
if (value !== void 0) this.controller.enqueue(value);
|
|
55
|
+
if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
|
|
56
|
+
this.controller.close();
|
|
57
|
+
this.dispose();
|
|
58
|
+
}
|
|
59
|
+
} catch (e) {
|
|
60
|
+
this.controller.error(e);
|
|
61
|
+
this.dispose();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
dispose() {
|
|
65
|
+
this.disposed = true;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
var StreamTextHandle = class {
|
|
69
|
+
controller;
|
|
70
|
+
disposed = false;
|
|
71
|
+
fieldPath;
|
|
72
|
+
lastValue = void 0;
|
|
73
|
+
constructor(controller, fieldPath) {
|
|
74
|
+
this.controller = controller;
|
|
75
|
+
this.fieldPath = fieldPath;
|
|
76
|
+
}
|
|
77
|
+
update(args) {
|
|
78
|
+
if (this.disposed) return;
|
|
79
|
+
try {
|
|
80
|
+
const value = getField(args, this.fieldPath);
|
|
81
|
+
if (value !== void 0 && typeof value === "string") {
|
|
82
|
+
const delta = value.substring(this.lastValue?.length || 0);
|
|
83
|
+
this.lastValue = value;
|
|
84
|
+
this.controller.enqueue(delta);
|
|
85
|
+
}
|
|
86
|
+
if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
|
|
87
|
+
this.controller.close();
|
|
88
|
+
this.dispose();
|
|
89
|
+
}
|
|
90
|
+
} catch (e) {
|
|
91
|
+
this.controller.error(e);
|
|
92
|
+
this.dispose();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
dispose() {
|
|
96
|
+
this.disposed = true;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
var ForEachHandle = class {
|
|
100
|
+
controller;
|
|
101
|
+
disposed = false;
|
|
102
|
+
fieldPath;
|
|
103
|
+
processedIndexes = /* @__PURE__ */ new Set();
|
|
104
|
+
constructor(controller, fieldPath) {
|
|
105
|
+
this.controller = controller;
|
|
106
|
+
this.fieldPath = fieldPath;
|
|
107
|
+
}
|
|
108
|
+
update(args) {
|
|
109
|
+
if (this.disposed) return;
|
|
110
|
+
try {
|
|
111
|
+
const array = getField(args, this.fieldPath);
|
|
112
|
+
if (!Array.isArray(array)) return;
|
|
113
|
+
for (let i = 0; i < array.length; i++) if (!this.processedIndexes.has(i)) {
|
|
114
|
+
if (getPartialJsonObjectFieldState(args, [...this.fieldPath, i]) === "complete") {
|
|
115
|
+
this.controller.enqueue(array[i]);
|
|
116
|
+
this.processedIndexes.add(i);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
|
|
120
|
+
this.controller.close();
|
|
121
|
+
this.dispose();
|
|
122
|
+
}
|
|
123
|
+
} catch (e) {
|
|
124
|
+
this.controller.error(e);
|
|
125
|
+
this.dispose();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
dispose() {
|
|
129
|
+
this.disposed = true;
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
var ToolCallArgsReaderImpl = class {
|
|
133
|
+
argTextDeltas;
|
|
134
|
+
handles = /* @__PURE__ */ new Set();
|
|
135
|
+
args = parsePartialJsonObject("");
|
|
136
|
+
constructor(argTextDeltas) {
|
|
137
|
+
this.argTextDeltas = argTextDeltas;
|
|
138
|
+
this.processStream();
|
|
139
|
+
}
|
|
140
|
+
async processStream() {
|
|
141
|
+
try {
|
|
142
|
+
let accumulatedText = "";
|
|
143
|
+
const reader = this.argTextDeltas.getReader();
|
|
144
|
+
while (true) {
|
|
145
|
+
const { value, done } = await reader.read();
|
|
146
|
+
if (done) break;
|
|
147
|
+
accumulatedText += value;
|
|
148
|
+
const parsedArgs = parsePartialJsonObject(accumulatedText);
|
|
149
|
+
if (parsedArgs !== void 0) {
|
|
150
|
+
this.args = parsedArgs;
|
|
151
|
+
for (const handle of this.handles) handle.update(parsedArgs);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
} catch (error) {
|
|
155
|
+
console.error("Error processing argument stream:", error);
|
|
156
|
+
for (const handle of this.handles) handle.dispose();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
get(...fieldPath) {
|
|
160
|
+
return new Promise((resolve, reject) => {
|
|
161
|
+
const handle = new GetHandle(resolve, reject, fieldPath);
|
|
162
|
+
if (this.args && getPartialJsonObjectFieldState(this.args, fieldPath) === "complete") {
|
|
163
|
+
const value = getField(this.args, fieldPath);
|
|
164
|
+
if (value !== void 0) {
|
|
165
|
+
resolve(value);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
this.handles.add(handle);
|
|
170
|
+
handle.update(this.args);
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
streamValues(...fieldPath) {
|
|
174
|
+
const simplePath = fieldPath;
|
|
175
|
+
return asAsyncIterableStream(new ReadableStream({
|
|
176
|
+
start: (controller) => {
|
|
177
|
+
const handle = new StreamValuesHandle(controller, simplePath);
|
|
178
|
+
this.handles.add(handle);
|
|
179
|
+
handle.update(this.args);
|
|
180
|
+
},
|
|
181
|
+
cancel: () => {
|
|
182
|
+
for (const handle of this.handles) if (handle instanceof StreamValuesHandle) {
|
|
183
|
+
handle.dispose();
|
|
184
|
+
this.handles.delete(handle);
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}));
|
|
189
|
+
}
|
|
190
|
+
streamText(...fieldPath) {
|
|
191
|
+
const simplePath = fieldPath;
|
|
192
|
+
return asAsyncIterableStream(new ReadableStream({
|
|
193
|
+
start: (controller) => {
|
|
194
|
+
const handle = new StreamTextHandle(controller, simplePath);
|
|
195
|
+
this.handles.add(handle);
|
|
196
|
+
handle.update(this.args);
|
|
197
|
+
},
|
|
198
|
+
cancel: () => {
|
|
199
|
+
for (const handle of this.handles) if (handle instanceof StreamTextHandle) {
|
|
200
|
+
handle.dispose();
|
|
201
|
+
this.handles.delete(handle);
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}));
|
|
206
|
+
}
|
|
207
|
+
forEach(...fieldPath) {
|
|
208
|
+
const simplePath = fieldPath;
|
|
209
|
+
return asAsyncIterableStream(new ReadableStream({
|
|
210
|
+
start: (controller) => {
|
|
211
|
+
const handle = new ForEachHandle(controller, simplePath);
|
|
212
|
+
this.handles.add(handle);
|
|
213
|
+
handle.update(this.args);
|
|
214
|
+
},
|
|
215
|
+
cancel: () => {
|
|
216
|
+
for (const handle of this.handles) if (handle instanceof ForEachHandle) {
|
|
217
|
+
handle.dispose();
|
|
218
|
+
this.handles.delete(handle);
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}));
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
var ToolCallResponseReaderImpl = class {
|
|
226
|
+
promise;
|
|
227
|
+
constructor(promise) {
|
|
228
|
+
this.promise = promise;
|
|
229
|
+
}
|
|
230
|
+
get() {
|
|
231
|
+
return this.promise;
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
var ToolCallReaderImpl = class {
|
|
235
|
+
args;
|
|
236
|
+
response;
|
|
237
|
+
writable;
|
|
238
|
+
resolve;
|
|
239
|
+
argsText = "";
|
|
240
|
+
constructor() {
|
|
241
|
+
const stream = new TransformStream();
|
|
242
|
+
this.writable = stream.writable;
|
|
243
|
+
this.args = new ToolCallArgsReaderImpl(stream.readable);
|
|
244
|
+
const { promise, resolve } = promiseWithResolvers();
|
|
245
|
+
this.resolve = resolve;
|
|
246
|
+
this.response = new ToolCallResponseReaderImpl(promise);
|
|
247
|
+
}
|
|
248
|
+
async appendArgsTextDelta(text) {
|
|
249
|
+
const writer = this.writable.getWriter();
|
|
250
|
+
try {
|
|
251
|
+
await writer.write(text);
|
|
252
|
+
} catch (err) {
|
|
253
|
+
console.warn(err);
|
|
254
|
+
} finally {
|
|
255
|
+
writer.releaseLock();
|
|
256
|
+
}
|
|
257
|
+
this.argsText += text;
|
|
258
|
+
}
|
|
259
|
+
setResponse(value) {
|
|
260
|
+
this.resolve(value);
|
|
261
|
+
}
|
|
262
|
+
result = { get: async () => {
|
|
263
|
+
return (await this.response.get()).result;
|
|
264
|
+
} };
|
|
265
|
+
};
|
|
266
|
+
//#endregion
|
|
267
|
+
export { ToolCallArgsReaderImpl, ToolCallReaderImpl, ToolCallResponseReaderImpl };
|
|
268
|
+
|
|
322
269
|
//# sourceMappingURL=ToolCallReader.js.map
|