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":"ToolCallReader.js","sourceRoot":"","sources":["../../../src/core/tool/ToolCallReader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ToolCallReader.js","names":[],"sources":["../../../src/core/tool/ToolCallReader.ts"],"sourcesContent":["import { promiseWithResolvers } from \"../../utils/promiseWithResolvers\";\nimport {\n parsePartialJsonObject,\n getPartialJsonObjectFieldState,\n} from \"../../utils/json/parse-partial-json-object\";\nimport type {\n ToolCallArgsReader,\n ToolCallReader,\n ToolCallResponseReader,\n} from \"./tool-types\";\nimport type { DeepPartial, TypeAtPath, TypePath } from \"./type-path-utils\";\nimport type { ToolResponse } from \"./ToolResponse\";\nimport { asAsyncIterableStream } from \"../../utils/AsyncIterableStream\";\nimport type {\n AsyncIterableStream,\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"../../utils\";\n\n// TODO: remove dispose\n\nfunction getField<T>(obj: T, fieldPath: (string | number)[]): unknown {\n let current: unknown = obj;\n for (const key of fieldPath) {\n if (current === undefined || current === null) {\n return undefined;\n }\n current = current[key as keyof typeof current];\n }\n return current;\n}\n\ninterface Handle {\n update(args: unknown): void;\n dispose(): void;\n}\n\nclass GetHandle<T, TValue> implements Handle {\n private resolve: (value: TValue) => void;\n private reject: (reason: unknown) => void;\n private disposed = false;\n private fieldPath: (string | number)[];\n\n constructor(\n resolve: (value: TValue) => void,\n reject: (reason: unknown) => void,\n fieldPath: (string | number)[],\n ) {\n this.resolve = resolve;\n this.reject = reject;\n this.fieldPath = fieldPath;\n }\n\n update(args: unknown): void {\n if (this.disposed) return;\n\n try {\n // Check if the field is complete\n if (\n getPartialJsonObjectFieldState(\n args as Record<string, unknown>,\n this.fieldPath,\n ) === \"complete\"\n ) {\n const value = getField(args as T, this.fieldPath);\n if (value !== undefined) {\n this.resolve(value as TValue);\n this.dispose();\n }\n }\n } catch (e) {\n this.reject(e);\n this.dispose();\n }\n }\n\n dispose(): void {\n this.disposed = true;\n }\n}\n\nclass StreamValuesHandle<T> implements Handle {\n private controller: ReadableStreamDefaultController<unknown>;\n private disposed = false;\n private fieldPath: (string | number)[];\n\n constructor(\n controller: ReadableStreamDefaultController<unknown>,\n fieldPath: (string | number)[],\n ) {\n this.controller = controller;\n this.fieldPath = fieldPath;\n }\n\n update(args: unknown): void {\n if (this.disposed) return;\n\n try {\n const value = getField(args as T, this.fieldPath);\n\n if (value !== undefined) {\n this.controller.enqueue(value);\n }\n\n // Check if the field is complete, if so close the stream\n if (\n getPartialJsonObjectFieldState(\n args as Record<string, unknown>,\n this.fieldPath,\n ) === \"complete\"\n ) {\n this.controller.close();\n this.dispose();\n }\n } catch (e) {\n this.controller.error(e);\n this.dispose();\n }\n }\n\n dispose(): void {\n this.disposed = true;\n }\n}\n\nclass StreamTextHandle<T> implements Handle {\n private controller: ReadableStreamDefaultController<unknown>;\n private disposed = false;\n private fieldPath: (string | number)[];\n private lastValue: string | undefined = undefined;\n\n constructor(\n controller: ReadableStreamDefaultController<unknown>,\n fieldPath: (string | number)[],\n ) {\n this.controller = controller;\n this.fieldPath = fieldPath;\n }\n\n update(args: unknown): void {\n if (this.disposed) return;\n\n try {\n const value = getField(args as T, this.fieldPath);\n\n if (value !== undefined && typeof value === \"string\") {\n const delta = value.substring(this.lastValue?.length || 0);\n this.lastValue = value;\n this.controller.enqueue(delta);\n }\n\n // Check if the field is complete, if so close the stream\n if (\n getPartialJsonObjectFieldState(\n args as Record<string, unknown>,\n this.fieldPath,\n ) === \"complete\"\n ) {\n this.controller.close();\n this.dispose();\n }\n } catch (e) {\n this.controller.error(e);\n this.dispose();\n }\n }\n\n dispose(): void {\n this.disposed = true;\n }\n}\n\nclass ForEachHandle<T> implements Handle {\n private controller: ReadableStreamDefaultController<unknown>;\n private disposed = false;\n private fieldPath: (string | number)[];\n private processedIndexes = new Set<number>();\n\n constructor(\n controller: ReadableStreamDefaultController<unknown>,\n fieldPath: (string | number)[],\n ) {\n this.controller = controller;\n this.fieldPath = fieldPath;\n }\n\n update(args: unknown): void {\n if (this.disposed) return;\n\n try {\n const array = getField(args as T, this.fieldPath);\n\n if (!Array.isArray(array)) {\n return;\n }\n\n // Check each array element and emit completed ones that haven't been processed\n for (let i = 0; i < array.length; i++) {\n if (!this.processedIndexes.has(i)) {\n const elementPath = [...this.fieldPath, i];\n if (\n getPartialJsonObjectFieldState(\n args as Record<string, unknown>,\n elementPath,\n ) === \"complete\"\n ) {\n this.controller.enqueue(array[i]);\n this.processedIndexes.add(i);\n }\n }\n }\n\n // Check if the entire array is complete\n if (\n getPartialJsonObjectFieldState(\n args as Record<string, unknown>,\n this.fieldPath,\n ) === \"complete\"\n ) {\n this.controller.close();\n this.dispose();\n }\n } catch (e) {\n this.controller.error(e);\n this.dispose();\n }\n }\n\n dispose(): void {\n this.disposed = true;\n }\n}\n\n// Implementation of ToolCallReader that uses stream of partial JSON\nexport class ToolCallArgsReaderImpl<T extends ReadonlyJSONObject>\n implements ToolCallArgsReader<T>\n{\n private argTextDeltas: ReadableStream<string>;\n private handles: Set<Handle> = new Set();\n private args: unknown = parsePartialJsonObject(\"\");\n\n constructor(argTextDeltas: ReadableStream<string>) {\n this.argTextDeltas = argTextDeltas;\n this.processStream();\n }\n\n private async processStream(): Promise<void> {\n try {\n let accumulatedText = \"\";\n const reader = this.argTextDeltas.getReader();\n\n while (true) {\n const { value, done } = await reader.read();\n if (done) break;\n\n accumulatedText += value;\n const parsedArgs = parsePartialJsonObject(accumulatedText);\n\n if (parsedArgs !== undefined) {\n this.args = parsedArgs;\n // Notify all handles of the updated args\n for (const handle of this.handles) {\n handle.update(parsedArgs);\n }\n }\n }\n } catch (error) {\n console.error(\"Error processing argument stream:\", error);\n // Notify handles of the error\n for (const handle of this.handles) {\n handle.dispose();\n }\n }\n }\n\n get<PathT extends TypePath<T>>(\n ...fieldPath: PathT\n ): Promise<TypeAtPath<T, PathT>> {\n return new Promise<TypeAtPath<T, PathT>>((resolve, reject) => {\n const handle = new GetHandle<T, TypeAtPath<T, PathT>>(\n resolve,\n reject,\n fieldPath,\n );\n\n // Check if the field is already complete in current args\n if (\n this.args &&\n getPartialJsonObjectFieldState(\n this.args as Record<string, unknown>,\n fieldPath,\n ) === \"complete\"\n ) {\n const value = getField(this.args as T, fieldPath);\n if (value !== undefined) {\n resolve(value as TypeAtPath<T, PathT>);\n return;\n }\n }\n\n this.handles.add(handle);\n handle.update(this.args);\n });\n }\n\n streamValues<PathT extends TypePath<T>>(\n ...fieldPath: PathT\n ): AsyncIterableStream<DeepPartial<TypeAtPath<T, PathT>>> {\n // Use a type assertion to convert the complex TypePath to a simple array\n const simplePath = fieldPath as unknown as (string | number)[];\n\n const stream = new ReadableStream<DeepPartial<TypeAtPath<T, PathT>>>({\n start: (controller) => {\n const handle = new StreamValuesHandle<T>(controller, simplePath);\n this.handles.add(handle);\n\n // Check current args immediately\n handle.update(this.args);\n },\n cancel: () => {\n // Find and dispose the corresponding handle\n for (const handle of this.handles) {\n if (handle instanceof StreamValuesHandle) {\n handle.dispose();\n this.handles.delete(handle);\n break;\n }\n }\n },\n });\n\n return asAsyncIterableStream(stream) as any;\n }\n\n streamText<PathT extends TypePath<T>>(\n ...fieldPath: PathT\n ): TypeAtPath<T, PathT> extends string & infer U\n ? AsyncIterableStream<U>\n : never {\n // Use a type assertion to convert the complex TypePath to a simple array\n const simplePath = fieldPath as unknown as (string | number)[];\n\n const stream = new ReadableStream<unknown>({\n start: (controller) => {\n const handle = new StreamTextHandle<T>(controller, simplePath);\n this.handles.add(handle);\n\n // Check current args immediately\n handle.update(this.args);\n },\n cancel: () => {\n // Find and dispose the corresponding handle\n for (const handle of this.handles) {\n if (handle instanceof StreamTextHandle) {\n handle.dispose();\n this.handles.delete(handle);\n break;\n }\n }\n },\n });\n\n return asAsyncIterableStream(stream) as any;\n }\n\n forEach<PathT extends TypePath<T>>(\n ...fieldPath: PathT\n ): TypeAtPath<T, PathT> extends Array<infer U>\n ? AsyncIterableStream<U>\n : never {\n // Use a type assertion to convert the complex TypePath to a simple array\n const simplePath = fieldPath as unknown as (string | number)[];\n\n const stream = new ReadableStream<unknown>({\n start: (controller) => {\n const handle = new ForEachHandle<T>(controller, simplePath);\n this.handles.add(handle);\n\n // Check current args immediately\n handle.update(this.args);\n },\n cancel: () => {\n // Find and dispose the corresponding handle\n for (const handle of this.handles) {\n if (handle instanceof ForEachHandle) {\n handle.dispose();\n this.handles.delete(handle);\n break;\n }\n }\n },\n });\n\n return asAsyncIterableStream(stream) as any;\n }\n}\n\nexport class ToolCallResponseReaderImpl<TResult extends ReadonlyJSONValue>\n implements ToolCallResponseReader<TResult>\n{\n constructor(private readonly promise: Promise<ToolResponse<TResult>>) {}\n\n public get() {\n return this.promise;\n }\n}\n\nexport class ToolCallReaderImpl<\n TArgs extends ReadonlyJSONObject,\n TResult extends ReadonlyJSONValue,\n> implements ToolCallReader<TArgs, TResult>\n{\n public readonly args: ToolCallArgsReaderImpl<TArgs>;\n public readonly response: ToolCallResponseReaderImpl<TResult>;\n private readonly writable: WritableStream<string>;\n private readonly resolve: (value: ToolResponse<TResult>) => void;\n\n public argsText: string = \"\";\n\n constructor() {\n const stream = new TransformStream<string, string>();\n this.writable = stream.writable;\n this.args = new ToolCallArgsReaderImpl<TArgs>(stream.readable);\n\n const { promise, resolve } = promiseWithResolvers<ToolResponse<TResult>>();\n this.resolve = resolve;\n this.response = new ToolCallResponseReaderImpl<TResult>(promise);\n }\n\n async appendArgsTextDelta(text: string): Promise<void> {\n const writer = this.writable.getWriter();\n try {\n await writer.write(text);\n } catch (err) {\n console.warn(err);\n } finally {\n writer.releaseLock();\n }\n\n this.argsText += text;\n }\n\n setResponse(value: ToolResponse<TResult>): void {\n this.resolve(value);\n }\n\n result = {\n get: async () => {\n const response = await this.response.get();\n return response.result;\n },\n };\n}\n"],"mappings":";;;;AAqBA,SAAS,SAAY,KAAQ,WAAyC;CACpE,IAAI,UAAmB;CACvB,KAAK,MAAM,OAAO,WAAW;EAC3B,IAAI,YAAY,KAAA,KAAa,YAAY,MACvC;EAEF,UAAU,QAAQ;CACpB;CACA,OAAO;AACT;AAOA,IAAM,YAAN,MAA6C;CAC3C;CACA;CACA,WAAmB;CACnB;CAEA,YACE,SACA,QACA,WACA;EACA,KAAK,UAAU;EACf,KAAK,SAAS;EACd,KAAK,YAAY;CACnB;CAEA,OAAO,MAAqB;EAC1B,IAAI,KAAK,UAAU;EAEnB,IAAI;GAEF,IACE,+BACE,MACA,KAAK,SACP,MAAM,YACN;IACA,MAAM,QAAQ,SAAS,MAAW,KAAK,SAAS;IAChD,IAAI,UAAU,KAAA,GAAW;KACvB,KAAK,QAAQ,KAAe;KAC5B,KAAK,QAAQ;IACf;GACF;EACF,SAAS,GAAG;GACV,KAAK,OAAO,CAAC;GACb,KAAK,QAAQ;EACf;CACF;CAEA,UAAgB;EACd,KAAK,WAAW;CAClB;AACF;AAEA,IAAM,qBAAN,MAA8C;CAC5C;CACA,WAAmB;CACnB;CAEA,YACE,YACA,WACA;EACA,KAAK,aAAa;EAClB,KAAK,YAAY;CACnB;CAEA,OAAO,MAAqB;EAC1B,IAAI,KAAK,UAAU;EAEnB,IAAI;GACF,MAAM,QAAQ,SAAS,MAAW,KAAK,SAAS;GAEhD,IAAI,UAAU,KAAA,GACZ,KAAK,WAAW,QAAQ,KAAK;GAI/B,IACE,+BACE,MACA,KAAK,SACP,MAAM,YACN;IACA,KAAK,WAAW,MAAM;IACtB,KAAK,QAAQ;GACf;EACF,SAAS,GAAG;GACV,KAAK,WAAW,MAAM,CAAC;GACvB,KAAK,QAAQ;EACf;CACF;CAEA,UAAgB;EACd,KAAK,WAAW;CAClB;AACF;AAEA,IAAM,mBAAN,MAA4C;CAC1C;CACA,WAAmB;CACnB;CACA,YAAwC,KAAA;CAExC,YACE,YACA,WACA;EACA,KAAK,aAAa;EAClB,KAAK,YAAY;CACnB;CAEA,OAAO,MAAqB;EAC1B,IAAI,KAAK,UAAU;EAEnB,IAAI;GACF,MAAM,QAAQ,SAAS,MAAW,KAAK,SAAS;GAEhD,IAAI,UAAU,KAAA,KAAa,OAAO,UAAU,UAAU;IACpD,MAAM,QAAQ,MAAM,UAAU,KAAK,WAAW,UAAU,CAAC;IACzD,KAAK,YAAY;IACjB,KAAK,WAAW,QAAQ,KAAK;GAC/B;GAGA,IACE,+BACE,MACA,KAAK,SACP,MAAM,YACN;IACA,KAAK,WAAW,MAAM;IACtB,KAAK,QAAQ;GACf;EACF,SAAS,GAAG;GACV,KAAK,WAAW,MAAM,CAAC;GACvB,KAAK,QAAQ;EACf;CACF;CAEA,UAAgB;EACd,KAAK,WAAW;CAClB;AACF;AAEA,IAAM,gBAAN,MAAyC;CACvC;CACA,WAAmB;CACnB;CACA,mCAA2B,IAAI,IAAY;CAE3C,YACE,YACA,WACA;EACA,KAAK,aAAa;EAClB,KAAK,YAAY;CACnB;CAEA,OAAO,MAAqB;EAC1B,IAAI,KAAK,UAAU;EAEnB,IAAI;GACF,MAAM,QAAQ,SAAS,MAAW,KAAK,SAAS;GAEhD,IAAI,CAAC,MAAM,QAAQ,KAAK,GACtB;GAIF,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAChC,IAAI,CAAC,KAAK,iBAAiB,IAAI,CAAC;QAG5B,+BACE,MACA,CAJiB,GAAG,KAAK,WAAW,CAI1B,CACZ,MAAM,YACN;KACA,KAAK,WAAW,QAAQ,MAAM,EAAE;KAChC,KAAK,iBAAiB,IAAI,CAAC;IAC7B;;GAKJ,IACE,+BACE,MACA,KAAK,SACP,MAAM,YACN;IACA,KAAK,WAAW,MAAM;IACtB,KAAK,QAAQ;GACf;EACF,SAAS,GAAG;GACV,KAAK,WAAW,MAAM,CAAC;GACvB,KAAK,QAAQ;EACf;CACF;CAEA,UAAgB;EACd,KAAK,WAAW;CAClB;AACF;AAGA,IAAa,yBAAb,MAEA;CACE;CACA,0BAA+B,IAAI,IAAI;CACvC,OAAwB,uBAAuB,EAAE;CAEjD,YAAY,eAAuC;EACjD,KAAK,gBAAgB;EACrB,KAAK,cAAc;CACrB;CAEA,MAAc,gBAA+B;EAC3C,IAAI;GACF,IAAI,kBAAkB;GACtB,MAAM,SAAS,KAAK,cAAc,UAAU;GAE5C,OAAO,MAAM;IACX,MAAM,EAAE,OAAO,SAAS,MAAM,OAAO,KAAK;IAC1C,IAAI,MAAM;IAEV,mBAAmB;IACnB,MAAM,aAAa,uBAAuB,eAAe;IAEzD,IAAI,eAAe,KAAA,GAAW;KAC5B,KAAK,OAAO;KAEZ,KAAK,MAAM,UAAU,KAAK,SACxB,OAAO,OAAO,UAAU;IAE5B;GACF;EACF,SAAS,OAAO;GACd,QAAQ,MAAM,qCAAqC,KAAK;GAExD,KAAK,MAAM,UAAU,KAAK,SACxB,OAAO,QAAQ;EAEnB;CACF;CAEA,IACE,GAAG,WAC4B;EAC/B,OAAO,IAAI,SAA+B,SAAS,WAAW;GAC5D,MAAM,SAAS,IAAI,UACjB,SACA,QACA,SACF;GAGA,IACE,KAAK,QACL,+BACE,KAAK,MACL,SACF,MAAM,YACN;IACA,MAAM,QAAQ,SAAS,KAAK,MAAW,SAAS;IAChD,IAAI,UAAU,KAAA,GAAW;KACvB,QAAQ,KAA6B;KACrC;IACF;GACF;GAEA,KAAK,QAAQ,IAAI,MAAM;GACvB,OAAO,OAAO,KAAK,IAAI;EACzB,CAAC;CACH;CAEA,aACE,GAAG,WACqD;EAExD,MAAM,aAAa;EAsBnB,OAAO,sBAAsB,IApBV,eAAkD;GACnE,QAAQ,eAAe;IACrB,MAAM,SAAS,IAAI,mBAAsB,YAAY,UAAU;IAC/D,KAAK,QAAQ,IAAI,MAAM;IAGvB,OAAO,OAAO,KAAK,IAAI;GACzB;GACA,cAAc;IAEZ,KAAK,MAAM,UAAU,KAAK,SACxB,IAAI,kBAAkB,oBAAoB;KACxC,OAAO,QAAQ;KACf,KAAK,QAAQ,OAAO,MAAM;KAC1B;IACF;GAEJ;EACF,CAEkC,CAAC;CACrC;CAEA,WACE,GAAG,WAGK;EAER,MAAM,aAAa;EAsBnB,OAAO,sBAAsB,IApBV,eAAwB;GACzC,QAAQ,eAAe;IACrB,MAAM,SAAS,IAAI,iBAAoB,YAAY,UAAU;IAC7D,KAAK,QAAQ,IAAI,MAAM;IAGvB,OAAO,OAAO,KAAK,IAAI;GACzB;GACA,cAAc;IAEZ,KAAK,MAAM,UAAU,KAAK,SACxB,IAAI,kBAAkB,kBAAkB;KACtC,OAAO,QAAQ;KACf,KAAK,QAAQ,OAAO,MAAM;KAC1B;IACF;GAEJ;EACF,CAEkC,CAAC;CACrC;CAEA,QACE,GAAG,WAGK;EAER,MAAM,aAAa;EAsBnB,OAAO,sBAAsB,IApBV,eAAwB;GACzC,QAAQ,eAAe;IACrB,MAAM,SAAS,IAAI,cAAiB,YAAY,UAAU;IAC1D,KAAK,QAAQ,IAAI,MAAM;IAGvB,OAAO,OAAO,KAAK,IAAI;GACzB;GACA,cAAc;IAEZ,KAAK,MAAM,UAAU,KAAK,SACxB,IAAI,kBAAkB,eAAe;KACnC,OAAO,QAAQ;KACf,KAAK,QAAQ,OAAO,MAAM;KAC1B;IACF;GAEJ;EACF,CAEkC,CAAC;CACrC;AACF;AAEA,IAAa,6BAAb,MAEA;CAC+B;CAA7B,YAAY,SAA0D;EAAzC,KAAA,UAAA;CAA0C;CAEvE,MAAa;EACX,OAAO,KAAK;CACd;AACF;AAEA,IAAa,qBAAb,MAIA;CACE;CACA;CACA;CACA;CAEA,WAA0B;CAE1B,cAAc;EACZ,MAAM,SAAS,IAAI,gBAAgC;EACnD,KAAK,WAAW,OAAO;EACvB,KAAK,OAAO,IAAI,uBAA8B,OAAO,QAAQ;EAE7D,MAAM,EAAE,SAAS,YAAY,qBAA4C;EACzE,KAAK,UAAU;EACf,KAAK,WAAW,IAAI,2BAAoC,OAAO;CACjE;CAEA,MAAM,oBAAoB,MAA6B;EACrD,MAAM,SAAS,KAAK,SAAS,UAAU;EACvC,IAAI;GACF,MAAM,OAAO,MAAM,IAAI;EACzB,SAAS,KAAK;GACZ,QAAQ,KAAK,GAAG;EAClB,UAAU;GACR,OAAO,YAAY;EACrB;EAEA,KAAK,YAAY;CACnB;CAEA,YAAY,OAAoC;EAC9C,KAAK,QAAQ,KAAK;CACpB;CAEA,SAAS,EACP,KAAK,YAAY;EAEf,QAAO,MADgB,KAAK,SAAS,IAAI,GACzB;CAClB,EACF;AACF"}
|
|
@@ -1,26 +1,29 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import type { ReadonlyJSONObject, ReadonlyJSONValue } from "../../utils/json/json-value.js";
|
|
1
|
+
import { ReadonlyJSONObject, ReadonlyJSONValue } from "../../utils/json/json-value.js";
|
|
2
|
+
import { ToolCallReader } from "./tool-types.js";
|
|
4
3
|
import { ToolResponse } from "./ToolResponse.js";
|
|
5
|
-
import
|
|
4
|
+
import { AssistantStreamChunk } from "../AssistantStreamChunk.js";
|
|
5
|
+
import { PipeableTransformStream } from "../utils/stream/PipeableTransformStream.js";
|
|
6
|
+
|
|
7
|
+
//#region src/core/tool/ToolExecutionStream.d.ts
|
|
6
8
|
type ToolCallback = (toolCall: {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
toolCallId: string;
|
|
10
|
+
toolName: string;
|
|
11
|
+
args: ReadonlyJSONObject;
|
|
10
12
|
}) => Promise<ToolResponse<ReadonlyJSONValue>> | ToolResponse<ReadonlyJSONValue> | undefined;
|
|
11
13
|
type ToolStreamCallback = <TArgs extends ReadonlyJSONObject = ReadonlyJSONObject, TResult extends ReadonlyJSONValue = ReadonlyJSONValue>(toolCall: {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
reader: ToolCallReader<TArgs, TResult>;
|
|
15
|
+
toolCallId: string;
|
|
16
|
+
toolName: string;
|
|
15
17
|
}) => void;
|
|
16
18
|
type ToolExecutionOptions = {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
execute: ToolCallback;
|
|
20
|
+
streamCall: ToolStreamCallback;
|
|
21
|
+
onExecutionStart?: ((toolCallId: string, toolName: string) => void) | undefined;
|
|
22
|
+
onExecutionEnd?: ((toolCallId: string, toolName: string) => void) | undefined;
|
|
21
23
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
declare class ToolExecutionStream extends PipeableTransformStream<AssistantStreamChunk, AssistantStreamChunk> {
|
|
25
|
+
constructor(options: ToolExecutionOptions);
|
|
24
26
|
}
|
|
25
|
-
|
|
27
|
+
//#endregion
|
|
28
|
+
export { ToolExecutionStream };
|
|
26
29
|
//# sourceMappingURL=ToolExecutionStream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolExecutionStream.d.ts","
|
|
1
|
+
{"version":3,"file":"ToolExecutionStream.d.ts","names":[],"sources":["../../../src/core/tool/ToolExecutionStream.ts"],"mappings":";;;;;;;KAgBK,YAAA,IAAgB,QAAA;EACnB,UAAA;EACA,QAAA;EACA,IAAA,EAAM,kBAAA;AAAA,MAEJ,OAAA,CAAQ,YAAA,CAAa,iBAAA,KACrB,YAAA,CAAa,iBAAA;AAAA,KAGZ,kBAAA,kBACW,kBAAA,GAAqB,kBAAA,kBACnB,iBAAA,GAAoB,iBAAA,EACpC,QAAA;EACA,MAAA,EAAQ,cAAA,CAAe,KAAA,EAAO,OAAA;EAC9B,UAAA;EACA,QAAA;AAAA;AAAA,KAGG,oBAAA;EACH,OAAA,EAAS,YAAA;EACT,UAAA,EAAY,kBAAkB;EAC9B,gBAAA,KACM,UAAA,UAAoB,QAAA;EAE1B,cAAA,KAAmB,UAAA,UAAoB,QAAA;AAAA;AAAA,cAG5B,mBAAA,SAA4B,uBAAA,CACvC,oBAAA,EACA,oBAAA;cAEY,OAAA,EAAS,oBAAA;AAAA"}
|
|
@@ -1,151 +1,128 @@
|
|
|
1
|
-
import sjson from "secure-json-parse";
|
|
2
|
-
import { AssistantMetaTransformStream, } from "../utils/stream/AssistantMetaTransformStream.js";
|
|
3
1
|
import { PipeableTransformStream } from "../utils/stream/PipeableTransformStream.js";
|
|
2
|
+
import { AssistantMetaTransformStream } from "../utils/stream/AssistantMetaTransformStream.js";
|
|
4
3
|
import { ToolResponse } from "./ToolResponse.js";
|
|
5
4
|
import { withPromiseOrValue } from "../utils/withPromiseOrValue.js";
|
|
6
5
|
import { ToolCallReaderImpl } from "./ToolCallReader.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
toolCallPromise.then(() => {
|
|
130
|
-
toolCallPromises.delete(toolCallId);
|
|
131
|
-
toolCallControllers.delete(toolCallId);
|
|
132
|
-
controller.enqueue(chunk);
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
controller.enqueue(chunk);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
},
|
|
141
|
-
async flush() {
|
|
142
|
-
await Promise.all(toolCallPromises.values());
|
|
143
|
-
},
|
|
144
|
-
});
|
|
145
|
-
return readable
|
|
146
|
-
.pipeThrough(new AssistantMetaTransformStream())
|
|
147
|
-
.pipeThrough(transform);
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
}
|
|
6
|
+
import sjson from "secure-json-parse";
|
|
7
|
+
//#region src/core/tool/ToolExecutionStream.ts
|
|
8
|
+
var ToolExecutionStream = class extends PipeableTransformStream {
|
|
9
|
+
constructor(options) {
|
|
10
|
+
const toolCallPromises = /* @__PURE__ */ new Map();
|
|
11
|
+
const toolCallControllers = /* @__PURE__ */ new Map();
|
|
12
|
+
super((readable) => {
|
|
13
|
+
const transform = new TransformStream({
|
|
14
|
+
transform(chunk, controller) {
|
|
15
|
+
if (chunk.type !== "part-finish" || chunk.meta.type !== "tool-call") controller.enqueue(chunk);
|
|
16
|
+
switch (chunk.type) {
|
|
17
|
+
case "part-start":
|
|
18
|
+
if (chunk.part.type === "tool-call") {
|
|
19
|
+
const reader = new ToolCallReaderImpl();
|
|
20
|
+
toolCallControllers.set(chunk.part.toolCallId, reader);
|
|
21
|
+
options.streamCall({
|
|
22
|
+
reader,
|
|
23
|
+
toolCallId: chunk.part.toolCallId,
|
|
24
|
+
toolName: chunk.part.toolName
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
break;
|
|
28
|
+
case "text-delta":
|
|
29
|
+
if (chunk.meta.type === "tool-call") {
|
|
30
|
+
const toolCallId = chunk.meta.toolCallId;
|
|
31
|
+
const controller = toolCallControllers.get(toolCallId);
|
|
32
|
+
if (!controller) throw new Error("No controller found for tool call");
|
|
33
|
+
controller.appendArgsTextDelta(chunk.textDelta);
|
|
34
|
+
}
|
|
35
|
+
break;
|
|
36
|
+
case "result": {
|
|
37
|
+
if (chunk.meta.type !== "tool-call") break;
|
|
38
|
+
const { toolCallId } = chunk.meta;
|
|
39
|
+
const controller = toolCallControllers.get(toolCallId);
|
|
40
|
+
if (!controller) throw new Error("No controller found for tool call");
|
|
41
|
+
controller.setResponse(new ToolResponse({
|
|
42
|
+
result: chunk.result,
|
|
43
|
+
artifact: chunk.artifact,
|
|
44
|
+
isError: chunk.isError,
|
|
45
|
+
modelContent: chunk.modelContent
|
|
46
|
+
}));
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
case "tool-call-args-text-finish": {
|
|
50
|
+
if (chunk.meta.type !== "tool-call") break;
|
|
51
|
+
const { toolCallId, toolName } = chunk.meta;
|
|
52
|
+
const streamController = toolCallControllers.get(toolCallId);
|
|
53
|
+
if (!streamController) throw new Error("No controller found for tool call");
|
|
54
|
+
let isExecuting = false;
|
|
55
|
+
const promise = withPromiseOrValue(() => {
|
|
56
|
+
let args;
|
|
57
|
+
try {
|
|
58
|
+
args = sjson.parse(streamController.argsText);
|
|
59
|
+
} catch (e) {
|
|
60
|
+
throw new Error(`Function parameter parsing failed. ${JSON.stringify(e.message)}`);
|
|
61
|
+
}
|
|
62
|
+
const executeResult = options.execute({
|
|
63
|
+
toolCallId,
|
|
64
|
+
toolName,
|
|
65
|
+
args
|
|
66
|
+
});
|
|
67
|
+
if (executeResult !== void 0) {
|
|
68
|
+
isExecuting = true;
|
|
69
|
+
options.onExecutionStart?.(toolCallId, toolName);
|
|
70
|
+
}
|
|
71
|
+
return executeResult;
|
|
72
|
+
}, (c) => {
|
|
73
|
+
if (isExecuting) options.onExecutionEnd?.(toolCallId, toolName);
|
|
74
|
+
if (c === void 0) return;
|
|
75
|
+
const result = new ToolResponse({
|
|
76
|
+
artifact: c.artifact,
|
|
77
|
+
result: c.result,
|
|
78
|
+
isError: c.isError,
|
|
79
|
+
messages: c.messages,
|
|
80
|
+
modelContent: c.modelContent
|
|
81
|
+
});
|
|
82
|
+
streamController.setResponse(result);
|
|
83
|
+
controller.enqueue({
|
|
84
|
+
type: "result",
|
|
85
|
+
path: chunk.path,
|
|
86
|
+
...result
|
|
87
|
+
});
|
|
88
|
+
}, (e) => {
|
|
89
|
+
if (isExecuting) options.onExecutionEnd?.(toolCallId, toolName);
|
|
90
|
+
const result = new ToolResponse({
|
|
91
|
+
result: String(e),
|
|
92
|
+
isError: true
|
|
93
|
+
});
|
|
94
|
+
streamController.setResponse(result);
|
|
95
|
+
controller.enqueue({
|
|
96
|
+
type: "result",
|
|
97
|
+
path: chunk.path,
|
|
98
|
+
...result
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
if (promise) toolCallPromises.set(toolCallId, promise);
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
case "part-finish": {
|
|
105
|
+
if (chunk.meta.type !== "tool-call") break;
|
|
106
|
+
const { toolCallId } = chunk.meta;
|
|
107
|
+
const toolCallPromise = toolCallPromises.get(toolCallId);
|
|
108
|
+
if (toolCallPromise) toolCallPromise.then(() => {
|
|
109
|
+
toolCallPromises.delete(toolCallId);
|
|
110
|
+
toolCallControllers.delete(toolCallId);
|
|
111
|
+
controller.enqueue(chunk);
|
|
112
|
+
});
|
|
113
|
+
else controller.enqueue(chunk);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
async flush() {
|
|
118
|
+
await Promise.all(toolCallPromises.values());
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
return readable.pipeThrough(new AssistantMetaTransformStream()).pipeThrough(transform);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
//#endregion
|
|
126
|
+
export { ToolExecutionStream };
|
|
127
|
+
|
|
151
128
|
//# sourceMappingURL=ToolExecutionStream.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolExecutionStream.js","sourceRoot":"","sources":["../../../src/core/tool/ToolExecutionStream.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ToolExecutionStream.js","names":[],"sources":["../../../src/core/tool/ToolExecutionStream.ts"],"sourcesContent":["import sjson from \"secure-json-parse\";\nimport type { AssistantStreamChunk } from \"../AssistantStreamChunk\";\nimport {\n type AssistantMetaStreamChunk,\n AssistantMetaTransformStream,\n} from \"../utils/stream/AssistantMetaTransformStream\";\nimport { PipeableTransformStream } from \"../utils/stream/PipeableTransformStream\";\nimport type {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"../../utils/json/json-value\";\nimport { ToolResponse } from \"./ToolResponse\";\nimport { withPromiseOrValue } from \"../utils/withPromiseOrValue\";\nimport { ToolCallReaderImpl } from \"./ToolCallReader\";\nimport type { ToolCallReader } from \"./tool-types\";\n\ntype ToolCallback = (toolCall: {\n toolCallId: string;\n toolName: string;\n args: ReadonlyJSONObject;\n}) =>\n | Promise<ToolResponse<ReadonlyJSONValue>>\n | ToolResponse<ReadonlyJSONValue>\n | undefined;\n\ntype ToolStreamCallback = <\n TArgs extends ReadonlyJSONObject = ReadonlyJSONObject,\n TResult extends ReadonlyJSONValue = ReadonlyJSONValue,\n>(toolCall: {\n reader: ToolCallReader<TArgs, TResult>;\n toolCallId: string;\n toolName: string;\n}) => void;\n\ntype ToolExecutionOptions = {\n execute: ToolCallback;\n streamCall: ToolStreamCallback;\n onExecutionStart?:\n | ((toolCallId: string, toolName: string) => void)\n | undefined;\n onExecutionEnd?: ((toolCallId: string, toolName: string) => void) | undefined;\n};\n\nexport class ToolExecutionStream extends PipeableTransformStream<\n AssistantStreamChunk,\n AssistantStreamChunk\n> {\n constructor(options: ToolExecutionOptions) {\n const toolCallPromises = new Map<string, PromiseLike<void>>();\n const toolCallControllers = new Map<\n string,\n ToolCallReaderImpl<ReadonlyJSONObject, ReadonlyJSONValue>\n >();\n\n super((readable) => {\n const transform = new TransformStream<\n AssistantMetaStreamChunk,\n AssistantStreamChunk\n >({\n transform(chunk, controller) {\n // forward everything\n if (chunk.type !== \"part-finish\" || chunk.meta.type !== \"tool-call\") {\n controller.enqueue(chunk);\n }\n\n const type = chunk.type;\n\n switch (type) {\n case \"part-start\":\n if (chunk.part.type === \"tool-call\") {\n const reader = new ToolCallReaderImpl<\n ReadonlyJSONObject,\n ReadonlyJSONValue\n >();\n toolCallControllers.set(chunk.part.toolCallId, reader);\n\n options.streamCall({\n reader,\n toolCallId: chunk.part.toolCallId,\n toolName: chunk.part.toolName,\n });\n }\n break;\n case \"text-delta\": {\n if (chunk.meta.type === \"tool-call\") {\n const toolCallId = chunk.meta.toolCallId;\n\n const controller = toolCallControllers.get(toolCallId);\n if (!controller)\n throw new Error(\"No controller found for tool call\");\n controller.appendArgsTextDelta(chunk.textDelta);\n }\n break;\n }\n case \"result\": {\n if (chunk.meta.type !== \"tool-call\") break;\n\n const { toolCallId } = chunk.meta;\n const controller = toolCallControllers.get(toolCallId);\n if (!controller)\n throw new Error(\"No controller found for tool call\");\n controller.setResponse(\n new ToolResponse({\n result: chunk.result,\n artifact: chunk.artifact,\n isError: chunk.isError,\n modelContent: chunk.modelContent,\n }),\n );\n break;\n }\n case \"tool-call-args-text-finish\": {\n if (chunk.meta.type !== \"tool-call\") break;\n\n const { toolCallId, toolName } = chunk.meta;\n const streamController = toolCallControllers.get(toolCallId)!;\n if (!streamController)\n throw new Error(\"No controller found for tool call\");\n\n let isExecuting = false;\n const promise = withPromiseOrValue(\n () => {\n let args: ReadonlyJSONObject;\n try {\n args = sjson.parse(\n streamController.argsText,\n ) as ReadonlyJSONObject;\n } catch (e) {\n throw new Error(\n `Function parameter parsing failed. ${JSON.stringify((e as Error).message)}`,\n );\n }\n\n const executeResult = options.execute({\n toolCallId,\n toolName,\n args,\n });\n\n // Only mark as executing if the tool has frontend execution\n if (executeResult !== undefined) {\n isExecuting = true;\n options.onExecutionStart?.(toolCallId, toolName);\n }\n\n return executeResult;\n },\n (c) => {\n if (isExecuting) {\n options.onExecutionEnd?.(toolCallId, toolName);\n }\n\n if (c === undefined) return;\n\n // TODO how to handle new ToolResult({ result: undefined })?\n const result = new ToolResponse({\n artifact: c.artifact,\n result: c.result,\n isError: c.isError,\n messages: c.messages,\n modelContent: c.modelContent,\n });\n streamController.setResponse(result);\n controller.enqueue({\n type: \"result\",\n path: chunk.path,\n ...result,\n });\n },\n (e) => {\n if (isExecuting) {\n options.onExecutionEnd?.(toolCallId, toolName);\n }\n\n const result = new ToolResponse({\n result: String(e),\n isError: true,\n });\n\n streamController.setResponse(result);\n controller.enqueue({\n type: \"result\",\n path: chunk.path,\n ...result,\n });\n },\n );\n if (promise) {\n toolCallPromises.set(toolCallId, promise);\n }\n break;\n }\n\n case \"part-finish\": {\n if (chunk.meta.type !== \"tool-call\") break;\n\n const { toolCallId } = chunk.meta;\n const toolCallPromise = toolCallPromises.get(toolCallId);\n if (toolCallPromise) {\n toolCallPromise.then(() => {\n toolCallPromises.delete(toolCallId);\n toolCallControllers.delete(toolCallId);\n\n controller.enqueue(chunk);\n });\n } else {\n controller.enqueue(chunk);\n }\n }\n }\n },\n async flush() {\n await Promise.all(toolCallPromises.values());\n },\n });\n\n return readable\n .pipeThrough(new AssistantMetaTransformStream())\n .pipeThrough(transform);\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,30 +1,29 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { ReadonlyJSONValue } from "../../utils/json/json-value.js";
|
|
2
|
+
import { ToolModelContentPart } from "./tool-types.js";
|
|
3
|
+
|
|
4
|
+
//#region src/core/tool/ToolResponse.d.ts
|
|
3
5
|
declare const TOOL_RESPONSE_SYMBOL: unique symbol;
|
|
4
6
|
/**
|
|
5
7
|
* Shape accepted anywhere a {@link ToolResponse} can be returned.
|
|
6
8
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
modelContent?: readonly ToolModelContentPart[] | undefined;
|
|
26
|
-
/** Optional provider-specific message payload associated with the tool result. */
|
|
27
|
-
messages?: ReadonlyJSONValue | undefined;
|
|
9
|
+
type ToolResponseLike<TResult> = {
|
|
10
|
+
/** UI-visible tool result value. */result: TResult;
|
|
11
|
+
/**
|
|
12
|
+
* Optional UI-only artifact associated with the result.
|
|
13
|
+
*
|
|
14
|
+
* Artifacts are useful for large or structured data that should be available
|
|
15
|
+
* to renderers without necessarily being sent back to the model.
|
|
16
|
+
*/
|
|
17
|
+
artifact?: ReadonlyJSONValue | undefined; /** Marks the tool result as an error result. */
|
|
18
|
+
isError?: boolean | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Explicit model-visible content to send back after the tool call.
|
|
21
|
+
*
|
|
22
|
+
* When omitted, assistant-ui derives model output from `result` or a tool's
|
|
23
|
+
* {@link ToolModelOutputFunction}.
|
|
24
|
+
*/
|
|
25
|
+
modelContent?: readonly ToolModelContentPart[] | undefined; /** Optional provider-specific message payload associated with the tool result. */
|
|
26
|
+
messages?: ReadonlyJSONValue | undefined;
|
|
28
27
|
};
|
|
29
28
|
/**
|
|
30
29
|
* Tool result wrapper for separating UI-visible output from model-visible
|
|
@@ -42,23 +41,24 @@ export type ToolResponseLike<TResult> = {
|
|
|
42
41
|
* });
|
|
43
42
|
* ```
|
|
44
43
|
*/
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
44
|
+
declare class ToolResponse<TResult> {
|
|
45
|
+
get [TOOL_RESPONSE_SYMBOL](): boolean;
|
|
46
|
+
readonly artifact?: ReadonlyJSONValue;
|
|
47
|
+
readonly result: TResult;
|
|
48
|
+
readonly isError: boolean;
|
|
49
|
+
readonly modelContent?: readonly ToolModelContentPart[];
|
|
50
|
+
readonly messages?: ReadonlyJSONValue;
|
|
51
|
+
constructor(options: ToolResponseLike<TResult>);
|
|
52
|
+
static [Symbol.hasInstance](obj: unknown): obj is ToolResponse<ReadonlyJSONValue>;
|
|
53
|
+
/**
|
|
54
|
+
* Converts a plain tool return value into a {@link ToolResponse}.
|
|
55
|
+
*
|
|
56
|
+
* Existing `ToolResponse` instances are returned unchanged. `undefined`
|
|
57
|
+
* becomes the string `"<no result>"` so downstream protocol chunks always
|
|
58
|
+
* carry a concrete result.
|
|
59
|
+
*/
|
|
60
|
+
static toResponse(result: any | ToolResponse<any>): ToolResponse<any>;
|
|
62
61
|
}
|
|
63
|
-
|
|
62
|
+
//#endregion
|
|
63
|
+
export { ToolResponse, ToolResponseLike };
|
|
64
64
|
//# sourceMappingURL=ToolResponse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolResponse.d.ts","
|
|
1
|
+
{"version":3,"file":"ToolResponse.d.ts","names":[],"sources":["../../../src/core/tool/ToolResponse.ts"],"mappings":";;;;cAMM,oBAAA;;AAFgB;;KAOV,gBAAA;EALgD,oCAO1D,MAAA,EAAQ,OAAA;EAFE;;;;;;EASV,QAAA,GAAW,iBAAA,cAWiB;EAT5B,OAAA;EAX2B;;;;;;EAkB3B,YAAA,YAAwB,oBAAA,gBAAA;EAExB,QAAA,GAAW,iBAAA;AAAA;;AAAiB;AAmB9B;;;;;;;;;;;;;;cAAa,YAAA;EAAA,KACN,oBAAA;EAAA,SAII,QAAA,GAAW,iBAAA;EAAA,SACX,MAAA,EAAQ,OAAA;EAAA,SACR,OAAA;EAAA,SACA,YAAA,YAAwB,oBAAA;EAAA,SACxB,QAAA,GAAW,iBAAA;cAER,OAAA,EAAS,gBAAA,CAAiB,OAAA;EAAA,QAc9B,MAAA,CAAO,WAAA,EACb,GAAA,YACC,GAAA,IAAO,YAAA,CAAa,iBAAA;EApBd;;;;;;;EAAA,OAiCF,UAAA,CAAW,MAAA,QAAc,YAAA,QAAoB,YAAA;AAAA"}
|