assistant-stream 0.1.3 → 0.1.4

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.
@@ -1,7 +1,7 @@
1
- // src/core/utils/json/parse-partial-json-object.ts
1
+ // src/utils/json/parse-partial-json-object.ts
2
2
  import sjson from "secure-json-parse";
3
3
 
4
- // src/core/utils/json/fix-json.ts
4
+ // src/utils/json/fix-json.ts
5
5
  function fixJson(input) {
6
6
  const stack = ["ROOT"];
7
7
  let lastValidIndex = -1;
@@ -360,7 +360,7 @@ function fixJson(input) {
360
360
  return [result, path];
361
361
  }
362
362
 
363
- // src/core/utils/json/parse-partial-json-object.ts
363
+ // src/utils/json/parse-partial-json-object.ts
364
364
  var PARTIAL_JSON_OBJECT_META_SYMBOL = Symbol(
365
365
  "aui.parse-partial-json-object.meta"
366
366
  );
@@ -412,14 +412,14 @@ var getFieldState = (parent, parentMeta, fieldPath) => {
412
412
  };
413
413
  return getFieldState(child, childMeta, restPath);
414
414
  };
415
- var getPartialJsonObjectFieldState = (args, fieldPath) => {
416
- const meta = getPartialJsonObjectMeta(args);
417
- if (!meta) throw new Error("unable to determine args state");
418
- return getFieldState(args, meta, fieldPath.map(String));
415
+ var getPartialJsonObjectFieldState = (obj, fieldPath) => {
416
+ const meta = getPartialJsonObjectMeta(obj);
417
+ if (!meta) throw new Error("unable to determine object state");
418
+ return getFieldState(obj, meta, fieldPath.map(String));
419
419
  };
420
420
 
421
421
  export {
422
422
  parsePartialJsonObject,
423
423
  getPartialJsonObjectFieldState
424
424
  };
425
- //# sourceMappingURL=chunk-LHNPFNMI.mjs.map
425
+ //# sourceMappingURL=chunk-PQLDKUPN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/json/parse-partial-json-object.ts","../src/utils/json/fix-json.ts"],"sourcesContent":["import sjson from \"secure-json-parse\";\nimport { fixJson } from \"./fix-json\";\nimport { ReadonlyJSONObject } from \"./json-value\";\n\nconst PARTIAL_JSON_OBJECT_META_SYMBOL = Symbol(\n \"aui.parse-partial-json-object.meta\",\n);\n\ntype FieldState = \"complete\" | \"partial\";\n\ntype PartialJsonObjectMeta = {\n state: \"complete\" | \"partial\";\n partialPath: string[];\n};\n\nexport const getPartialJsonObjectMeta = (\n obj: Record<symbol, unknown>,\n): PartialJsonObjectMeta | undefined => {\n return obj?.[PARTIAL_JSON_OBJECT_META_SYMBOL] as PartialJsonObjectMeta;\n};\n\nexport const parsePartialJsonObject = (\n json: string,\n):\n | (ReadonlyJSONObject & {\n [PARTIAL_JSON_OBJECT_META_SYMBOL]: PartialJsonObjectMeta;\n })\n | undefined => {\n if (json.length === 0)\n return {\n [PARTIAL_JSON_OBJECT_META_SYMBOL]: { state: \"partial\", partialPath: [] },\n };\n\n try {\n const res = sjson.parse(json);\n if (typeof res !== \"object\" || res === null)\n throw new Error(\"argsText is expected to be an object\");\n\n res[PARTIAL_JSON_OBJECT_META_SYMBOL] = {\n state: \"complete\",\n partialPath: [],\n };\n return res;\n } catch {\n try {\n const [fixedJson, partialPath] = fixJson(json);\n const res = sjson.parse(fixedJson);\n if (typeof res !== \"object\" || res === null)\n throw new Error(\"argsText is expected to be an object\");\n\n res[PARTIAL_JSON_OBJECT_META_SYMBOL] = {\n state: \"partial\",\n partialPath,\n };\n return res;\n } catch {\n return undefined;\n }\n }\n};\n\nconst getFieldState = (\n parent: unknown,\n parentMeta: PartialJsonObjectMeta,\n fieldPath: string[],\n): FieldState => {\n if (typeof parent !== \"object\" || parent === null) return parentMeta.state;\n\n // 1) parent is complete: return \"complete\"\n if (parentMeta.state === \"complete\") return \"complete\";\n\n // 2) we finished traversing: return parent state\n if (fieldPath.length === 0) return parentMeta.state;\n\n const [field, ...restPath] = fieldPath as [string, ...string[]];\n\n // 3) field doesn't yet exist in parent: return \"partial\"\n if (!Object.prototype.hasOwnProperty.call(parent, field)) return \"partial\";\n\n const [partialField, ...restPartialPath] = parentMeta.partialPath;\n\n // 4) field exists but is not partial: return \"complete\"\n if (field !== partialField) return \"complete\";\n\n // 5) field exists and is partial: return child state\n const child = (parent as Record<string, unknown>)[field];\n const childMeta: PartialJsonObjectMeta = {\n state: \"partial\",\n partialPath: restPartialPath,\n };\n\n return getFieldState(child, childMeta, restPath);\n};\n\nexport const getPartialJsonObjectFieldState = (\n obj: Record<string, unknown>,\n fieldPath: (string | number)[],\n): FieldState => {\n const meta = getPartialJsonObjectMeta(obj);\n if (!meta) throw new Error(\"unable to determine object state\");\n\n return getFieldState(obj, meta, fieldPath.map(String));\n};\n","// LICENSE for this file only\n\n// MIT License\n\n// Copyright (c) 2025 AgentbaseAI Inc.\n// Copyright (c) 2023 Lars Grammel\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\ntype State =\n | \"ROOT\"\n | \"FINISH\"\n | \"INSIDE_STRING\"\n | \"INSIDE_STRING_ESCAPE\"\n | \"INSIDE_LITERAL\"\n | \"INSIDE_NUMBER\"\n | \"INSIDE_OBJECT_START\"\n | \"INSIDE_OBJECT_KEY\"\n | \"INSIDE_OBJECT_AFTER_KEY\"\n | \"INSIDE_OBJECT_BEFORE_VALUE\"\n | \"INSIDE_OBJECT_AFTER_VALUE\"\n | \"INSIDE_OBJECT_AFTER_COMMA\"\n | \"INSIDE_ARRAY_START\"\n | \"INSIDE_ARRAY_AFTER_VALUE\"\n | \"INSIDE_ARRAY_AFTER_COMMA\";\n\n// Implemented as a scanner with additional fixing\n// that performs a single linear time scan pass over the partial JSON.\n//\n// The states should ideally match relevant states from the JSON spec:\n// https://www.json.org/json-en.html\n//\n// Please note that invalid JSON is not considered/covered, because it\n// is assumed that the resulting JSON will be processed by a standard\n// JSON parser that will detect any invalid JSON.\n\n// Returns a tuple of [fixedJson, partialPath]\n// partialPath is an array of object/array keys that represent\n// the currently partial values. An object is considered partial\n// if through appending extra characters to the JSON string, its\n// value could change.\n\n// Example input: '{\"foo\":[{\"a\":f'\n// Example output: ['{\"foo\":[{\"a\":false}]}', ['foo', '0']]\n// Example input: '{\"foo\":'\n// Example output: ['{}', []]\n\nexport function fixJson(input: string): [string, string[]] {\n const stack: State[] = [\"ROOT\"];\n let lastValidIndex = -1;\n let literalStart: number | null = null;\n const path: string[] = [];\n let currentKey: string | undefined;\n\n function pushCurrentKeyToPath(): void {\n if (currentKey !== undefined) {\n path.push(JSON.parse('\"' + currentKey + '\"'));\n currentKey = undefined;\n }\n }\n\n function processValueStart(char: string, i: number, swapState: State) {\n {\n switch (char) {\n case '\"': {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_STRING\");\n\n pushCurrentKeyToPath();\n break;\n }\n\n case \"f\":\n case \"t\":\n case \"n\": {\n lastValidIndex = i;\n literalStart = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_LITERAL\");\n break;\n }\n\n case \"-\": {\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_NUMBER\");\n\n pushCurrentKeyToPath();\n break;\n }\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\": {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_NUMBER\");\n\n pushCurrentKeyToPath();\n break;\n }\n\n case \"{\": {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_OBJECT_START\");\n\n pushCurrentKeyToPath();\n break;\n }\n\n case \"[\": {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_ARRAY_START\");\n\n pushCurrentKeyToPath();\n break;\n }\n }\n }\n }\n\n function processAfterObjectValue(char: string, i: number) {\n switch (char) {\n case \",\": {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_AFTER_COMMA\");\n break;\n }\n case \"}\": {\n lastValidIndex = i;\n stack.pop();\n currentKey = path.pop();\n break;\n }\n }\n }\n\n function processAfterArrayValue(char: string, i: number) {\n switch (char) {\n case \",\": {\n stack.pop();\n stack.push(\"INSIDE_ARRAY_AFTER_COMMA\");\n currentKey = (Number(currentKey) + 1).toString();\n break;\n }\n case \"]\": {\n lastValidIndex = i;\n stack.pop();\n currentKey = path.pop();\n break;\n }\n }\n }\n\n for (let i = 0; i < input.length; i++) {\n const char = input[i]!;\n const currentState = stack[stack.length - 1];\n\n switch (currentState) {\n case \"ROOT\":\n processValueStart(char, i, \"FINISH\");\n break;\n\n case \"INSIDE_OBJECT_START\": {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_KEY\");\n currentKey = \"\";\n break;\n }\n case \"}\": {\n lastValidIndex = i;\n stack.pop();\n currentKey = path.pop();\n break;\n }\n }\n break;\n }\n\n case \"INSIDE_OBJECT_AFTER_COMMA\": {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_KEY\");\n currentKey = \"\";\n break;\n }\n }\n break;\n }\n\n case \"INSIDE_OBJECT_KEY\": {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_AFTER_KEY\");\n break;\n }\n case \"\\\\\": {\n stack.push(\"INSIDE_STRING_ESCAPE\");\n currentKey += char;\n break;\n }\n default: {\n currentKey += char;\n break;\n }\n }\n break;\n }\n\n case \"INSIDE_OBJECT_AFTER_KEY\": {\n switch (char) {\n case \":\": {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_BEFORE_VALUE\");\n\n break;\n }\n }\n break;\n }\n\n case \"INSIDE_OBJECT_BEFORE_VALUE\": {\n processValueStart(char, i, \"INSIDE_OBJECT_AFTER_VALUE\");\n break;\n }\n\n case \"INSIDE_OBJECT_AFTER_VALUE\": {\n processAfterObjectValue(char, i);\n break;\n }\n\n case \"INSIDE_STRING\": {\n switch (char) {\n case '\"': {\n stack.pop();\n lastValidIndex = i;\n\n currentKey = path.pop();\n break;\n }\n\n case \"\\\\\": {\n stack.push(\"INSIDE_STRING_ESCAPE\");\n break;\n }\n\n default: {\n lastValidIndex = i;\n }\n }\n\n break;\n }\n\n case \"INSIDE_ARRAY_START\": {\n switch (char) {\n case \"]\": {\n lastValidIndex = i;\n stack.pop();\n currentKey = path.pop();\n break;\n }\n\n default: {\n lastValidIndex = i;\n currentKey = \"0\";\n processValueStart(char, i, \"INSIDE_ARRAY_AFTER_VALUE\");\n break;\n }\n }\n break;\n }\n\n case \"INSIDE_ARRAY_AFTER_VALUE\": {\n switch (char) {\n case \",\": {\n stack.pop();\n stack.push(\"INSIDE_ARRAY_AFTER_COMMA\");\n\n currentKey = (Number(currentKey) + 1).toString();\n break;\n }\n\n case \"]\": {\n lastValidIndex = i;\n stack.pop();\n currentKey = path.pop();\n break;\n }\n\n default: {\n lastValidIndex = i;\n break;\n }\n }\n\n break;\n }\n\n case \"INSIDE_ARRAY_AFTER_COMMA\": {\n processValueStart(char, i, \"INSIDE_ARRAY_AFTER_VALUE\");\n break;\n }\n\n case \"INSIDE_STRING_ESCAPE\": {\n stack.pop();\n\n if (stack[stack.length - 1] === \"INSIDE_STRING\") {\n lastValidIndex = i;\n } else if (stack[stack.length - 1] === \"INSIDE_OBJECT_KEY\") {\n currentKey += char;\n }\n\n break;\n }\n\n case \"INSIDE_NUMBER\": {\n switch (char) {\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\": {\n lastValidIndex = i;\n break;\n }\n\n case \"e\":\n case \"E\":\n case \"-\":\n case \".\": {\n break;\n }\n\n case \",\": {\n stack.pop();\n currentKey = path.pop();\n\n if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n processAfterArrayValue(char, i);\n }\n\n if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n processAfterObjectValue(char, i);\n }\n\n break;\n }\n\n case \"}\": {\n stack.pop();\n currentKey = path.pop();\n\n if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n processAfterObjectValue(char, i);\n }\n\n break;\n }\n\n case \"]\": {\n stack.pop();\n currentKey = path.pop();\n\n if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n processAfterArrayValue(char, i);\n }\n\n break;\n }\n\n default: {\n stack.pop();\n currentKey = path.pop();\n break;\n }\n }\n\n break;\n }\n\n case \"INSIDE_LITERAL\": {\n const partialLiteral = input.substring(literalStart!, i + 1);\n\n if (\n !\"false\".startsWith(partialLiteral) &&\n !\"true\".startsWith(partialLiteral) &&\n !\"null\".startsWith(partialLiteral)\n ) {\n stack.pop();\n\n if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n processAfterObjectValue(char, i);\n } else if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n processAfterArrayValue(char, i);\n }\n } else {\n lastValidIndex = i;\n }\n\n break;\n }\n }\n }\n\n let result = input.slice(0, lastValidIndex + 1);\n\n for (let i = stack.length - 1; i >= 0; i--) {\n const state = stack[i];\n\n switch (state) {\n case \"INSIDE_STRING\": {\n result += '\"';\n break;\n }\n\n case \"INSIDE_OBJECT_KEY\":\n case \"INSIDE_OBJECT_AFTER_KEY\":\n case \"INSIDE_OBJECT_AFTER_COMMA\":\n case \"INSIDE_OBJECT_START\":\n case \"INSIDE_OBJECT_BEFORE_VALUE\":\n case \"INSIDE_OBJECT_AFTER_VALUE\": {\n result += \"}\";\n break;\n }\n\n case \"INSIDE_ARRAY_START\":\n case \"INSIDE_ARRAY_AFTER_COMMA\":\n case \"INSIDE_ARRAY_AFTER_VALUE\": {\n result += \"]\";\n break;\n }\n\n case \"INSIDE_LITERAL\": {\n const partialLiteral = input.substring(literalStart!, input.length);\n\n if (\"true\".startsWith(partialLiteral)) {\n result += \"true\".slice(partialLiteral.length);\n } else if (\"false\".startsWith(partialLiteral)) {\n result += \"false\".slice(partialLiteral.length);\n } else if (\"null\".startsWith(partialLiteral)) {\n result += \"null\".slice(partialLiteral.length);\n }\n }\n }\n }\n\n return [result, path];\n}\n"],"mappings":"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","names":[]}
package/dist/index.d.mts CHANGED
@@ -1,19 +1,10 @@
1
- import { a as AssistantStreamChunk, T as ToolResponse, c as AssistantMessage, d as AssistantStreamEncoder, A as AssistantStream } from './assistant-stream-ujRn7KXt.mjs';
2
- export { e as createAssistantStream, f as createAssistantStreamResponse } from './assistant-stream-ujRn7KXt.mjs';
3
- import { R as ReadonlyJSONValue } from './json-value-DvDjYV7y.mjs';
4
-
5
- declare class PipeableTransformStream<I, O> extends TransformStream<I, O> {
6
- constructor(transform: (readable: ReadableStream<I>) => ReadableStream<O>);
7
- }
8
-
9
- type ToolCallback = (toolCall: {
10
- toolCallId: string;
11
- toolName: string;
12
- args: unknown;
13
- }) => Promise<ToolResponse<ReadonlyJSONValue>> | ToolResponse<ReadonlyJSONValue> | undefined;
14
- declare class ToolExecutionStream extends PipeableTransformStream<AssistantStreamChunk, AssistantStreamChunk> {
15
- constructor(toolCallback: ToolCallback);
16
- }
1
+ import { a as AssistantStreamChunk, c as AssistantMessage, d as AssistantStreamEncoder, A as AssistantStream, T as ToolResponse } from './assistant-stream-ISFjQ0mQ.mjs';
2
+ export { e as createAssistantStream, f as createAssistantStreamResponse } from './assistant-stream-ISFjQ0mQ.mjs';
3
+ import { JSONSchema7 } from 'json-schema';
4
+ import { DeepPartial } from 'ai';
5
+ import { A as AsyncIterableStream } from './AsyncIterableStream-C3C8ZoXv.mjs';
6
+ import { StandardSchemaV1 } from '@standard-schema/spec';
7
+ import { R as ReadonlyJSONValue } from './json-value-Ch5eKkQ_.mjs';
17
8
 
18
9
  declare class AssistantMessageAccumulator extends TransformStream<AssistantStreamChunk, AssistantMessage> {
19
10
  constructor({ initialMessage, }?: {
@@ -21,6 +12,10 @@ declare class AssistantMessageAccumulator extends TransformStream<AssistantStrea
21
12
  });
22
13
  }
23
14
 
15
+ declare class PipeableTransformStream<I, O> extends TransformStream<I, O> {
16
+ constructor(transform: (readable: ReadableStream<I>) => ReadableStream<O>);
17
+ }
18
+
24
19
  declare class DataStreamEncoder extends PipeableTransformStream<AssistantStreamChunk, Uint8Array> implements AssistantStreamEncoder {
25
20
  headers: Headers;
26
21
  constructor();
@@ -48,4 +43,105 @@ declare class AssistantMessageStream {
48
43
  tee(): [AssistantMessageStream, AssistantMessageStream];
49
44
  }
50
45
 
51
- export { AssistantMessage, AssistantMessageAccumulator, AssistantMessageStream, AssistantStream, AssistantStreamChunk, DataStreamDecoder, DataStreamEncoder, PlainTextDecoder, PlainTextEncoder, ToolExecutionStream, ToolResponse };
46
+ type AsNumber<K> = K extends `${infer N extends number}` ? N | K : never;
47
+ type TupleIndex<T extends readonly any[]> = Exclude<keyof T, keyof any[]>;
48
+ type ObjectKey<T> = keyof T & (string | number);
49
+ type TypePath<T> = [] | (0 extends 1 & T ? any[] : T extends object ? T extends readonly any[] ? number extends T["length"] ? {
50
+ [K in TupleIndex<T>]: [AsNumber<K>, ...TypePath<T[K]>];
51
+ }[TupleIndex<T>] : [
52
+ number,
53
+ ...TypePath<T[number]>
54
+ ] : {
55
+ [K in ObjectKey<T>]: [K, ...TypePath<T[K]>];
56
+ }[ObjectKey<T>] : [
57
+ ]);
58
+ type TypeAtPath<T, P extends readonly any[]> = P extends [
59
+ infer Head,
60
+ ...infer Rest
61
+ ] ? Head extends keyof T ? TypeAtPath<T[Head], Rest> : never : T;
62
+
63
+ /**
64
+ * Interface for reading tool call arguments from a stream, which are
65
+ * generated by a language learning model (LLM). Provides methods to
66
+ * retrieve specific values, partial streams, or complete items from
67
+ * an array, based on a specified path.
68
+ *
69
+ * @template TArgs The type of arguments being read.
70
+ */
71
+ interface ToolCallArgsReader<TArgs> {
72
+ /**
73
+ * Returns a promise that will resolve to the value at the given path,
74
+ * as soon as that path is generated by the LLM.
75
+ *
76
+ * @param fieldPath An array of object keys or array indices.
77
+ */
78
+ get<PathT extends TypePath<TArgs>>(...fieldPath: PathT): Promise<TypeAtPath<TArgs, PathT>>;
79
+ /**
80
+ * Returns a stream that will emit partial values at the given path,
81
+ * as they are generated by the LLM.
82
+ *
83
+ * @param fieldPath An array of object keys or array indices.
84
+ */
85
+ streamValues<PathT extends TypePath<TArgs>>(...fieldPath: PathT): AsyncIterableStream<DeepPartial<TypeAtPath<TArgs, PathT>>>;
86
+ /**
87
+ * Returns a stream that will emit partial text at the given path,
88
+ * as they are generated by the LLM.
89
+ *
90
+ * @param fieldPath An array of object keys or array indices.
91
+ */
92
+ streamText<PathT extends TypePath<TArgs>>(...fieldPath: PathT): TypeAtPath<TArgs, PathT> extends string & infer U ? AsyncIterableStream<U> : never;
93
+ /**
94
+ * Returns a stream that will emit complete items in the array
95
+ * at the given path, as they are generated by the LLM.
96
+ *
97
+ * @param fieldPath An array of object keys or array indices.
98
+ */
99
+ forEach<PathT extends TypePath<TArgs>>(...fieldPath: PathT): TypeAtPath<TArgs, PathT> extends Array<infer U> ? AsyncIterableStream<U> : never;
100
+ }
101
+ interface ToolCallResultReader<TResult> {
102
+ get: () => Promise<TResult>;
103
+ }
104
+ interface ToolCallReader<TArgs, TResult> {
105
+ args: ToolCallArgsReader<TArgs>;
106
+ result: ToolCallResultReader<TResult>;
107
+ }
108
+ type ToolExecutionContext = {
109
+ toolCallId: string;
110
+ abortSignal: AbortSignal;
111
+ };
112
+ type ToolExecuteFunction<TArgs, TResult> = (args: TArgs, context: ToolExecutionContext) => TResult | Promise<TResult>;
113
+ type ToolStreamCallFunction<TArgs, TResult> = (reader: ToolCallReader<TArgs, TResult>, context: ToolExecutionContext) => void;
114
+ type OnSchemaValidationErrorFunction<TResult> = ToolExecuteFunction<unknown, TResult>;
115
+ type Tool<TArgs = unknown, TResult = unknown> = {
116
+ description?: string | undefined;
117
+ parameters: StandardSchemaV1<TArgs> | JSONSchema7;
118
+ execute?: ToolExecuteFunction<TArgs, TResult>;
119
+ /**
120
+ * @deprecated Experimental, API may change.
121
+ */
122
+ streamCall?: ToolStreamCallFunction<TArgs, TResult>;
123
+ experimental_onSchemaValidationError?: OnSchemaValidationErrorFunction<TResult>;
124
+ };
125
+
126
+ type ToolCallback = (toolCall: {
127
+ toolCallId: string;
128
+ toolName: string;
129
+ args: unknown;
130
+ }) => Promise<ToolResponse<ReadonlyJSONValue>> | ToolResponse<ReadonlyJSONValue> | undefined;
131
+ type ToolStreamCallback = <TArgs, TResult>(toolCall: {
132
+ reader: ToolCallReader<TArgs, TResult>;
133
+ toolCallId: string;
134
+ toolName: string;
135
+ }) => void;
136
+ type ToolExecutionOptions = {
137
+ execute: ToolCallback;
138
+ streamCall: ToolStreamCallback;
139
+ };
140
+ declare class ToolExecutionStream extends PipeableTransformStream<AssistantStreamChunk, AssistantStreamChunk> {
141
+ constructor(options: ToolExecutionOptions);
142
+ }
143
+
144
+ declare function unstable_runPendingTools(message: AssistantMessage, tools: Record<string, Tool<any, any>> | undefined, abortSignal: AbortSignal): Promise<AssistantMessage>;
145
+ declare function toolResultStream(tools: Record<string, Tool<any, any>> | undefined, abortSignal: AbortSignal): ToolExecutionStream;
146
+
147
+ export { AssistantMessage, AssistantMessageAccumulator, AssistantMessageStream, AssistantStream, AssistantStreamChunk, DataStreamDecoder, DataStreamEncoder, PlainTextDecoder, PlainTextEncoder, type Tool, type ToolCallReader, ToolExecutionStream, ToolResponse, unstable_runPendingTools, toolResultStream as unstable_toolResultStream };
package/dist/index.d.ts CHANGED
@@ -1,19 +1,10 @@
1
- import { a as AssistantStreamChunk, T as ToolResponse, c as AssistantMessage, d as AssistantStreamEncoder, A as AssistantStream } from './assistant-stream-CgeUyrON.js';
2
- export { e as createAssistantStream, f as createAssistantStreamResponse } from './assistant-stream-CgeUyrON.js';
3
- import { R as ReadonlyJSONValue } from './json-value-DvDjYV7y.js';
4
-
5
- declare class PipeableTransformStream<I, O> extends TransformStream<I, O> {
6
- constructor(transform: (readable: ReadableStream<I>) => ReadableStream<O>);
7
- }
8
-
9
- type ToolCallback = (toolCall: {
10
- toolCallId: string;
11
- toolName: string;
12
- args: unknown;
13
- }) => Promise<ToolResponse<ReadonlyJSONValue>> | ToolResponse<ReadonlyJSONValue> | undefined;
14
- declare class ToolExecutionStream extends PipeableTransformStream<AssistantStreamChunk, AssistantStreamChunk> {
15
- constructor(toolCallback: ToolCallback);
16
- }
1
+ import { a as AssistantStreamChunk, c as AssistantMessage, d as AssistantStreamEncoder, A as AssistantStream, T as ToolResponse } from './assistant-stream-kAoIMgvk.js';
2
+ export { e as createAssistantStream, f as createAssistantStreamResponse } from './assistant-stream-kAoIMgvk.js';
3
+ import { JSONSchema7 } from 'json-schema';
4
+ import { DeepPartial } from 'ai';
5
+ import { A as AsyncIterableStream } from './AsyncIterableStream-C3C8ZoXv.js';
6
+ import { StandardSchemaV1 } from '@standard-schema/spec';
7
+ import { R as ReadonlyJSONValue } from './json-value-Ch5eKkQ_.js';
17
8
 
18
9
  declare class AssistantMessageAccumulator extends TransformStream<AssistantStreamChunk, AssistantMessage> {
19
10
  constructor({ initialMessage, }?: {
@@ -21,6 +12,10 @@ declare class AssistantMessageAccumulator extends TransformStream<AssistantStrea
21
12
  });
22
13
  }
23
14
 
15
+ declare class PipeableTransformStream<I, O> extends TransformStream<I, O> {
16
+ constructor(transform: (readable: ReadableStream<I>) => ReadableStream<O>);
17
+ }
18
+
24
19
  declare class DataStreamEncoder extends PipeableTransformStream<AssistantStreamChunk, Uint8Array> implements AssistantStreamEncoder {
25
20
  headers: Headers;
26
21
  constructor();
@@ -48,4 +43,105 @@ declare class AssistantMessageStream {
48
43
  tee(): [AssistantMessageStream, AssistantMessageStream];
49
44
  }
50
45
 
51
- export { AssistantMessage, AssistantMessageAccumulator, AssistantMessageStream, AssistantStream, AssistantStreamChunk, DataStreamDecoder, DataStreamEncoder, PlainTextDecoder, PlainTextEncoder, ToolExecutionStream, ToolResponse };
46
+ type AsNumber<K> = K extends `${infer N extends number}` ? N | K : never;
47
+ type TupleIndex<T extends readonly any[]> = Exclude<keyof T, keyof any[]>;
48
+ type ObjectKey<T> = keyof T & (string | number);
49
+ type TypePath<T> = [] | (0 extends 1 & T ? any[] : T extends object ? T extends readonly any[] ? number extends T["length"] ? {
50
+ [K in TupleIndex<T>]: [AsNumber<K>, ...TypePath<T[K]>];
51
+ }[TupleIndex<T>] : [
52
+ number,
53
+ ...TypePath<T[number]>
54
+ ] : {
55
+ [K in ObjectKey<T>]: [K, ...TypePath<T[K]>];
56
+ }[ObjectKey<T>] : [
57
+ ]);
58
+ type TypeAtPath<T, P extends readonly any[]> = P extends [
59
+ infer Head,
60
+ ...infer Rest
61
+ ] ? Head extends keyof T ? TypeAtPath<T[Head], Rest> : never : T;
62
+
63
+ /**
64
+ * Interface for reading tool call arguments from a stream, which are
65
+ * generated by a language learning model (LLM). Provides methods to
66
+ * retrieve specific values, partial streams, or complete items from
67
+ * an array, based on a specified path.
68
+ *
69
+ * @template TArgs The type of arguments being read.
70
+ */
71
+ interface ToolCallArgsReader<TArgs> {
72
+ /**
73
+ * Returns a promise that will resolve to the value at the given path,
74
+ * as soon as that path is generated by the LLM.
75
+ *
76
+ * @param fieldPath An array of object keys or array indices.
77
+ */
78
+ get<PathT extends TypePath<TArgs>>(...fieldPath: PathT): Promise<TypeAtPath<TArgs, PathT>>;
79
+ /**
80
+ * Returns a stream that will emit partial values at the given path,
81
+ * as they are generated by the LLM.
82
+ *
83
+ * @param fieldPath An array of object keys or array indices.
84
+ */
85
+ streamValues<PathT extends TypePath<TArgs>>(...fieldPath: PathT): AsyncIterableStream<DeepPartial<TypeAtPath<TArgs, PathT>>>;
86
+ /**
87
+ * Returns a stream that will emit partial text at the given path,
88
+ * as they are generated by the LLM.
89
+ *
90
+ * @param fieldPath An array of object keys or array indices.
91
+ */
92
+ streamText<PathT extends TypePath<TArgs>>(...fieldPath: PathT): TypeAtPath<TArgs, PathT> extends string & infer U ? AsyncIterableStream<U> : never;
93
+ /**
94
+ * Returns a stream that will emit complete items in the array
95
+ * at the given path, as they are generated by the LLM.
96
+ *
97
+ * @param fieldPath An array of object keys or array indices.
98
+ */
99
+ forEach<PathT extends TypePath<TArgs>>(...fieldPath: PathT): TypeAtPath<TArgs, PathT> extends Array<infer U> ? AsyncIterableStream<U> : never;
100
+ }
101
+ interface ToolCallResultReader<TResult> {
102
+ get: () => Promise<TResult>;
103
+ }
104
+ interface ToolCallReader<TArgs, TResult> {
105
+ args: ToolCallArgsReader<TArgs>;
106
+ result: ToolCallResultReader<TResult>;
107
+ }
108
+ type ToolExecutionContext = {
109
+ toolCallId: string;
110
+ abortSignal: AbortSignal;
111
+ };
112
+ type ToolExecuteFunction<TArgs, TResult> = (args: TArgs, context: ToolExecutionContext) => TResult | Promise<TResult>;
113
+ type ToolStreamCallFunction<TArgs, TResult> = (reader: ToolCallReader<TArgs, TResult>, context: ToolExecutionContext) => void;
114
+ type OnSchemaValidationErrorFunction<TResult> = ToolExecuteFunction<unknown, TResult>;
115
+ type Tool<TArgs = unknown, TResult = unknown> = {
116
+ description?: string | undefined;
117
+ parameters: StandardSchemaV1<TArgs> | JSONSchema7;
118
+ execute?: ToolExecuteFunction<TArgs, TResult>;
119
+ /**
120
+ * @deprecated Experimental, API may change.
121
+ */
122
+ streamCall?: ToolStreamCallFunction<TArgs, TResult>;
123
+ experimental_onSchemaValidationError?: OnSchemaValidationErrorFunction<TResult>;
124
+ };
125
+
126
+ type ToolCallback = (toolCall: {
127
+ toolCallId: string;
128
+ toolName: string;
129
+ args: unknown;
130
+ }) => Promise<ToolResponse<ReadonlyJSONValue>> | ToolResponse<ReadonlyJSONValue> | undefined;
131
+ type ToolStreamCallback = <TArgs, TResult>(toolCall: {
132
+ reader: ToolCallReader<TArgs, TResult>;
133
+ toolCallId: string;
134
+ toolName: string;
135
+ }) => void;
136
+ type ToolExecutionOptions = {
137
+ execute: ToolCallback;
138
+ streamCall: ToolStreamCallback;
139
+ };
140
+ declare class ToolExecutionStream extends PipeableTransformStream<AssistantStreamChunk, AssistantStreamChunk> {
141
+ constructor(options: ToolExecutionOptions);
142
+ }
143
+
144
+ declare function unstable_runPendingTools(message: AssistantMessage, tools: Record<string, Tool<any, any>> | undefined, abortSignal: AbortSignal): Promise<AssistantMessage>;
145
+ declare function toolResultStream(tools: Record<string, Tool<any, any>> | undefined, abortSignal: AbortSignal): ToolExecutionStream;
146
+
147
+ export { AssistantMessage, AssistantMessageAccumulator, AssistantMessageStream, AssistantStream, AssistantStreamChunk, DataStreamDecoder, DataStreamEncoder, PlainTextDecoder, PlainTextEncoder, type Tool, type ToolCallReader, ToolExecutionStream, ToolResponse, unstable_runPendingTools, toolResultStream as unstable_toolResultStream };