assistant-stream 0.3.13 → 0.3.15
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 +39 -0
- package/dist/core/AssistantStream.d.ts +37 -0
- package/dist/core/AssistantStream.d.ts.map +1 -1
- package/dist/core/AssistantStream.js +22 -0
- package/dist/core/AssistantStream.js.map +1 -1
- package/dist/core/AssistantStreamChunk.d.ts +32 -0
- package/dist/core/AssistantStreamChunk.d.ts.map +1 -1
- package/dist/core/accumulators/assistant-message-accumulator.d.ts.map +1 -1
- package/dist/core/accumulators/assistant-message-accumulator.js +3 -0
- package/dist/core/accumulators/assistant-message-accumulator.js.map +1 -1
- package/dist/core/modules/assistant-stream.d.ts +68 -0
- package/dist/core/modules/assistant-stream.d.ts.map +1 -1
- package/dist/core/modules/assistant-stream.js +23 -0
- package/dist/core/modules/assistant-stream.js.map +1 -1
- package/dist/core/modules/tool-call.d.ts.map +1 -1
- package/dist/core/modules/tool-call.js +3 -0
- package/dist/core/modules/tool-call.js.map +1 -1
- package/dist/core/tool/ToolExecutionStream.d.ts.map +1 -1
- package/dist/core/tool/ToolExecutionStream.js +3 -0
- package/dist/core/tool/ToolExecutionStream.js.map +1 -1
- package/dist/core/tool/ToolResponse.d.ts +44 -0
- package/dist/core/tool/ToolResponse.d.ts.map +1 -1
- package/dist/core/tool/ToolResponse.js +27 -0
- package/dist/core/tool/ToolResponse.js.map +1 -1
- package/dist/core/tool/tool-types.d.ts +119 -2
- package/dist/core/tool/tool-types.d.ts.map +1 -1
- package/dist/core/tool/toolResultStream.d.ts +15 -0
- package/dist/core/tool/toolResultStream.d.ts.map +1 -1
- package/dist/core/tool/toolResultStream.js +39 -1
- package/dist/core/tool/toolResultStream.js.map +1 -1
- package/dist/core/utils/types.d.ts +4 -0
- package/dist/core/utils/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/resumable/ResumableStreamContext.d.ts +27 -0
- package/dist/resumable/ResumableStreamContext.d.ts.map +1 -0
- package/dist/resumable/ResumableStreamContext.js +121 -0
- package/dist/resumable/ResumableStreamContext.js.map +1 -0
- package/dist/resumable/constants.d.ts +2 -0
- package/dist/resumable/constants.d.ts.map +1 -0
- package/dist/resumable/constants.js +2 -0
- package/dist/resumable/constants.js.map +1 -0
- package/dist/resumable/createResumableAssistantStreamResponse.d.ts +24 -0
- package/dist/resumable/createResumableAssistantStreamResponse.d.ts.map +1 -0
- package/dist/resumable/createResumableAssistantStreamResponse.js +40 -0
- package/dist/resumable/createResumableAssistantStreamResponse.js.map +1 -0
- package/dist/resumable/errors.d.ts +7 -0
- package/dist/resumable/errors.d.ts.map +1 -0
- package/dist/resumable/errors.js +15 -0
- package/dist/resumable/errors.js.map +1 -0
- package/dist/resumable/index.d.ts +7 -0
- package/dist/resumable/index.d.ts.map +1 -0
- package/dist/resumable/index.js +5 -0
- package/dist/resumable/index.js.map +1 -0
- package/dist/resumable/stores/InMemoryResumableStreamStore.d.ts +13 -0
- package/dist/resumable/stores/InMemoryResumableStreamStore.d.ts.map +1 -0
- package/dist/resumable/stores/InMemoryResumableStreamStore.js +199 -0
- package/dist/resumable/stores/InMemoryResumableStreamStore.js.map +1 -0
- package/dist/resumable/stores/ioredis.d.ts +10 -0
- package/dist/resumable/stores/ioredis.d.ts.map +1 -0
- package/dist/resumable/stores/ioredis.js +95 -0
- package/dist/resumable/stores/ioredis.js.map +1 -0
- package/dist/resumable/stores/redis-impl.d.ts +60 -0
- package/dist/resumable/stores/redis-impl.d.ts.map +1 -0
- package/dist/resumable/stores/redis-impl.js +198 -0
- package/dist/resumable/stores/redis-impl.js.map +1 -0
- package/dist/resumable/stores/redis.d.ts +39 -0
- package/dist/resumable/stores/redis.d.ts.map +1 -0
- package/dist/resumable/stores/redis.js +113 -0
- package/dist/resumable/stores/redis.js.map +1 -0
- package/dist/resumable/types.d.ts +30 -0
- package/dist/resumable/types.d.ts.map +1 -0
- package/dist/resumable/types.js +2 -0
- package/dist/resumable/types.js.map +1 -0
- package/package.json +28 -2
- package/src/core/AssistantStream.ts +37 -0
- package/src/core/AssistantStreamChunk.ts +32 -0
- package/src/core/accumulators/assistant-message-accumulator.ts +3 -0
- package/src/core/modules/assistant-stream.ts +68 -0
- package/src/core/modules/tool-call.ts +3 -0
- package/src/core/tool/ToolExecutionStream.ts +3 -0
- package/src/core/tool/ToolResponse.ts +50 -0
- package/src/core/tool/tool-types.ts +125 -2
- package/src/core/tool/toolResultStream.test.ts +360 -2
- package/src/core/tool/toolResultStream.ts +45 -1
- package/src/core/utils/types.ts +4 -0
- package/src/index.ts +5 -1
- package/src/resumable/ResumableStreamContext.test.ts +274 -0
- package/src/resumable/ResumableStreamContext.ts +187 -0
- package/src/resumable/__tests__/integration.test.ts +159 -0
- package/src/resumable/constants.ts +1 -0
- package/src/resumable/createResumableAssistantStreamResponse.test.ts +243 -0
- package/src/resumable/createResumableAssistantStreamResponse.ts +80 -0
- package/src/resumable/errors.ts +26 -0
- package/src/resumable/index.ts +36 -0
- package/src/resumable/stores/InMemoryResumableStreamStore.test.ts +285 -0
- package/src/resumable/stores/InMemoryResumableStreamStore.ts +237 -0
- package/src/resumable/stores/ioredis.ts +123 -0
- package/src/resumable/stores/redis-impl.ts +304 -0
- package/src/resumable/stores/redis.test.ts +265 -0
- package/src/resumable/stores/redis.ts +171 -0
- package/src/resumable/types.ts +49 -0
|
@@ -1,19 +1,63 @@
|
|
|
1
1
|
import type { ReadonlyJSONValue } from "../../utils/json/json-value.js";
|
|
2
|
+
import type { ToolModelContentPart } from "./tool-types.js";
|
|
2
3
|
declare const TOOL_RESPONSE_SYMBOL: unique symbol;
|
|
4
|
+
/**
|
|
5
|
+
* Shape accepted anywhere a {@link ToolResponse} can be returned.
|
|
6
|
+
*/
|
|
3
7
|
export type ToolResponseLike<TResult> = {
|
|
8
|
+
/** UI-visible tool result value. */
|
|
4
9
|
result: TResult;
|
|
10
|
+
/**
|
|
11
|
+
* Optional UI-only artifact associated with the result.
|
|
12
|
+
*
|
|
13
|
+
* Artifacts are useful for large or structured data that should be available
|
|
14
|
+
* to renderers without necessarily being sent back to the model.
|
|
15
|
+
*/
|
|
5
16
|
artifact?: ReadonlyJSONValue | undefined;
|
|
17
|
+
/** Marks the tool result as an error result. */
|
|
6
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;
|
|
26
|
+
/** Optional provider-specific message payload associated with the tool result. */
|
|
7
27
|
messages?: ReadonlyJSONValue | undefined;
|
|
8
28
|
};
|
|
29
|
+
/**
|
|
30
|
+
* Tool result wrapper for separating UI-visible output from model-visible
|
|
31
|
+
* output.
|
|
32
|
+
*
|
|
33
|
+
* Return `ToolResponse` from a tool when you need to attach an artifact, mark
|
|
34
|
+
* the result as an error, or control the content sent back to the model.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* return new ToolResponse({
|
|
39
|
+
* result: { title: "Report ready" },
|
|
40
|
+
* artifact: { reportId },
|
|
41
|
+
* modelContent: [{ type: "text", text: "The report is ready." }],
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
9
45
|
export declare class ToolResponse<TResult> {
|
|
10
46
|
get [TOOL_RESPONSE_SYMBOL](): boolean;
|
|
11
47
|
readonly artifact?: ReadonlyJSONValue;
|
|
12
48
|
readonly result: TResult;
|
|
13
49
|
readonly isError: boolean;
|
|
50
|
+
readonly modelContent?: readonly ToolModelContentPart[];
|
|
14
51
|
readonly messages?: ReadonlyJSONValue;
|
|
15
52
|
constructor(options: ToolResponseLike<TResult>);
|
|
16
53
|
static [Symbol.hasInstance](obj: unknown): obj is ToolResponse<ReadonlyJSONValue>;
|
|
54
|
+
/**
|
|
55
|
+
* Converts a plain tool return value into a {@link ToolResponse}.
|
|
56
|
+
*
|
|
57
|
+
* Existing `ToolResponse` instances are returned unchanged. `undefined`
|
|
58
|
+
* becomes the string `"<no result>"` so downstream protocol chunks always
|
|
59
|
+
* carry a concrete result.
|
|
60
|
+
*/
|
|
17
61
|
static toResponse(result: any | ToolResponse<any>): ToolResponse<any>;
|
|
18
62
|
}
|
|
19
63
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolResponse.d.ts","sourceRoot":"","sources":["../../../src/core/tool/ToolResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,uCAAoC;
|
|
1
|
+
{"version":3,"file":"ToolResponse.d.ts","sourceRoot":"","sources":["../../../src/core/tool/ToolResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,uCAAoC;AACrE,OAAO,KAAK,EACV,oBAAoB,EAErB,wBAAqB;AAEtB,QAAA,MAAM,oBAAoB,eAAkC,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,OAAO,IAAI;IACtC,oCAAoC;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACzC,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,CAAC;IAC3D,kFAAkF;IAClF,QAAQ,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC1C,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,YAAY,CAAC,OAAO;IAC/B,IAAI,CAAC,oBAAoB,CAAC,YAEzB;IAED,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;gBAE1B,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAc9C,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CACzB,GAAG,EAAE,OAAO,GACX,GAAG,IAAI,YAAY,CAAC,iBAAiB,CAAC;IAMzC;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC;CAQtE"}
|
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
const TOOL_RESPONSE_SYMBOL = Symbol.for("aui.tool-response");
|
|
2
|
+
/**
|
|
3
|
+
* Tool result wrapper for separating UI-visible output from model-visible
|
|
4
|
+
* output.
|
|
5
|
+
*
|
|
6
|
+
* Return `ToolResponse` from a tool when you need to attach an artifact, mark
|
|
7
|
+
* the result as an error, or control the content sent back to the model.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* return new ToolResponse({
|
|
12
|
+
* result: { title: "Report ready" },
|
|
13
|
+
* artifact: { reportId },
|
|
14
|
+
* modelContent: [{ type: "text", text: "The report is ready." }],
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
2
18
|
export class ToolResponse {
|
|
3
19
|
get [TOOL_RESPONSE_SYMBOL]() {
|
|
4
20
|
return true;
|
|
@@ -6,6 +22,7 @@ export class ToolResponse {
|
|
|
6
22
|
artifact;
|
|
7
23
|
result;
|
|
8
24
|
isError;
|
|
25
|
+
modelContent;
|
|
9
26
|
messages;
|
|
10
27
|
constructor(options) {
|
|
11
28
|
if (options.artifact !== undefined) {
|
|
@@ -13,6 +30,9 @@ export class ToolResponse {
|
|
|
13
30
|
}
|
|
14
31
|
this.result = options.result;
|
|
15
32
|
this.isError = options.isError ?? false;
|
|
33
|
+
if (options.modelContent !== undefined) {
|
|
34
|
+
this.modelContent = options.modelContent;
|
|
35
|
+
}
|
|
16
36
|
if (options.messages !== undefined) {
|
|
17
37
|
this.messages = options.messages;
|
|
18
38
|
}
|
|
@@ -20,6 +40,13 @@ export class ToolResponse {
|
|
|
20
40
|
static [Symbol.hasInstance](obj) {
|
|
21
41
|
return (typeof obj === "object" && obj !== null && TOOL_RESPONSE_SYMBOL in obj);
|
|
22
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Converts a plain tool return value into a {@link ToolResponse}.
|
|
45
|
+
*
|
|
46
|
+
* Existing `ToolResponse` instances are returned unchanged. `undefined`
|
|
47
|
+
* becomes the string `"<no result>"` so downstream protocol chunks always
|
|
48
|
+
* carry a concrete result.
|
|
49
|
+
*/
|
|
23
50
|
static toResponse(result) {
|
|
24
51
|
if (result instanceof ToolResponse) {
|
|
25
52
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolResponse.js","sourceRoot":"","sources":["../../../src/core/tool/ToolResponse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToolResponse.js","sourceRoot":"","sources":["../../../src/core/tool/ToolResponse.ts"],"names":[],"mappings":"AAMA,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AA4B7D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,YAAY;IACvB,IAAI,CAAC,oBAAoB,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,QAAQ,CAAqB;IAC7B,MAAM,CAAU;IAChB,OAAO,CAAU;IACjB,YAAY,CAAmC;IAC/C,QAAQ,CAAqB;IAEtC,YAAY,OAAkC;QAC5C,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;QACxC,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAC3C,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACnC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CACzB,GAAY;QAEZ,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,oBAAoB,IAAI,GAAG,CACvE,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAA+B;QAC/C,IAAI,MAAM,YAAY,YAAY,EAAE,CAAC;YACnC,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,YAAY,CAAC;YACtB,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM;SACtD,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -3,6 +3,57 @@ import type { DeepPartial, TypeAtPath, TypePath } from "./type-path-utils.js";
|
|
|
3
3
|
import type { AsyncIterableStream } from "../../utils.js";
|
|
4
4
|
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
5
5
|
import type { ToolResponse } from "./ToolResponse.js";
|
|
6
|
+
export type ToolModelContentPart = {
|
|
7
|
+
/** A text content part returned to the model after a tool call. */
|
|
8
|
+
readonly type: "text";
|
|
9
|
+
/** Text that should be included in the model-visible tool result. */
|
|
10
|
+
readonly text: string;
|
|
11
|
+
} | {
|
|
12
|
+
/** A file content part returned to the model after a tool call. */
|
|
13
|
+
readonly type: "file";
|
|
14
|
+
/**
|
|
15
|
+
* File payload encoded as a provider-compatible string, commonly base64
|
|
16
|
+
* for binary data.
|
|
17
|
+
*/
|
|
18
|
+
readonly data: string;
|
|
19
|
+
/** MIME type for the file payload. */
|
|
20
|
+
readonly mediaType: string;
|
|
21
|
+
/** Optional display filename for the file payload. */
|
|
22
|
+
readonly filename?: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Converts a tool's runtime result into content that is sent back to the
|
|
26
|
+
* model.
|
|
27
|
+
*
|
|
28
|
+
* Return this when the value shown in the UI or stored as the tool result
|
|
29
|
+
* should differ from the model-visible response. When omitted, the successful
|
|
30
|
+
* tool result is sent back to the model as-is. If a tool returns a
|
|
31
|
+
* `ToolResponse` with `modelContent`, that explicit content is used instead
|
|
32
|
+
* of calling this function.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* const toModelOutput: ToolModelOutputFunction<
|
|
37
|
+
* { documentId: string },
|
|
38
|
+
* { summary: string; pdfBase64: string }
|
|
39
|
+
* > = ({ output }) => [
|
|
40
|
+
* { type: "text", text: output.summary },
|
|
41
|
+
* {
|
|
42
|
+
* type: "file",
|
|
43
|
+
* data: output.pdfBase64,
|
|
44
|
+
* mediaType: "application/pdf",
|
|
45
|
+
* },
|
|
46
|
+
* ];
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export type ToolModelOutputFunction<TArgs, TResult> = (options: {
|
|
50
|
+
/** Stable identifier for the tool call being converted. */
|
|
51
|
+
toolCallId: string;
|
|
52
|
+
/** Arguments supplied by the model for this tool call. */
|
|
53
|
+
input: TArgs;
|
|
54
|
+
/** Value returned by the tool's {@link ToolExecuteFunction}. */
|
|
55
|
+
output: TResult;
|
|
56
|
+
}) => readonly ToolModelContentPart[] | Promise<readonly ToolModelContentPart[]>;
|
|
6
57
|
/**
|
|
7
58
|
* Interface for reading tool call arguments from a stream, which are
|
|
8
59
|
* generated by a language learning model (LLM). Provides methods to
|
|
@@ -48,17 +99,27 @@ export interface ToolCallReader<TArgs extends Record<string, unknown> = Record<s
|
|
|
48
99
|
args: ToolCallArgsReader<TArgs>;
|
|
49
100
|
response: ToolCallResponseReader<TResult>;
|
|
50
101
|
/**
|
|
51
|
-
* @deprecated
|
|
102
|
+
* @deprecated Use {@link ToolCallReader.response} and read
|
|
103
|
+
* `response.get().result` instead.
|
|
52
104
|
*/
|
|
53
105
|
result: {
|
|
54
106
|
get: () => Promise<TResult>;
|
|
55
107
|
};
|
|
56
108
|
}
|
|
57
109
|
export type ToolExecutionContext = {
|
|
110
|
+
/** Stable identifier for the tool call being executed. */
|
|
58
111
|
toolCallId: string;
|
|
112
|
+
/** Signal that is aborted when the current run is cancelled. */
|
|
59
113
|
abortSignal: AbortSignal;
|
|
114
|
+
/**
|
|
115
|
+
* From inside a frontend tool's execute function, request human input from
|
|
116
|
+
* the UI. Resolves with the payload the UI supplies.
|
|
117
|
+
*/
|
|
60
118
|
human: (payload: unknown) => Promise<unknown>;
|
|
61
119
|
};
|
|
120
|
+
/**
|
|
121
|
+
* Function called when assistant-ui executes a frontend tool.
|
|
122
|
+
*/
|
|
62
123
|
export type ToolExecuteFunction<TArgs, TResult> = (args: TArgs, context: ToolExecutionContext) => TResult | Promise<TResult>;
|
|
63
124
|
export type ToolStreamCallFunction<TArgs extends Record<string, unknown> = Record<string, unknown>, TResult = unknown> = (reader: ToolCallReader<TArgs, TResult>, context: ToolExecutionContext) => void;
|
|
64
125
|
type OnSchemaValidationErrorFunction<TResult> = ToolExecuteFunction<unknown, TResult>;
|
|
@@ -69,32 +130,88 @@ type ToolBase<TArgs extends Record<string, unknown> = Record<string, unknown>, T
|
|
|
69
130
|
streamCall?: ToolStreamCallFunction<TArgs, TResult>;
|
|
70
131
|
};
|
|
71
132
|
type BackendTool<TArgs extends Record<string, unknown> = Record<string, unknown>, TResult = unknown> = ToolBase<TArgs, TResult> & {
|
|
133
|
+
/** Tool that is executed by the backend rather than in the browser. */
|
|
72
134
|
type: "backend";
|
|
73
135
|
description?: undefined;
|
|
74
136
|
parameters?: undefined;
|
|
75
137
|
disabled?: undefined;
|
|
76
138
|
execute?: undefined;
|
|
139
|
+
toModelOutput?: undefined;
|
|
77
140
|
experimental_onSchemaValidationError?: undefined;
|
|
78
141
|
};
|
|
79
142
|
type FrontendTool<TArgs extends Record<string, unknown> = Record<string, unknown>, TResult = unknown> = ToolBase<TArgs, TResult> & {
|
|
143
|
+
/** Tool that is executed in the frontend runtime. */
|
|
80
144
|
type: "frontend";
|
|
145
|
+
/** Natural-language description shown to the model when selecting tools. */
|
|
81
146
|
description?: string | undefined;
|
|
147
|
+
/** Schema for the arguments the model must provide when calling the tool. */
|
|
82
148
|
parameters: StandardSchemaV1<TArgs> | JSONSchema7;
|
|
149
|
+
/** Prevents the tool from being exposed to the model while true. */
|
|
83
150
|
disabled?: boolean;
|
|
151
|
+
/** Executes the tool after the model provides valid arguments. */
|
|
84
152
|
execute: ToolExecuteFunction<TArgs, TResult>;
|
|
153
|
+
/** Converts the execution result into model-visible output. */
|
|
154
|
+
toModelOutput?: ToolModelOutputFunction<TArgs, TResult>;
|
|
155
|
+
/** Handles invalid tool arguments when schema validation fails. */
|
|
85
156
|
experimental_onSchemaValidationError?: OnSchemaValidationErrorFunction<TResult>;
|
|
86
157
|
};
|
|
87
158
|
type HumanTool<TArgs extends Record<string, unknown> = Record<string, unknown>, TResult = unknown> = ToolBase<TArgs, TResult> & {
|
|
159
|
+
/** Tool that pauses the run until a user or UI supplies a result. */
|
|
88
160
|
type: "human";
|
|
161
|
+
/** Natural-language description shown to the model when selecting tools. */
|
|
89
162
|
description?: string | undefined;
|
|
163
|
+
/** Schema for the arguments the model must provide when requesting input. */
|
|
90
164
|
parameters: StandardSchemaV1<TArgs> | JSONSchema7;
|
|
165
|
+
/** Prevents the tool from being exposed to the model while true. */
|
|
91
166
|
disabled?: boolean;
|
|
92
167
|
execute?: undefined;
|
|
168
|
+
toModelOutput?: undefined;
|
|
93
169
|
experimental_onSchemaValidationError?: undefined;
|
|
94
170
|
};
|
|
171
|
+
/**
|
|
172
|
+
* Definition for a tool that can be exposed to the assistant model.
|
|
173
|
+
*
|
|
174
|
+
* Use `type: "frontend"` for tools executed in the browser, `type: "backend"`
|
|
175
|
+
* for tools handled by your server, and `type: "human"` for flows that pause
|
|
176
|
+
* until the UI supplies a result.
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```ts
|
|
180
|
+
* const frontendTool: Tool<{ city: string }, string> = {
|
|
181
|
+
* type: "frontend",
|
|
182
|
+
* description: "Get the weather for a city.",
|
|
183
|
+
* parameters: {
|
|
184
|
+
* type: "object",
|
|
185
|
+
* properties: { city: { type: "string" } },
|
|
186
|
+
* required: ["city"],
|
|
187
|
+
* },
|
|
188
|
+
* execute: async ({ city }) => `Sunny in ${city}`,
|
|
189
|
+
* };
|
|
190
|
+
* ```
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```ts
|
|
194
|
+
* const backendTool: Tool = {
|
|
195
|
+
* type: "backend",
|
|
196
|
+
* };
|
|
197
|
+
* ```
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```ts
|
|
201
|
+
* const humanTool: Tool<{ question: string }, string> = {
|
|
202
|
+
* type: "human",
|
|
203
|
+
* description: "Ask the user a follow-up question.",
|
|
204
|
+
* parameters: {
|
|
205
|
+
* type: "object",
|
|
206
|
+
* properties: { question: { type: "string" } },
|
|
207
|
+
* required: ["question"],
|
|
208
|
+
* },
|
|
209
|
+
* };
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
95
212
|
export type Tool<TArgs extends Record<string, unknown> = Record<string, unknown>, TResult = unknown> = FrontendTool<TArgs, TResult> | BackendTool<TArgs, TResult> | HumanTool<TArgs, TResult> | ToolWithoutType<TArgs, TResult>;
|
|
96
213
|
/**
|
|
97
|
-
* @deprecated Use
|
|
214
|
+
* @deprecated Use {@link Tool} with an explicit `type` field instead.
|
|
98
215
|
*/
|
|
99
216
|
export type ToolWithoutType<TArgs extends Record<string, unknown> = Record<string, unknown>, TResult = unknown> = (Omit<FrontendTool<TArgs, TResult>, "type"> | Omit<BackendTool<TArgs, TResult>, "type"> | Omit<HumanTool<TArgs, TResult>, "type">) & {
|
|
100
217
|
type?: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-types.d.ts","sourceRoot":"","sources":["../../../src/core/tool/tool-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,6BAA0B;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAoB;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,0BAAuB;AAEnD;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvE;;;;;OAKG;IACH,GAAG,CAAC,KAAK,SAAS,QAAQ,CAAC,KAAK,CAAC,EAC/B,GAAG,SAAS,EAAE,KAAK,GAClB,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAErC;;;;;OAKG;IACH,YAAY,CAAC,KAAK,SAAS,QAAQ,CAAC,KAAK,CAAC,EACxC,GAAG,SAAS,EAAE,KAAK,GAClB,mBAAmB,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9D;;;;;OAKG;IACH,UAAU,CAAC,KAAK,SAAS,QAAQ,CAAC,KAAK,CAAC,EACtC,GAAG,SAAS,EAAE,KAAK,GAClB,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,GAChD,mBAAmB,CAAC,CAAC,CAAC,GACtB,KAAK,CAAC;IAEV;;;;;OAKG;IACH,OAAO,CAAC,KAAK,SAAS,QAAQ,CAAC,KAAK,CAAC,EACnC,GAAG,SAAS,EAAE,KAAK,GAClB,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAC9C,mBAAmB,CAAC,CAAC,CAAC,GACtB,KAAK,CAAC;CACX;AAED,MAAM,WAAW,sBAAsB,CAAC,OAAO;IAC7C,GAAG,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,cAAc,CAC7B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,OAAO,GAAG,OAAO;IAEjB,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAChC,QAAQ,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAE1C
|
|
1
|
+
{"version":3,"file":"tool-types.d.ts","sourceRoot":"","sources":["../../../src/core/tool/tool-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,23 @@ import { ToolExecutionStream } from "./ToolExecutionStream.js";
|
|
|
3
3
|
import type { AssistantMessage } from "../utils/types.js";
|
|
4
4
|
export declare function unstable_runPendingTools(message: AssistantMessage, tools: Record<string, Tool> | undefined, abortSignal: AbortSignal, human: (toolCallId: string, payload: unknown) => Promise<unknown>): Promise<AssistantMessage>;
|
|
5
5
|
export type ToolResultStreamOptions = {
|
|
6
|
+
/** Called immediately before a frontend tool's `execute` function runs. */
|
|
6
7
|
onExecutionStart?: (toolCallId: string, toolName: string) => void;
|
|
8
|
+
/** Called after frontend tool execution finishes or fails. */
|
|
7
9
|
onExecutionEnd?: (toolCallId: string, toolName: string) => void;
|
|
8
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Transform stream that executes frontend tools and appends tool results.
|
|
13
|
+
*
|
|
14
|
+
* The transform watches streamed tool-call arguments, runs the matching
|
|
15
|
+
* frontend tool once its arguments are complete, and emits a result chunk for
|
|
16
|
+
* the tool call. Backend and human tools pass through according to their tool
|
|
17
|
+
* definition.
|
|
18
|
+
*
|
|
19
|
+
* @param tools Tool registry or function returning the current registry.
|
|
20
|
+
* @param abortSignal Signal, or signal getter, used for the current run.
|
|
21
|
+
* @param human Callback used to resolve human-tool requests from UI input.
|
|
22
|
+
* @param options Optional execution lifecycle callbacks.
|
|
23
|
+
*/
|
|
9
24
|
export declare function toolResultStream(tools: Record<string, Tool> | (() => Record<string, Tool> | undefined) | undefined, abortSignal: AbortSignal | (() => AbortSignal), human: (toolCallId: string, payload: unknown) => Promise<unknown>, options?: ToolResultStreamOptions): ToolExecutionStream;
|
|
10
25
|
//# sourceMappingURL=toolResultStream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolResultStream.d.ts","sourceRoot":"","sources":["../../../src/core/tool/toolResultStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAuC,wBAAqB;AAG9E,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,0BAAuB;
|
|
1
|
+
{"version":3,"file":"toolResultStream.d.ts","sourceRoot":"","sources":["../../../src/core/tool/toolResultStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAuC,wBAAqB;AAG9E,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,0BAAuB;AAyIvD,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,EACvC,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,6BAoElE;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,8DAA8D;IAC9D,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACjE,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EACD,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GACpB,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,GACxC,SAAS,EACb,WAAW,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,EAC9C,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EACjE,OAAO,CAAC,EAAE,uBAAuB,uBAalC"}
|
|
@@ -57,7 +57,29 @@ function getToolResponse(tools, abortSignal, toolCall, human) {
|
|
|
57
57
|
abortSignal,
|
|
58
58
|
human: (payload) => human(toolCall.toolCallId, payload),
|
|
59
59
|
}));
|
|
60
|
-
|
|
60
|
+
const response = ToolResponse.toResponse(result);
|
|
61
|
+
if (tool.toModelOutput &&
|
|
62
|
+
!response.isError &&
|
|
63
|
+
response.modelContent === undefined) {
|
|
64
|
+
try {
|
|
65
|
+
const modelContent = await tool.toModelOutput({
|
|
66
|
+
toolCallId: toolCall.toolCallId,
|
|
67
|
+
input: toolCall.args,
|
|
68
|
+
output: response.result,
|
|
69
|
+
});
|
|
70
|
+
return new ToolResponse({
|
|
71
|
+
result: response.result,
|
|
72
|
+
artifact: response.artifact,
|
|
73
|
+
isError: response.isError,
|
|
74
|
+
messages: response.messages,
|
|
75
|
+
modelContent,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
console.warn(`[assistant-stream] tool "${toolCall.toolName}" toModelOutput threw; falling back to default projection.`, e);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return response;
|
|
61
83
|
})();
|
|
62
84
|
return Promise.race([executePromise, abortPromise]);
|
|
63
85
|
};
|
|
@@ -105,6 +127,9 @@ export async function unstable_runPendingTools(message, tools, abortSignal, huma
|
|
|
105
127
|
...(toolResponse.artifact !== undefined
|
|
106
128
|
? { artifact: toolResponse.artifact }
|
|
107
129
|
: {}),
|
|
130
|
+
...(toolResponse.modelContent !== undefined
|
|
131
|
+
? { modelContent: toolResponse.modelContent }
|
|
132
|
+
: {}),
|
|
108
133
|
result: toolResponse.result,
|
|
109
134
|
isError: toolResponse.isError,
|
|
110
135
|
};
|
|
@@ -118,6 +143,19 @@ export async function unstable_runPendingTools(message, tools, abortSignal, huma
|
|
|
118
143
|
content: updatedParts,
|
|
119
144
|
};
|
|
120
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Transform stream that executes frontend tools and appends tool results.
|
|
148
|
+
*
|
|
149
|
+
* The transform watches streamed tool-call arguments, runs the matching
|
|
150
|
+
* frontend tool once its arguments are complete, and emits a result chunk for
|
|
151
|
+
* the tool call. Backend and human tools pass through according to their tool
|
|
152
|
+
* definition.
|
|
153
|
+
*
|
|
154
|
+
* @param tools Tool registry or function returning the current registry.
|
|
155
|
+
* @param abortSignal Signal, or signal getter, used for the current run.
|
|
156
|
+
* @param human Callback used to resolve human-tool requests from UI input.
|
|
157
|
+
* @param options Optional execution lifecycle callbacks.
|
|
158
|
+
*/
|
|
121
159
|
export function toolResultStream(tools, abortSignal, human, options) {
|
|
122
160
|
const toolsFn = typeof tools === "function" ? tools : () => tools;
|
|
123
161
|
const abortSignalFn = typeof abortSignal === "function" ? abortSignal : () => abortSignal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolResultStream.js","sourceRoot":"","sources":["../../../src/core/tool/toolResultStream.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,0BAAuB;AAC9C,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAI5D,MAAM,kBAAkB,GAAG,CACzB,MAAe,EACsB,EAAE;IACvC,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,WAAW,IAAI,MAAM;QACpB,MAAoC,CAAC,WAAW,CAAC,CAAC,OAAO,KAAK,CAAC,CACjE,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,eAAe,CACtB,KAAuC,EACvC,WAAwB,EACxB,QAIC,EACD,KAAiE;IAEjE,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,EAAE,OAAO;QAAE,OAAO,SAAS,CAAC;IAErC,MAAM,SAAS,GAAG,KAAK,EACrB,WAA6D,EACnB,EAAE;QAC5C,2CAA2C;QAC3C,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,IAAI,YAAY,CAAC;gBACtB,MAAM,EAAE,+BAA+B;gBACvC,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,GAAG,WAAW,CAAC;QAE5B,IAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClE,IAAI,MAAM,YAAY,OAAO;gBAAE,MAAM,GAAG,MAAM,MAAM,CAAC;YAErD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,SAAS;oBACP,IAAI,CAAC,oCAAoC;wBACzC,CAAC,GAAG,EAAE;4BACJ,MAAM,IAAI,KAAK,CACb,yCAAyC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CACzE,CAAC;wBACJ,CAAC,CAAC,CAAC;YACP,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,8DAA8D;QAC9D,MAAM,YAAY,GAAG,IAAI,OAAO,CAC9B,CAAC,OAAO,EAAE,EAAE;YACV,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,cAAc,CAAC,GAAG,EAAE;oBAClB,cAAc,CAAC,GAAG,EAAE;wBAClB,OAAO,CACL,IAAI,YAAY,CAAC;4BACf,MAAM,EAAE,+BAA+B;4BACvC,OAAO,EAAE,IAAI;yBACd,CAAC,CACH,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YACF,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC,CACF,CAAC;QAEF,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,MAAM,MAAM,GAAG,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAC7C,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,WAAW;gBACX,KAAK,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;aACjE,CAAC,CAAiC,CAAC;YACpC,OAAO,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"toolResultStream.js","sourceRoot":"","sources":["../../../src/core/tool/toolResultStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ReadonlyJSONObject, ReadonlyJSONValue } from "../../utils/json/json-value.js";
|
|
2
|
+
import type { ToolModelContentPart } from "../tool/tool-types.js";
|
|
2
3
|
type TextStatus = {
|
|
3
4
|
type: "running";
|
|
4
5
|
} | {
|
|
@@ -42,17 +43,20 @@ type ToolCallPartBase = {
|
|
|
42
43
|
args: ReadonlyJSONObject;
|
|
43
44
|
artifact?: ReadonlyJSONValue;
|
|
44
45
|
result?: ReadonlyJSONValue;
|
|
46
|
+
modelContent?: readonly ToolModelContentPart[];
|
|
45
47
|
isError?: boolean;
|
|
46
48
|
parentId?: string;
|
|
47
49
|
};
|
|
48
50
|
type ToolCallPartWithoutResult = ToolCallPartBase & {
|
|
49
51
|
state: "partial-call" | "call";
|
|
50
52
|
result?: undefined;
|
|
53
|
+
modelContent?: undefined;
|
|
51
54
|
};
|
|
52
55
|
type ToolCallPartWithResult = ToolCallPartBase & {
|
|
53
56
|
state: "result";
|
|
54
57
|
result: ReadonlyJSONValue;
|
|
55
58
|
artifact?: ReadonlyJSONValue;
|
|
59
|
+
modelContent?: readonly ToolModelContentPart[];
|
|
56
60
|
isError?: boolean;
|
|
57
61
|
};
|
|
58
62
|
export type ToolCallPart = ToolCallPartWithoutResult | ToolCallPartWithResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAClB,uCAAoC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/utils/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export { AssistantTransportDecoder, AssistantTransportEncoder, } from "./core/se
|
|
|
9
9
|
export { UIMessageStreamDecoder, type UIMessageStreamChunk, type UIMessageStreamDataChunk, type UIMessageStreamDecoderOptions, } from "./core/serialization/ui-message-stream/UIMessageStream.js";
|
|
10
10
|
export { AssistantMessageStream } from "./core/accumulators/AssistantMessageStream.js";
|
|
11
11
|
export type { AssistantMessage, AssistantMessageTiming, DataPart, } from "./core/utils/types.js";
|
|
12
|
-
export type { Tool } from "./core/tool/tool-types.js";
|
|
12
|
+
export type { Tool, ToolModelContentPart, ToolModelOutputFunction, } from "./core/tool/tool-types.js";
|
|
13
13
|
export { ToolResponse, type ToolResponseLike } from "./core/tool/ToolResponse.js";
|
|
14
14
|
export { ToolExecutionStream } from "./core/tool/ToolExecutionStream.js";
|
|
15
15
|
export type { ToolCallReader } from "./core/tool/tool-types.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,+BAA+B,GAChC,2CAAwC;AACzC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,IAAI,6BAA6B,GACtD,6DAA0D;AAC3D,OAAO,EAAE,eAAe,EAAE,kCAA+B;AACzD,YAAY,EAAE,yBAAyB,EAAE,2CAAwC;AACjF,YAAY,EAAE,oBAAoB,EAAE,uCAAoC;AACxE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAClB,uDAAoD;AACrD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GACjB,0CAAuC;AACxC,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,uEAAoE;AACrE,OAAO,EACL,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,GACnC,kEAA+D;AAChE,OAAO,EAAE,sBAAsB,EAAE,sDAAmD;AACpF,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,QAAQ,GACT,8BAA2B;AAE5B,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,+BAA+B,GAChC,2CAAwC;AACzC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,IAAI,6BAA6B,GACtD,6DAA0D;AAC3D,OAAO,EAAE,eAAe,EAAE,kCAA+B;AACzD,YAAY,EAAE,yBAAyB,EAAE,2CAAwC;AACjF,YAAY,EAAE,oBAAoB,EAAE,uCAAoC;AACxE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAClB,uDAAoD;AACrD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GACjB,0CAAuC;AACxC,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,uEAAoE;AACrE,OAAO,EACL,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,GACnC,kEAA+D;AAChE,OAAO,EAAE,sBAAsB,EAAE,sDAAmD;AACpF,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,QAAQ,GACT,8BAA2B;AAE5B,YAAY,EACV,IAAI,EACJ,oBAAoB,EACpB,uBAAuB,GACxB,kCAA+B;AAChC,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,oCAAiC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,2CAAwC;AACtE,YAAY,EAAE,cAAc,EAAE,kCAA+B;AAC7D,OAAO,EACL,gBAAgB,IAAI,yBAAyB,EAC7C,wBAAwB,EACxB,KAAK,uBAAuB,GAC7B,wCAAqC;AACtC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,wBAAwB,GAC9B,oCAAiC;AAElC,YAAY,EAAE,oBAAoB,EAAE,+BAA4B;AAChE,YAAY,EAAE,wBAAwB,EAAE,oCAAiC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,4CAAyC;AACtE,OAAO,EACL,oBAAoB,EACpB,wBAAwB,GACzB,8CAA2C;AAC5C,YAAY,EAAE,iBAAiB,EAAE,+BAA4B;AAE7D,OAAO,EACL,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,GAC3B,+CAA4C"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,+BAA+B,GAChC,2CAAwC;AACzC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,IAAI,6BAA6B,GACtD,6DAA0D;AAC3D,OAAO,EAAE,eAAe,EAAE,kCAA+B;AAGzD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAClB,uDAAoD;AACrD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GACjB,0CAAuC;AACxC,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,uEAAoE;AACrE,OAAO,EACL,sBAAsB,GAIvB,kEAA+D;AAChE,OAAO,EAAE,sBAAsB,EAAE,sDAAmD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,+BAA+B,GAChC,2CAAwC;AACzC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,IAAI,6BAA6B,GACtD,6DAA0D;AAC3D,OAAO,EAAE,eAAe,EAAE,kCAA+B;AAGzD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAClB,uDAAoD;AACrD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GACjB,0CAAuC;AACxC,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,uEAAoE;AACrE,OAAO,EACL,sBAAsB,GAIvB,kEAA+D;AAChE,OAAO,EAAE,sBAAsB,EAAE,sDAAmD;AAYpF,OAAO,EAAE,YAAY,EAAyB,oCAAiC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,2CAAwC;AAEtE,OAAO,EACL,gBAAgB,IAAI,yBAAyB,EAC7C,wBAAwB,GAEzB,wCAAqC;AACtC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,GAGlB,oCAAiC;AAKlC,OAAO,EAAE,kBAAkB,EAAE,4CAAyC;AACtE,OAAO,EACL,oBAAoB,EACpB,wBAAwB,GACzB,8CAA2C;AAG5C,OAAO,EACL,iBAAiB,GAUlB,+CAA4C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ResumableStreamRole, ResumableStreamStatus, ResumableStreamStore } from "./types.js";
|
|
2
|
+
export type ResumableStreamContextOptions = {
|
|
3
|
+
readonly store: ResumableStreamStore;
|
|
4
|
+
readonly ttlMs?: number;
|
|
5
|
+
/**
|
|
6
|
+
* Required on serverless runtimes that terminate background work when the
|
|
7
|
+
* request handler returns (Vercel, Cloudflare). Pass `after` from
|
|
8
|
+
* `next/server` so the producer task outlives the response.
|
|
9
|
+
*/
|
|
10
|
+
readonly waitUntil?: (promise: Promise<unknown>) => void;
|
|
11
|
+
readonly onAcquire?: (streamId: string, role: ResumableStreamRole) => void;
|
|
12
|
+
readonly onAppend?: (streamId: string, byteLength: number) => void;
|
|
13
|
+
readonly onFinalize?: (streamId: string, status: "done" | "error", error?: string) => void;
|
|
14
|
+
readonly onError?: (streamId: string, error: unknown) => void;
|
|
15
|
+
};
|
|
16
|
+
export interface ResumableStreamContext {
|
|
17
|
+
/** Producer or consumer entrypoint. Atomically elects the role. */
|
|
18
|
+
run(streamId: string, makeStream: () => ReadableStream<Uint8Array>): Promise<ReadableStream<Uint8Array>>;
|
|
19
|
+
/** Returns `null` when the stream does not exist. */
|
|
20
|
+
resume(streamId: string): Promise<ReadableStream<Uint8Array> | null>;
|
|
21
|
+
/** Throws `ResumableStreamError("missing")` when the stream does not exist. */
|
|
22
|
+
requireResume(streamId: string): Promise<ReadableStream<Uint8Array>>;
|
|
23
|
+
status(streamId: string): Promise<ResumableStreamStatus>;
|
|
24
|
+
delete(streamId: string): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export declare function createResumableStreamContext(options: ResumableStreamContextOptions): ResumableStreamContext;
|
|
27
|
+
//# sourceMappingURL=ResumableStreamContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResumableStreamContext.d.ts","sourceRoot":"","sources":["../../src/resumable/ResumableStreamContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACrB,mBAAgB;AAEjB,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,CACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,OAAO,EACxB,KAAK,CAAC,EAAE,MAAM,KACX,IAAI,CAAC;IACV,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/D,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,mEAAmE;IACnE,GAAG,CACD,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,cAAc,CAAC,UAAU,CAAC,GAC3C,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAEvC,qDAAqD;IACrD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;IAErE,+EAA+E;IAC/E,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAErE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEzD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,6BAA6B,GACrC,sBAAsB,CA8CxB"}
|