@assistant-ui/react 0.7.55 → 0.7.57
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts +1 -1
- package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/edge/converters/fromCoreMessage.d.ts.map +1 -1
- package/dist/runtimes/edge/converters/fromCoreMessage.js +6 -1
- package/dist/runtimes/edge/converters/fromCoreMessage.js.map +1 -1
- package/dist/runtimes/edge/converters/fromCoreMessage.mjs +6 -1
- package/dist/runtimes/edge/converters/fromCoreMessage.mjs.map +1 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.d.ts +1 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.d.ts.map +1 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.js.map +1 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.mjs.map +1 -1
- package/dist/runtimes/edge/streams/assistantDecoderStream.d.ts.map +1 -1
- package/dist/runtimes/edge/streams/assistantDecoderStream.js +6 -1
- package/dist/runtimes/edge/streams/assistantDecoderStream.js.map +1 -1
- package/dist/runtimes/edge/streams/assistantDecoderStream.mjs +6 -1
- package/dist/runtimes/edge/streams/assistantDecoderStream.mjs.map +1 -1
- package/dist/runtimes/edge/streams/assistantEncoderStream.d.ts.map +1 -1
- package/dist/runtimes/edge/streams/assistantEncoderStream.js +7 -0
- package/dist/runtimes/edge/streams/assistantEncoderStream.js.map +1 -1
- package/dist/runtimes/edge/streams/assistantEncoderStream.mjs +7 -0
- package/dist/runtimes/edge/streams/assistantEncoderStream.mjs.map +1 -1
- package/dist/runtimes/edge/streams/runResultStream.d.ts.map +1 -1
- package/dist/runtimes/edge/streams/runResultStream.js +17 -0
- package/dist/runtimes/edge/streams/runResultStream.js.map +1 -1
- package/dist/runtimes/edge/streams/runResultStream.mjs +17 -0
- package/dist/runtimes/edge/streams/runResultStream.mjs.map +1 -1
- package/dist/runtimes/edge/streams/toolResultStream.d.ts +3 -0
- package/dist/runtimes/edge/streams/toolResultStream.d.ts.map +1 -1
- package/dist/runtimes/edge/streams/toolResultStream.js +1 -0
- package/dist/runtimes/edge/streams/toolResultStream.js.map +1 -1
- package/dist/runtimes/edge/streams/toolResultStream.mjs +1 -0
- package/dist/runtimes/edge/streams/toolResultStream.mjs.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts +1 -1
- package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreAdapter.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.js +1 -3
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.mjs +1 -3
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts +2 -2
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageConverter.d.ts +1 -1
- package/dist/runtimes/external-store/ThreadMessageConverter.d.ts.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageConverter.js.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageConverter.mjs.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.d.ts +2 -1
- package/dist/runtimes/external-store/ThreadMessageLike.d.ts.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.js +1 -0
- package/dist/runtimes/external-store/ThreadMessageLike.js.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.mjs +1 -0
- package/dist/runtimes/external-store/ThreadMessageLike.mjs.map +1 -1
- package/dist/runtimes/external-store/external-message-converter.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-message-converter.js +6 -0
- package/dist/runtimes/external-store/external-message-converter.js.map +1 -1
- package/dist/runtimes/external-store/external-message-converter.mjs +6 -0
- package/dist/runtimes/external-store/external-message-converter.mjs.map +1 -1
- package/dist/runtimes/local/ChatModelAdapter.d.ts +17 -16
- package/dist/runtimes/local/ChatModelAdapter.d.ts.map +1 -1
- package/dist/runtimes/local/ChatModelAdapter.js.map +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.js +10 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.mjs +10 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/utils/MessageRepository.d.ts +2 -1
- package/dist/runtimes/utils/MessageRepository.d.ts.map +1 -1
- package/dist/runtimes/utils/MessageRepository.js +25 -1
- package/dist/runtimes/utils/MessageRepository.js.map +1 -1
- package/dist/runtimes/utils/MessageRepository.mjs +25 -1
- package/dist/runtimes/utils/MessageRepository.mjs.map +1 -1
- package/dist/types/AssistantTypes.d.ts +2 -0
- package/dist/types/AssistantTypes.d.ts.map +1 -1
- package/dist/types/AssistantTypes.js.map +1 -1
- package/package.json +1 -1
- package/src/runtimes/edge/converters/fromCoreMessage.ts +6 -1
- package/src/runtimes/edge/createEdgeRuntimeAPI.ts +1 -1
- package/src/runtimes/edge/streams/assistantDecoderStream.ts +7 -1
- package/src/runtimes/edge/streams/assistantEncoderStream.ts +8 -0
- package/src/runtimes/edge/streams/runResultStream.ts +22 -0
- package/src/runtimes/edge/streams/toolResultStream.ts +5 -0
- package/src/runtimes/external-store/ExternalStoreAdapter.tsx +1 -1
- package/src/runtimes/external-store/ExternalStoreRuntimeCore.tsx +1 -3
- package/src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx +5 -4
- package/src/runtimes/external-store/ThreadMessageConverter.ts +1 -1
- package/src/runtimes/external-store/ThreadMessageLike.tsx +3 -1
- package/src/runtimes/external-store/external-message-converter.tsx +6 -0
- package/src/runtimes/local/ChatModelAdapter.tsx +18 -17
- package/src/runtimes/local/LocalThreadRuntimeCore.tsx +14 -1
- package/src/runtimes/utils/MessageRepository.tsx +33 -1
- package/src/types/AssistantTypes.ts +2 -0
@@ -26,7 +26,7 @@ export declare abstract class BaseThreadRuntimeCore implements ThreadRuntimeCore
|
|
26
26
|
abstract startRun(config: StartRunConfig): void;
|
27
27
|
abstract addToolResult(options: AddToolResultOptions): void;
|
28
28
|
abstract cancelRun(): void;
|
29
|
-
get messages(): import("../..").ThreadMessage[];
|
29
|
+
get messages(): readonly import("../..").ThreadMessage[];
|
30
30
|
readonly composer: DefaultThreadComposerRuntimeCore;
|
31
31
|
constructor(_contextProvider: ModelContextProvider);
|
32
32
|
getModelContext(): import("../..").AssistantConfig;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"BaseThreadRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/core/BaseThreadRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,gCAAgC,EAAE,MAAM,8CAA8C,CAAC;AAChG,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,KAAK,kBAAkB,GAAG;IACxB,MAAM,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACvC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF,8BAAsB,qBAAsB,YAAW,iBAAiB;IAsB1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IArB7C,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,cAAc,CAAS;IAE/B,SAAS,CAAC,QAAQ,CAAC,UAAU,oBAA2B;IACxD,aAAoB,QAAQ,IAAI,kBAAkB,GAAG,SAAS,CAAC;IAC/D,aAAoB,UAAU,IAAI,OAAO,CAAC;IAC1C,aAAoB,WAAW,IAAI,SAAS,gBAAgB,EAAE,CAAC;IAC/D,aAAoB,MAAM,IAAI,OAAO,CAAC;IAEtC,aAAoB,YAAY,IAAI,mBAAmB,CAAC;aACxC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;aACpC,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;aACtC,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;aAClD,SAAS,IAAI,IAAI;IAEjC,IAAW,QAAQ,
|
1
|
+
{"version":3,"file":"BaseThreadRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/core/BaseThreadRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,gCAAgC,EAAE,MAAM,8CAA8C,CAAC;AAChG,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,KAAK,kBAAkB,GAAG;IACxB,MAAM,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACvC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF,8BAAsB,qBAAsB,YAAW,iBAAiB;IAsB1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IArB7C,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,cAAc,CAAS;IAE/B,SAAS,CAAC,QAAQ,CAAC,UAAU,oBAA2B;IACxD,aAAoB,QAAQ,IAAI,kBAAkB,GAAG,SAAS,CAAC;IAC/D,aAAoB,UAAU,IAAI,OAAO,CAAC;IAC1C,aAAoB,WAAW,IAAI,SAAS,gBAAgB,EAAE,CAAC;IAC/D,aAAoB,MAAM,IAAI,OAAO,CAAC;IAEtC,aAAoB,YAAY,IAAI,mBAAmB,CAAC;aACxC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;aACpC,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;aACtC,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;aAClD,SAAS,IAAI,IAAI;IAEjC,IAAW,QAAQ,6CAElB;IAED,SAAgB,QAAQ,mCAA8C;gBAEzC,gBAAgB,EAAE,oBAAoB;IAE5D,eAAe;IAItB,OAAO,CAAC,cAAc,CAAqD;IACpE,eAAe,CAAC,SAAS,EAAE,MAAM;IAGjC,SAAS,CAAC,SAAS,EAAE,MAAM;IAe3B,cAAc,CAAC,SAAS,EAAE,MAAM;;;;IAIhC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAIxC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK7C,SAAS,CAAC,kBAAkB;IAIrB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB;IAOrD,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW;IAKnD,OAAO,CAAC,kBAAkB,CAAyC;IAE5D,oBAAoB,CAAC,SAAS,EAAE,MAAM;IAItC,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,qBAAqB;IAWhE,OAAO,CAAC,aAAa,CAA0B;IACxC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAEhC,KAAK,CAAC,SAAS,EAAE,MAAM;IA8BvB,YAAY;IAMnB,SAAS,CAAC,iBAAiB;IAOpB,MAAM;IAIN,MAAM,CAAC,IAAI,EAAE,yBAAyB;IAO7C,OAAO,CAAC,iBAAiB,CAGrB;IAEG,WAAW,CAAC,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,IAAI;CAiBvE"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"fromCoreMessage.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/edge/converters/fromCoreMessage.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,WAAW,EAEX,aAAa,EACb,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,gBAAgB,YAClB,SAAS,WAAW,EAAE,KAC9B,aAAa,EAEf,CAAC;AAEF,eAAO,MAAM,eAAe,YACjB,WAAW;;;;MAMnB,
|
1
|
+
{"version":3,"file":"fromCoreMessage.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/edge/converters/fromCoreMessage.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,WAAW,EAEX,aAAa,EACb,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,gBAAgB,YAClB,SAAS,WAAW,EAAE,KAC9B,aAAa,EAEf,CAAC;AAEF,eAAO,MAAM,eAAe,YACjB,WAAW;;;;MAMnB,aAqDF,CAAC"}
|
@@ -53,7 +53,12 @@ var fromCoreMessage = (message, {
|
|
53
53
|
return part;
|
54
54
|
}),
|
55
55
|
status,
|
56
|
-
metadata: {
|
56
|
+
metadata: {
|
57
|
+
unstable_annotations: [],
|
58
|
+
unstable_data: [],
|
59
|
+
steps: [],
|
60
|
+
custom: {}
|
61
|
+
}
|
57
62
|
};
|
58
63
|
case "user":
|
59
64
|
return {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/runtimes/edge/converters/fromCoreMessage.ts"],"sourcesContent":["import { generateId } from \"../../../internal\";\nimport {\n ThreadMessage,\n CoreMessage,\n ToolCallContentPart,\n MessageStatus,\n CompleteAttachment,\n} from \"../../../types\";\n\nexport const fromCoreMessages = (\n message: readonly CoreMessage[],\n): ThreadMessage[] => {\n return message.map((message) => fromCoreMessage(message));\n};\n\nexport const fromCoreMessage = (\n message: CoreMessage,\n {\n id = generateId(),\n status = { type: \"complete\", reason: \"unknown\" } as MessageStatus,\n attachments = [] as readonly CompleteAttachment[],\n } = {},\n): ThreadMessage => {\n const commonProps = {\n id,\n createdAt: new Date(),\n };\n\n const role = message.role;\n switch (role) {\n case \"assistant\":\n return {\n ...commonProps,\n role,\n content: message.content.map((part) => {\n if (part.type === \"tool-call\") {\n return {\n ...part,\n argsText: JSON.stringify(part.args),\n } satisfies ToolCallContentPart;\n }\n return part;\n }),\n status,\n\n metadata: { unstable_data: []
|
1
|
+
{"version":3,"sources":["../../../../src/runtimes/edge/converters/fromCoreMessage.ts"],"sourcesContent":["import { generateId } from \"../../../internal\";\nimport {\n ThreadMessage,\n CoreMessage,\n ToolCallContentPart,\n MessageStatus,\n CompleteAttachment,\n} from \"../../../types\";\n\nexport const fromCoreMessages = (\n message: readonly CoreMessage[],\n): ThreadMessage[] => {\n return message.map((message) => fromCoreMessage(message));\n};\n\nexport const fromCoreMessage = (\n message: CoreMessage,\n {\n id = generateId(),\n status = { type: \"complete\", reason: \"unknown\" } as MessageStatus,\n attachments = [] as readonly CompleteAttachment[],\n } = {},\n): ThreadMessage => {\n const commonProps = {\n id,\n createdAt: new Date(),\n };\n\n const role = message.role;\n switch (role) {\n case \"assistant\":\n return {\n ...commonProps,\n role,\n content: message.content.map((part) => {\n if (part.type === \"tool-call\") {\n return {\n ...part,\n argsText: JSON.stringify(part.args),\n } satisfies ToolCallContentPart;\n }\n return part;\n }),\n status,\n\n metadata: {\n unstable_annotations: [],\n unstable_data: [],\n steps: [],\n custom: {},\n },\n } satisfies ThreadMessage;\n\n case \"user\":\n return {\n ...commonProps,\n role,\n content: message.content,\n attachments,\n metadata: { custom: {} },\n } satisfies ThreadMessage;\n\n case \"system\":\n return {\n ...commonProps,\n role,\n content: message.content,\n metadata: { custom: {} },\n } satisfies ThreadMessage;\n\n default: {\n const unsupportedRole: never = role;\n throw new Error(`Unknown message role: ${unsupportedRole}`);\n }\n }\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA2B;AASpB,IAAM,mBAAmB,CAC9B,YACoB;AACpB,SAAO,QAAQ,IAAI,CAACA,aAAY,gBAAgBA,QAAO,CAAC;AAC1D;AAEO,IAAM,kBAAkB,CAC7B,SACA;AAAA,EACE,SAAK,4BAAW;AAAA,EAChB,SAAS,EAAE,MAAM,YAAY,QAAQ,UAAU;AAAA,EAC/C,cAAc,CAAC;AACjB,IAAI,CAAC,MACa;AAClB,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,WAAW,oBAAI,KAAK;AAAA,EACtB;AAEA,QAAM,OAAO,QAAQ;AACrB,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA,SAAS,QAAQ,QAAQ,IAAI,CAAC,SAAS;AACrC,cAAI,KAAK,SAAS,aAAa;AAC7B,mBAAO;AAAA,cACL,GAAG;AAAA,cACH,UAAU,KAAK,UAAU,KAAK,IAAI;AAAA,YACpC;AAAA,UACF;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACR,sBAAsB,CAAC;AAAA,UACvB,eAAe,CAAC;AAAA,UAChB,OAAO,CAAC;AAAA,UACR,QAAQ,CAAC;AAAA,QACX;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA,SAAS,QAAQ;AAAA,QACjB;AAAA,QACA,UAAU,EAAE,QAAQ,CAAC,EAAE;AAAA,MACzB;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA,SAAS,QAAQ;AAAA,QACjB,UAAU,EAAE,QAAQ,CAAC,EAAE;AAAA,MACzB;AAAA,IAEF,SAAS;AACP,YAAM,kBAAyB;AAC/B,YAAM,IAAI,MAAM,yBAAyB,eAAe,EAAE;AAAA,IAC5D;AAAA,EACF;AACF;","names":["message"]}
|
@@ -28,7 +28,12 @@ var fromCoreMessage = (message, {
|
|
28
28
|
return part;
|
29
29
|
}),
|
30
30
|
status,
|
31
|
-
metadata: {
|
31
|
+
metadata: {
|
32
|
+
unstable_annotations: [],
|
33
|
+
unstable_data: [],
|
34
|
+
steps: [],
|
35
|
+
custom: {}
|
36
|
+
}
|
32
37
|
};
|
33
38
|
case "user":
|
34
39
|
return {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/runtimes/edge/converters/fromCoreMessage.ts"],"sourcesContent":["import { generateId } from \"../../../internal\";\nimport {\n ThreadMessage,\n CoreMessage,\n ToolCallContentPart,\n MessageStatus,\n CompleteAttachment,\n} from \"../../../types\";\n\nexport const fromCoreMessages = (\n message: readonly CoreMessage[],\n): ThreadMessage[] => {\n return message.map((message) => fromCoreMessage(message));\n};\n\nexport const fromCoreMessage = (\n message: CoreMessage,\n {\n id = generateId(),\n status = { type: \"complete\", reason: \"unknown\" } as MessageStatus,\n attachments = [] as readonly CompleteAttachment[],\n } = {},\n): ThreadMessage => {\n const commonProps = {\n id,\n createdAt: new Date(),\n };\n\n const role = message.role;\n switch (role) {\n case \"assistant\":\n return {\n ...commonProps,\n role,\n content: message.content.map((part) => {\n if (part.type === \"tool-call\") {\n return {\n ...part,\n argsText: JSON.stringify(part.args),\n } satisfies ToolCallContentPart;\n }\n return part;\n }),\n status,\n\n metadata: { unstable_data: []
|
1
|
+
{"version":3,"sources":["../../../../src/runtimes/edge/converters/fromCoreMessage.ts"],"sourcesContent":["import { generateId } from \"../../../internal\";\nimport {\n ThreadMessage,\n CoreMessage,\n ToolCallContentPart,\n MessageStatus,\n CompleteAttachment,\n} from \"../../../types\";\n\nexport const fromCoreMessages = (\n message: readonly CoreMessage[],\n): ThreadMessage[] => {\n return message.map((message) => fromCoreMessage(message));\n};\n\nexport const fromCoreMessage = (\n message: CoreMessage,\n {\n id = generateId(),\n status = { type: \"complete\", reason: \"unknown\" } as MessageStatus,\n attachments = [] as readonly CompleteAttachment[],\n } = {},\n): ThreadMessage => {\n const commonProps = {\n id,\n createdAt: new Date(),\n };\n\n const role = message.role;\n switch (role) {\n case \"assistant\":\n return {\n ...commonProps,\n role,\n content: message.content.map((part) => {\n if (part.type === \"tool-call\") {\n return {\n ...part,\n argsText: JSON.stringify(part.args),\n } satisfies ToolCallContentPart;\n }\n return part;\n }),\n status,\n\n metadata: {\n unstable_annotations: [],\n unstable_data: [],\n steps: [],\n custom: {},\n },\n } satisfies ThreadMessage;\n\n case \"user\":\n return {\n ...commonProps,\n role,\n content: message.content,\n attachments,\n metadata: { custom: {} },\n } satisfies ThreadMessage;\n\n case \"system\":\n return {\n ...commonProps,\n role,\n content: message.content,\n metadata: { custom: {} },\n } satisfies ThreadMessage;\n\n default: {\n const unsupportedRole: never = role;\n throw new Error(`Unknown message role: ${unsupportedRole}`);\n }\n }\n};\n"],"mappings":";AAAA,SAAS,kBAAkB;AASpB,IAAM,mBAAmB,CAC9B,YACoB;AACpB,SAAO,QAAQ,IAAI,CAACA,aAAY,gBAAgBA,QAAO,CAAC;AAC1D;AAEO,IAAM,kBAAkB,CAC7B,SACA;AAAA,EACE,KAAK,WAAW;AAAA,EAChB,SAAS,EAAE,MAAM,YAAY,QAAQ,UAAU;AAAA,EAC/C,cAAc,CAAC;AACjB,IAAI,CAAC,MACa;AAClB,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,WAAW,oBAAI,KAAK;AAAA,EACtB;AAEA,QAAM,OAAO,QAAQ;AACrB,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA,SAAS,QAAQ,QAAQ,IAAI,CAAC,SAAS;AACrC,cAAI,KAAK,SAAS,aAAa;AAC7B,mBAAO;AAAA,cACL,GAAG;AAAA,cACH,UAAU,KAAK,UAAU,KAAK,IAAI;AAAA,YACpC;AAAA,UACF;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACR,sBAAsB,CAAC;AAAA,UACvB,eAAe,CAAC;AAAA,UAChB,OAAO,CAAC;AAAA,UACR,QAAQ,CAAC;AAAA,QACX;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA,SAAS,QAAQ;AAAA,QACjB;AAAA,QACA,UAAU,EAAE,QAAQ,CAAC,EAAE;AAAA,MACzB;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA,SAAS,QAAQ;AAAA,QACjB,UAAU,EAAE,QAAQ,CAAC,EAAE;AAAA,MACzB;AAAA,IAEF,SAAS;AACP,YAAM,kBAAyB;AAC/B,YAAM,IAAI,MAAM,yBAAyB,eAAe,EAAE;AAAA,IAC5D;AAAA,EACF;AACF;","names":["message"]}
|
@@ -7,7 +7,7 @@ import { z } from "zod";
|
|
7
7
|
type FinishResult = {
|
8
8
|
messages: CoreMessage[];
|
9
9
|
metadata: {
|
10
|
-
steps: ThreadStep[];
|
10
|
+
steps: readonly ThreadStep[];
|
11
11
|
};
|
12
12
|
};
|
13
13
|
type LanguageModelCreator = (config: LanguageModelConfig) => Promise<LanguageModelV1> | LanguageModelV1;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"createEdgeRuntimeAPI.d.ts","sourceRoot":"","sources":["../../../src/runtimes/edge/createEdgeRuntimeAPI.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,yBAAyB,EAEzB,qBAAqB,EAEtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAG9E,OAAO,EAEL,oBAAoB,EACrB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAE3B,IAAI,EACL,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,KAAK,YAAY,GAAG;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE;QACR,KAAK,EAAE,UAAU,EAAE,CAAC;
|
1
|
+
{"version":3,"file":"createEdgeRuntimeAPI.d.ts","sourceRoot":"","sources":["../../../src/runtimes/edge/createEdgeRuntimeAPI.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,yBAAyB,EAEzB,qBAAqB,EAEtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAG9E,OAAO,EAEL,oBAAoB,EACrB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAE3B,IAAI,EACL,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,KAAK,YAAY,GAAG;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE;QACR,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;KAC9B,CAAC;CACH,CAAC;AAEF,KAAK,oBAAoB,GAAG,CAC1B,MAAM,EAAE,mBAAmB,KACxB,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AAEhD,MAAM,MAAM,2BAA2B,GAAG,2BAA2B,GAAG;IACtE,KAAK,EAAE,eAAe,GAAG,oBAAoB,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CAC3C,CAAC;AAUF,KAAK,2BAA2B,GAAG;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;IAC7D,OAAO,EAAE,2BAA2B,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,oBAAoB,wKAW9B,2BAA2B,kDAkG7B,CAAC;AAEF,MAAM,CAAC,OAAO,WAAW,sBAAsB,CAAC;IAC9C,YAAY,EAAE,2BAA2B,IAAI,OAAO,EAAE,CAAC;CACxD;AAED,eAAO,MAAM,sBAAsB,YACxB,sBAAsB,CAAC,OAAO,sBAaxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,YAAa,2BAA2B;oBACjD,OAAO;CAM7B,CAAC;AA+BH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,EAAE,WAAW,EAAE,GACtB,qBAAqB,CASvB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtimes/edge/createEdgeRuntimeAPI.ts"],"sourcesContent":["import {\n LanguageModelV1,\n LanguageModelV1ToolChoice,\n LanguageModelV1FunctionTool,\n LanguageModelV1Prompt,\n LanguageModelV1CallOptions,\n} from \"@ai-sdk/provider\";\nimport { CoreMessage, ThreadStep } from \"../../types/AssistantTypes\";\nimport { assistantEncoderStream } from \"./streams/assistantEncoderStream\";\nimport { EdgeRuntimeRequestOptionsSchema } from \"./EdgeRuntimeRequestOptions\";\nimport { toLanguageModelMessages } from \"./converters/toLanguageModelMessages\";\nimport { toLanguageModelTools } from \"./converters/toLanguageModelTools\";\nimport {\n toolResultStream,\n ToolResultStreamPart,\n} from \"./streams/toolResultStream\";\nimport { runResultStream } from \"./streams/runResultStream\";\nimport {\n LanguageModelConfig,\n LanguageModelV1CallSettings,\n LanguageModelV1CallSettingsSchema,\n Tool,\n} from \"../../model-context/ModelContextTypes\";\nimport { CoreChatModelRunResult } from \"../local/ChatModelAdapter\";\nimport { streamPartEncoderStream } from \"./streams/utils/streamPartEncoderStream\";\nimport { z } from \"zod\";\n\ntype FinishResult = {\n messages: CoreMessage[];\n metadata: {\n steps: ThreadStep[];\n };\n};\n\ntype LanguageModelCreator = (\n config: LanguageModelConfig,\n) => Promise<LanguageModelV1> | LanguageModelV1;\n\nexport type CreateEdgeRuntimeAPIOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1 | LanguageModelCreator;\n system?: string;\n tools?: Record<string, Tool<any, any>>;\n toolChoice?: LanguageModelV1ToolChoice;\n onFinish?: (result: FinishResult) => void;\n};\n\nconst voidStream = () => {\n return new WritableStream({\n abort(reason) {\n console.error(\"Server stream processing aborted:\", reason);\n },\n });\n};\n\ntype GetEdgeRuntimeStreamOptions = {\n abortSignal: AbortSignal;\n requestData: z.infer<typeof EdgeRuntimeRequestOptionsSchema>;\n options: CreateEdgeRuntimeAPIOptions;\n};\n\nexport const getEdgeRuntimeStream = async ({\n abortSignal,\n requestData: unsafeRequest,\n options: {\n model: modelOrCreator,\n system: serverSystem,\n tools: serverTools = {},\n toolChoice,\n onFinish,\n ...unsafeSettings\n },\n}: GetEdgeRuntimeStreamOptions) => {\n const settings = LanguageModelV1CallSettingsSchema.parse(unsafeSettings);\n const lmServerTools = toLanguageModelTools(serverTools);\n const hasServerTools = Object.values(serverTools).some((v) => !!v.execute);\n\n const {\n system: clientSystem,\n tools: clientTools = [],\n messages,\n apiKey,\n baseUrl,\n modelName,\n ...callSettings\n } = EdgeRuntimeRequestOptionsSchema.parse(unsafeRequest);\n\n const systemMessages = [];\n if (serverSystem) systemMessages.push(serverSystem);\n if (clientSystem) systemMessages.push(clientSystem);\n const system = systemMessages.join(\"\\n\\n\");\n\n for (const clientTool of clientTools) {\n if (serverTools?.[clientTool.name]) {\n throw new Error(\n `Tool ${clientTool.name} was defined in both the client and server tools. This is not allowed.`,\n );\n }\n }\n\n const model =\n typeof modelOrCreator === \"function\"\n ? await modelOrCreator({ apiKey, baseUrl, modelName })\n : modelOrCreator;\n\n let stream: ReadableStream<ToolResultStreamPart>;\n const streamResult = await streamMessage({\n ...(settings as Partial<StreamMessageOptions>),\n ...callSettings,\n\n model,\n abortSignal,\n\n ...(!!system ? { system } : undefined),\n messages: [...messages],\n tools: lmServerTools.concat(clientTools as LanguageModelV1FunctionTool[]),\n ...(toolChoice ? { toolChoice } : undefined),\n });\n stream = streamResult.stream;\n\n // add tool results if we have server tools\n const canExecuteTools = hasServerTools && toolChoice?.type !== \"none\";\n if (canExecuteTools) {\n stream = stream.pipeThrough(toolResultStream(serverTools, abortSignal));\n }\n\n if (canExecuteTools || onFinish) {\n // tee the stream to process server tools and onFinish asap\n const tees = stream.tee();\n stream = tees[0];\n let serverStream = tees[1];\n\n if (onFinish) {\n let lastChunk: CoreChatModelRunResult | undefined;\n serverStream = serverStream.pipeThrough(runResultStream()).pipeThrough(\n new TransformStream({\n transform(chunk) {\n lastChunk = chunk;\n },\n flush() {\n if (!lastChunk?.status || lastChunk.status.type === \"running\")\n return;\n\n const resultingMessages = [\n ...messages,\n {\n role: \"assistant\",\n content: lastChunk.content,\n } satisfies CoreMessage,\n ];\n onFinish({\n messages: resultingMessages,\n metadata: {\n // TODO\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n steps: lastChunk.metadata?.steps!,\n },\n });\n },\n }),\n );\n }\n\n // drain the server stream\n serverStream.pipeTo(voidStream()).catch((e) => {\n console.error(\"Server stream processing error:\", e);\n });\n }\n\n return stream;\n};\n\nexport declare namespace getEdgeRuntimeResponse {\n export type { GetEdgeRuntimeStreamOptions as Options };\n}\n\nexport const getEdgeRuntimeResponse = async (\n options: getEdgeRuntimeResponse.Options,\n) => {\n const stream = await getEdgeRuntimeStream(options);\n return new Response(\n stream\n .pipeThrough(assistantEncoderStream())\n .pipeThrough(streamPartEncoderStream()),\n {\n headers: {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n },\n },\n );\n};\n\nexport const createEdgeRuntimeAPI = (options: CreateEdgeRuntimeAPIOptions) => ({\n POST: async (request: Request) =>\n getEdgeRuntimeResponse({\n abortSignal: request.signal,\n requestData: await request.json(),\n options,\n }),\n});\n\ntype StreamMessageOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1;\n system?: string;\n messages: CoreMessage[];\n tools?: LanguageModelV1FunctionTool[];\n toolChoice?: LanguageModelV1ToolChoice;\n abortSignal: AbortSignal;\n};\n\nasync function streamMessage({\n model,\n system,\n messages,\n tools,\n toolChoice,\n ...options\n}: StreamMessageOptions) {\n return model.doStream({\n inputFormat: \"messages\",\n mode: {\n type: \"regular\",\n ...(tools ? { tools } : undefined),\n ...(toolChoice ? { toolChoice } : undefined),\n },\n prompt: convertToLanguageModelPrompt(system, messages),\n ...(options as Partial<LanguageModelV1CallOptions>),\n });\n}\n\nexport function convertToLanguageModelPrompt(\n system: string | undefined,\n messages: CoreMessage[],\n): LanguageModelV1Prompt {\n const languageModelMessages: LanguageModelV1Prompt = [];\n\n if (system != null) {\n languageModelMessages.push({ role: \"system\", content: system });\n }\n languageModelMessages.push(...toLanguageModelMessages(messages));\n\n return languageModelMessages;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,oCAAuC;AACvC,uCAAgD;AAChD,qCAAwC;AACxC,kCAAqC;AACrC,8BAGO;AACP,6BAAgC;AAChC,+BAKO;AAEP,qCAAwC;AAsBxC,IAAM,aAAa,MAAM;AACvB,SAAO,IAAI,eAAe;AAAA,IACxB,MAAM,QAAQ;AACZ,cAAQ,MAAM,qCAAqC,MAAM;AAAA,IAC3D;AAAA,EACF,CAAC;AACH;AAQO,IAAM,uBAAuB,OAAO;AAAA,EACzC;AAAA,EACA,aAAa;AAAA,EACb,SAAS;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO,cAAc,CAAC;AAAA,IACtB;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL;AACF,MAAmC;AACjC,QAAM,WAAW,2DAAkC,MAAM,cAAc;AACvE,QAAM,oBAAgB,kDAAqB,WAAW;AACtD,QAAM,iBAAiB,OAAO,OAAO,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO;AAEzE,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,OAAO,cAAc,CAAC;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI,iEAAgC,MAAM,aAAa;AAEvD,QAAM,iBAAiB,CAAC;AACxB,MAAI,aAAc,gBAAe,KAAK,YAAY;AAClD,MAAI,aAAc,gBAAe,KAAK,YAAY;AAClD,QAAM,SAAS,eAAe,KAAK,MAAM;AAEzC,aAAW,cAAc,aAAa;AACpC,QAAI,cAAc,WAAW,IAAI,GAAG;AAClC,YAAM,IAAI;AAAA,QACR,QAAQ,WAAW,IAAI;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QACJ,OAAO,mBAAmB,aACtB,MAAM,eAAe,EAAE,QAAQ,SAAS,UAAU,CAAC,IACnD;AAEN,MAAI;AACJ,QAAM,eAAe,MAAM,cAAc;AAAA,IACvC,GAAI;AAAA,IACJ,GAAG;AAAA,IAEH;AAAA,IACA;AAAA,IAEA,GAAI,CAAC,CAAC,SAAS,EAAE,OAAO,IAAI;AAAA,IAC5B,UAAU,CAAC,GAAG,QAAQ;AAAA,IACtB,OAAO,cAAc,OAAO,WAA4C;AAAA,IACxE,GAAI,aAAa,EAAE,WAAW,IAAI;AAAA,EACpC,CAAC;AACD,WAAS,aAAa;AAGtB,QAAM,kBAAkB,kBAAkB,YAAY,SAAS;AAC/D,MAAI,iBAAiB;AACnB,aAAS,OAAO,gBAAY,0CAAiB,aAAa,WAAW,CAAC;AAAA,EACxE;AAEA,MAAI,mBAAmB,UAAU;AAE/B,UAAM,OAAO,OAAO,IAAI;AACxB,aAAS,KAAK,CAAC;AACf,QAAI,eAAe,KAAK,CAAC;AAEzB,QAAI,UAAU;AACZ,UAAI;AACJ,qBAAe,aAAa,gBAAY,wCAAgB,CAAC,EAAE;AAAA,QACzD,IAAI,gBAAgB;AAAA,UAClB,UAAU,OAAO;AACf,wBAAY;AAAA,UACd;AAAA,UACA,QAAQ;AACN,gBAAI,CAAC,WAAW,UAAU,UAAU,OAAO,SAAS;AAClD;AAEF,kBAAM,oBAAoB;AAAA,cACxB,GAAG;AAAA,cACH;AAAA,gBACE,MAAM;AAAA,gBACN,SAAS,UAAU;AAAA,cACrB;AAAA,YACF;AACA,qBAAS;AAAA,cACP,UAAU;AAAA,cACV,UAAU;AAAA;AAAA;AAAA,gBAGR,OAAO,UAAU,UAAU;AAAA,cAC7B;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAGA,iBAAa,OAAO,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM;AAC7C,cAAQ,MAAM,mCAAmC,CAAC;AAAA,IACpD,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAMO,IAAM,yBAAyB,OACpC,YACG;AACH,QAAM,SAAS,MAAM,qBAAqB,OAAO;AACjD,SAAO,IAAI;AAAA,IACT,OACG,gBAAY,sDAAuB,CAAC,EACpC,gBAAY,wDAAwB,CAAC;AAAA,IACxC;AAAA,MACE,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,uBAAuB,CAAC,aAA0C;AAAA,EAC7E,MAAM,OAAO,YACX,uBAAuB;AAAA,IACrB,aAAa,QAAQ;AAAA,IACrB,aAAa,MAAM,QAAQ,KAAK;AAAA,IAChC;AAAA,EACF,CAAC;AACL;AAWA,eAAe,cAAc;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAyB;AACvB,SAAO,MAAM,SAAS;AAAA,IACpB,aAAa;AAAA,IACb,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,GAAI,QAAQ,EAAE,MAAM,IAAI;AAAA,MACxB,GAAI,aAAa,EAAE,WAAW,IAAI;AAAA,IACpC;AAAA,IACA,QAAQ,6BAA6B,QAAQ,QAAQ;AAAA,IACrD,GAAI;AAAA,EACN,CAAC;AACH;AAEO,SAAS,6BACd,QACA,UACuB;AACvB,QAAM,wBAA+C,CAAC;AAEtD,MAAI,UAAU,MAAM;AAClB,0BAAsB,KAAK,EAAE,MAAM,UAAU,SAAS,OAAO,CAAC;AAAA,EAChE;AACA,wBAAsB,KAAK,OAAG,wDAAwB,QAAQ,CAAC;AAE/D,SAAO;AACT;","names":[]}
|
1
|
+
{"version":3,"sources":["../../../src/runtimes/edge/createEdgeRuntimeAPI.ts"],"sourcesContent":["import {\n LanguageModelV1,\n LanguageModelV1ToolChoice,\n LanguageModelV1FunctionTool,\n LanguageModelV1Prompt,\n LanguageModelV1CallOptions,\n} from \"@ai-sdk/provider\";\nimport { CoreMessage, ThreadStep } from \"../../types/AssistantTypes\";\nimport { assistantEncoderStream } from \"./streams/assistantEncoderStream\";\nimport { EdgeRuntimeRequestOptionsSchema } from \"./EdgeRuntimeRequestOptions\";\nimport { toLanguageModelMessages } from \"./converters/toLanguageModelMessages\";\nimport { toLanguageModelTools } from \"./converters/toLanguageModelTools\";\nimport {\n toolResultStream,\n ToolResultStreamPart,\n} from \"./streams/toolResultStream\";\nimport { runResultStream } from \"./streams/runResultStream\";\nimport {\n LanguageModelConfig,\n LanguageModelV1CallSettings,\n LanguageModelV1CallSettingsSchema,\n Tool,\n} from \"../../model-context/ModelContextTypes\";\nimport { CoreChatModelRunResult } from \"../local/ChatModelAdapter\";\nimport { streamPartEncoderStream } from \"./streams/utils/streamPartEncoderStream\";\nimport { z } from \"zod\";\n\ntype FinishResult = {\n messages: CoreMessage[];\n metadata: {\n steps: readonly ThreadStep[];\n };\n};\n\ntype LanguageModelCreator = (\n config: LanguageModelConfig,\n) => Promise<LanguageModelV1> | LanguageModelV1;\n\nexport type CreateEdgeRuntimeAPIOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1 | LanguageModelCreator;\n system?: string;\n tools?: Record<string, Tool<any, any>>;\n toolChoice?: LanguageModelV1ToolChoice;\n onFinish?: (result: FinishResult) => void;\n};\n\nconst voidStream = () => {\n return new WritableStream({\n abort(reason) {\n console.error(\"Server stream processing aborted:\", reason);\n },\n });\n};\n\ntype GetEdgeRuntimeStreamOptions = {\n abortSignal: AbortSignal;\n requestData: z.infer<typeof EdgeRuntimeRequestOptionsSchema>;\n options: CreateEdgeRuntimeAPIOptions;\n};\n\nexport const getEdgeRuntimeStream = async ({\n abortSignal,\n requestData: unsafeRequest,\n options: {\n model: modelOrCreator,\n system: serverSystem,\n tools: serverTools = {},\n toolChoice,\n onFinish,\n ...unsafeSettings\n },\n}: GetEdgeRuntimeStreamOptions) => {\n const settings = LanguageModelV1CallSettingsSchema.parse(unsafeSettings);\n const lmServerTools = toLanguageModelTools(serverTools);\n const hasServerTools = Object.values(serverTools).some((v) => !!v.execute);\n\n const {\n system: clientSystem,\n tools: clientTools = [],\n messages,\n apiKey,\n baseUrl,\n modelName,\n ...callSettings\n } = EdgeRuntimeRequestOptionsSchema.parse(unsafeRequest);\n\n const systemMessages = [];\n if (serverSystem) systemMessages.push(serverSystem);\n if (clientSystem) systemMessages.push(clientSystem);\n const system = systemMessages.join(\"\\n\\n\");\n\n for (const clientTool of clientTools) {\n if (serverTools?.[clientTool.name]) {\n throw new Error(\n `Tool ${clientTool.name} was defined in both the client and server tools. This is not allowed.`,\n );\n }\n }\n\n const model =\n typeof modelOrCreator === \"function\"\n ? await modelOrCreator({ apiKey, baseUrl, modelName })\n : modelOrCreator;\n\n let stream: ReadableStream<ToolResultStreamPart>;\n const streamResult = await streamMessage({\n ...(settings as Partial<StreamMessageOptions>),\n ...callSettings,\n\n model,\n abortSignal,\n\n ...(!!system ? { system } : undefined),\n messages: [...messages],\n tools: lmServerTools.concat(clientTools as LanguageModelV1FunctionTool[]),\n ...(toolChoice ? { toolChoice } : undefined),\n });\n stream = streamResult.stream;\n\n // add tool results if we have server tools\n const canExecuteTools = hasServerTools && toolChoice?.type !== \"none\";\n if (canExecuteTools) {\n stream = stream.pipeThrough(toolResultStream(serverTools, abortSignal));\n }\n\n if (canExecuteTools || onFinish) {\n // tee the stream to process server tools and onFinish asap\n const tees = stream.tee();\n stream = tees[0];\n let serverStream = tees[1];\n\n if (onFinish) {\n let lastChunk: CoreChatModelRunResult | undefined;\n serverStream = serverStream.pipeThrough(runResultStream()).pipeThrough(\n new TransformStream({\n transform(chunk) {\n lastChunk = chunk;\n },\n flush() {\n if (!lastChunk?.status || lastChunk.status.type === \"running\")\n return;\n\n const resultingMessages = [\n ...messages,\n {\n role: \"assistant\",\n content: lastChunk.content,\n } satisfies CoreMessage,\n ];\n onFinish({\n messages: resultingMessages,\n metadata: {\n // TODO\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n steps: lastChunk.metadata?.steps!,\n },\n });\n },\n }),\n );\n }\n\n // drain the server stream\n serverStream.pipeTo(voidStream()).catch((e) => {\n console.error(\"Server stream processing error:\", e);\n });\n }\n\n return stream;\n};\n\nexport declare namespace getEdgeRuntimeResponse {\n export type { GetEdgeRuntimeStreamOptions as Options };\n}\n\nexport const getEdgeRuntimeResponse = async (\n options: getEdgeRuntimeResponse.Options,\n) => {\n const stream = await getEdgeRuntimeStream(options);\n return new Response(\n stream\n .pipeThrough(assistantEncoderStream())\n .pipeThrough(streamPartEncoderStream()),\n {\n headers: {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n },\n },\n );\n};\n\nexport const createEdgeRuntimeAPI = (options: CreateEdgeRuntimeAPIOptions) => ({\n POST: async (request: Request) =>\n getEdgeRuntimeResponse({\n abortSignal: request.signal,\n requestData: await request.json(),\n options,\n }),\n});\n\ntype StreamMessageOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1;\n system?: string;\n messages: CoreMessage[];\n tools?: LanguageModelV1FunctionTool[];\n toolChoice?: LanguageModelV1ToolChoice;\n abortSignal: AbortSignal;\n};\n\nasync function streamMessage({\n model,\n system,\n messages,\n tools,\n toolChoice,\n ...options\n}: StreamMessageOptions) {\n return model.doStream({\n inputFormat: \"messages\",\n mode: {\n type: \"regular\",\n ...(tools ? { tools } : undefined),\n ...(toolChoice ? { toolChoice } : undefined),\n },\n prompt: convertToLanguageModelPrompt(system, messages),\n ...(options as Partial<LanguageModelV1CallOptions>),\n });\n}\n\nexport function convertToLanguageModelPrompt(\n system: string | undefined,\n messages: CoreMessage[],\n): LanguageModelV1Prompt {\n const languageModelMessages: LanguageModelV1Prompt = [];\n\n if (system != null) {\n languageModelMessages.push({ role: \"system\", content: system });\n }\n languageModelMessages.push(...toLanguageModelMessages(messages));\n\n return languageModelMessages;\n}\n"],"mappings":"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","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtimes/edge/createEdgeRuntimeAPI.ts"],"sourcesContent":["import {\n LanguageModelV1,\n LanguageModelV1ToolChoice,\n LanguageModelV1FunctionTool,\n LanguageModelV1Prompt,\n LanguageModelV1CallOptions,\n} from \"@ai-sdk/provider\";\nimport { CoreMessage, ThreadStep } from \"../../types/AssistantTypes\";\nimport { assistantEncoderStream } from \"./streams/assistantEncoderStream\";\nimport { EdgeRuntimeRequestOptionsSchema } from \"./EdgeRuntimeRequestOptions\";\nimport { toLanguageModelMessages } from \"./converters/toLanguageModelMessages\";\nimport { toLanguageModelTools } from \"./converters/toLanguageModelTools\";\nimport {\n toolResultStream,\n ToolResultStreamPart,\n} from \"./streams/toolResultStream\";\nimport { runResultStream } from \"./streams/runResultStream\";\nimport {\n LanguageModelConfig,\n LanguageModelV1CallSettings,\n LanguageModelV1CallSettingsSchema,\n Tool,\n} from \"../../model-context/ModelContextTypes\";\nimport { CoreChatModelRunResult } from \"../local/ChatModelAdapter\";\nimport { streamPartEncoderStream } from \"./streams/utils/streamPartEncoderStream\";\nimport { z } from \"zod\";\n\ntype FinishResult = {\n messages: CoreMessage[];\n metadata: {\n steps: ThreadStep[];\n };\n};\n\ntype LanguageModelCreator = (\n config: LanguageModelConfig,\n) => Promise<LanguageModelV1> | LanguageModelV1;\n\nexport type CreateEdgeRuntimeAPIOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1 | LanguageModelCreator;\n system?: string;\n tools?: Record<string, Tool<any, any>>;\n toolChoice?: LanguageModelV1ToolChoice;\n onFinish?: (result: FinishResult) => void;\n};\n\nconst voidStream = () => {\n return new WritableStream({\n abort(reason) {\n console.error(\"Server stream processing aborted:\", reason);\n },\n });\n};\n\ntype GetEdgeRuntimeStreamOptions = {\n abortSignal: AbortSignal;\n requestData: z.infer<typeof EdgeRuntimeRequestOptionsSchema>;\n options: CreateEdgeRuntimeAPIOptions;\n};\n\nexport const getEdgeRuntimeStream = async ({\n abortSignal,\n requestData: unsafeRequest,\n options: {\n model: modelOrCreator,\n system: serverSystem,\n tools: serverTools = {},\n toolChoice,\n onFinish,\n ...unsafeSettings\n },\n}: GetEdgeRuntimeStreamOptions) => {\n const settings = LanguageModelV1CallSettingsSchema.parse(unsafeSettings);\n const lmServerTools = toLanguageModelTools(serverTools);\n const hasServerTools = Object.values(serverTools).some((v) => !!v.execute);\n\n const {\n system: clientSystem,\n tools: clientTools = [],\n messages,\n apiKey,\n baseUrl,\n modelName,\n ...callSettings\n } = EdgeRuntimeRequestOptionsSchema.parse(unsafeRequest);\n\n const systemMessages = [];\n if (serverSystem) systemMessages.push(serverSystem);\n if (clientSystem) systemMessages.push(clientSystem);\n const system = systemMessages.join(\"\\n\\n\");\n\n for (const clientTool of clientTools) {\n if (serverTools?.[clientTool.name]) {\n throw new Error(\n `Tool ${clientTool.name} was defined in both the client and server tools. This is not allowed.`,\n );\n }\n }\n\n const model =\n typeof modelOrCreator === \"function\"\n ? await modelOrCreator({ apiKey, baseUrl, modelName })\n : modelOrCreator;\n\n let stream: ReadableStream<ToolResultStreamPart>;\n const streamResult = await streamMessage({\n ...(settings as Partial<StreamMessageOptions>),\n ...callSettings,\n\n model,\n abortSignal,\n\n ...(!!system ? { system } : undefined),\n messages: [...messages],\n tools: lmServerTools.concat(clientTools as LanguageModelV1FunctionTool[]),\n ...(toolChoice ? { toolChoice } : undefined),\n });\n stream = streamResult.stream;\n\n // add tool results if we have server tools\n const canExecuteTools = hasServerTools && toolChoice?.type !== \"none\";\n if (canExecuteTools) {\n stream = stream.pipeThrough(toolResultStream(serverTools, abortSignal));\n }\n\n if (canExecuteTools || onFinish) {\n // tee the stream to process server tools and onFinish asap\n const tees = stream.tee();\n stream = tees[0];\n let serverStream = tees[1];\n\n if (onFinish) {\n let lastChunk: CoreChatModelRunResult | undefined;\n serverStream = serverStream.pipeThrough(runResultStream()).pipeThrough(\n new TransformStream({\n transform(chunk) {\n lastChunk = chunk;\n },\n flush() {\n if (!lastChunk?.status || lastChunk.status.type === \"running\")\n return;\n\n const resultingMessages = [\n ...messages,\n {\n role: \"assistant\",\n content: lastChunk.content,\n } satisfies CoreMessage,\n ];\n onFinish({\n messages: resultingMessages,\n metadata: {\n // TODO\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n steps: lastChunk.metadata?.steps!,\n },\n });\n },\n }),\n );\n }\n\n // drain the server stream\n serverStream.pipeTo(voidStream()).catch((e) => {\n console.error(\"Server stream processing error:\", e);\n });\n }\n\n return stream;\n};\n\nexport declare namespace getEdgeRuntimeResponse {\n export type { GetEdgeRuntimeStreamOptions as Options };\n}\n\nexport const getEdgeRuntimeResponse = async (\n options: getEdgeRuntimeResponse.Options,\n) => {\n const stream = await getEdgeRuntimeStream(options);\n return new Response(\n stream\n .pipeThrough(assistantEncoderStream())\n .pipeThrough(streamPartEncoderStream()),\n {\n headers: {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n },\n },\n );\n};\n\nexport const createEdgeRuntimeAPI = (options: CreateEdgeRuntimeAPIOptions) => ({\n POST: async (request: Request) =>\n getEdgeRuntimeResponse({\n abortSignal: request.signal,\n requestData: await request.json(),\n options,\n }),\n});\n\ntype StreamMessageOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1;\n system?: string;\n messages: CoreMessage[];\n tools?: LanguageModelV1FunctionTool[];\n toolChoice?: LanguageModelV1ToolChoice;\n abortSignal: AbortSignal;\n};\n\nasync function streamMessage({\n model,\n system,\n messages,\n tools,\n toolChoice,\n ...options\n}: StreamMessageOptions) {\n return model.doStream({\n inputFormat: \"messages\",\n mode: {\n type: \"regular\",\n ...(tools ? { tools } : undefined),\n ...(toolChoice ? { toolChoice } : undefined),\n },\n prompt: convertToLanguageModelPrompt(system, messages),\n ...(options as Partial<LanguageModelV1CallOptions>),\n });\n}\n\nexport function convertToLanguageModelPrompt(\n system: string | undefined,\n messages: CoreMessage[],\n): LanguageModelV1Prompt {\n const languageModelMessages: LanguageModelV1Prompt = [];\n\n if (system != null) {\n languageModelMessages.push({ role: \"system\", content: system });\n }\n languageModelMessages.push(...toLanguageModelMessages(messages));\n\n return languageModelMessages;\n}\n"],"mappings":"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","names":[]}
|
1
|
+
{"version":3,"sources":["../../../src/runtimes/edge/createEdgeRuntimeAPI.ts"],"sourcesContent":["import {\n LanguageModelV1,\n LanguageModelV1ToolChoice,\n LanguageModelV1FunctionTool,\n LanguageModelV1Prompt,\n LanguageModelV1CallOptions,\n} from \"@ai-sdk/provider\";\nimport { CoreMessage, ThreadStep } from \"../../types/AssistantTypes\";\nimport { assistantEncoderStream } from \"./streams/assistantEncoderStream\";\nimport { EdgeRuntimeRequestOptionsSchema } from \"./EdgeRuntimeRequestOptions\";\nimport { toLanguageModelMessages } from \"./converters/toLanguageModelMessages\";\nimport { toLanguageModelTools } from \"./converters/toLanguageModelTools\";\nimport {\n toolResultStream,\n ToolResultStreamPart,\n} from \"./streams/toolResultStream\";\nimport { runResultStream } from \"./streams/runResultStream\";\nimport {\n LanguageModelConfig,\n LanguageModelV1CallSettings,\n LanguageModelV1CallSettingsSchema,\n Tool,\n} from \"../../model-context/ModelContextTypes\";\nimport { CoreChatModelRunResult } from \"../local/ChatModelAdapter\";\nimport { streamPartEncoderStream } from \"./streams/utils/streamPartEncoderStream\";\nimport { z } from \"zod\";\n\ntype FinishResult = {\n messages: CoreMessage[];\n metadata: {\n steps: readonly ThreadStep[];\n };\n};\n\ntype LanguageModelCreator = (\n config: LanguageModelConfig,\n) => Promise<LanguageModelV1> | LanguageModelV1;\n\nexport type CreateEdgeRuntimeAPIOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1 | LanguageModelCreator;\n system?: string;\n tools?: Record<string, Tool<any, any>>;\n toolChoice?: LanguageModelV1ToolChoice;\n onFinish?: (result: FinishResult) => void;\n};\n\nconst voidStream = () => {\n return new WritableStream({\n abort(reason) {\n console.error(\"Server stream processing aborted:\", reason);\n },\n });\n};\n\ntype GetEdgeRuntimeStreamOptions = {\n abortSignal: AbortSignal;\n requestData: z.infer<typeof EdgeRuntimeRequestOptionsSchema>;\n options: CreateEdgeRuntimeAPIOptions;\n};\n\nexport const getEdgeRuntimeStream = async ({\n abortSignal,\n requestData: unsafeRequest,\n options: {\n model: modelOrCreator,\n system: serverSystem,\n tools: serverTools = {},\n toolChoice,\n onFinish,\n ...unsafeSettings\n },\n}: GetEdgeRuntimeStreamOptions) => {\n const settings = LanguageModelV1CallSettingsSchema.parse(unsafeSettings);\n const lmServerTools = toLanguageModelTools(serverTools);\n const hasServerTools = Object.values(serverTools).some((v) => !!v.execute);\n\n const {\n system: clientSystem,\n tools: clientTools = [],\n messages,\n apiKey,\n baseUrl,\n modelName,\n ...callSettings\n } = EdgeRuntimeRequestOptionsSchema.parse(unsafeRequest);\n\n const systemMessages = [];\n if (serverSystem) systemMessages.push(serverSystem);\n if (clientSystem) systemMessages.push(clientSystem);\n const system = systemMessages.join(\"\\n\\n\");\n\n for (const clientTool of clientTools) {\n if (serverTools?.[clientTool.name]) {\n throw new Error(\n `Tool ${clientTool.name} was defined in both the client and server tools. This is not allowed.`,\n );\n }\n }\n\n const model =\n typeof modelOrCreator === \"function\"\n ? await modelOrCreator({ apiKey, baseUrl, modelName })\n : modelOrCreator;\n\n let stream: ReadableStream<ToolResultStreamPart>;\n const streamResult = await streamMessage({\n ...(settings as Partial<StreamMessageOptions>),\n ...callSettings,\n\n model,\n abortSignal,\n\n ...(!!system ? { system } : undefined),\n messages: [...messages],\n tools: lmServerTools.concat(clientTools as LanguageModelV1FunctionTool[]),\n ...(toolChoice ? { toolChoice } : undefined),\n });\n stream = streamResult.stream;\n\n // add tool results if we have server tools\n const canExecuteTools = hasServerTools && toolChoice?.type !== \"none\";\n if (canExecuteTools) {\n stream = stream.pipeThrough(toolResultStream(serverTools, abortSignal));\n }\n\n if (canExecuteTools || onFinish) {\n // tee the stream to process server tools and onFinish asap\n const tees = stream.tee();\n stream = tees[0];\n let serverStream = tees[1];\n\n if (onFinish) {\n let lastChunk: CoreChatModelRunResult | undefined;\n serverStream = serverStream.pipeThrough(runResultStream()).pipeThrough(\n new TransformStream({\n transform(chunk) {\n lastChunk = chunk;\n },\n flush() {\n if (!lastChunk?.status || lastChunk.status.type === \"running\")\n return;\n\n const resultingMessages = [\n ...messages,\n {\n role: \"assistant\",\n content: lastChunk.content,\n } satisfies CoreMessage,\n ];\n onFinish({\n messages: resultingMessages,\n metadata: {\n // TODO\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n steps: lastChunk.metadata?.steps!,\n },\n });\n },\n }),\n );\n }\n\n // drain the server stream\n serverStream.pipeTo(voidStream()).catch((e) => {\n console.error(\"Server stream processing error:\", e);\n });\n }\n\n return stream;\n};\n\nexport declare namespace getEdgeRuntimeResponse {\n export type { GetEdgeRuntimeStreamOptions as Options };\n}\n\nexport const getEdgeRuntimeResponse = async (\n options: getEdgeRuntimeResponse.Options,\n) => {\n const stream = await getEdgeRuntimeStream(options);\n return new Response(\n stream\n .pipeThrough(assistantEncoderStream())\n .pipeThrough(streamPartEncoderStream()),\n {\n headers: {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n },\n },\n );\n};\n\nexport const createEdgeRuntimeAPI = (options: CreateEdgeRuntimeAPIOptions) => ({\n POST: async (request: Request) =>\n getEdgeRuntimeResponse({\n abortSignal: request.signal,\n requestData: await request.json(),\n options,\n }),\n});\n\ntype StreamMessageOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1;\n system?: string;\n messages: CoreMessage[];\n tools?: LanguageModelV1FunctionTool[];\n toolChoice?: LanguageModelV1ToolChoice;\n abortSignal: AbortSignal;\n};\n\nasync function streamMessage({\n model,\n system,\n messages,\n tools,\n toolChoice,\n ...options\n}: StreamMessageOptions) {\n return model.doStream({\n inputFormat: \"messages\",\n mode: {\n type: \"regular\",\n ...(tools ? { tools } : undefined),\n ...(toolChoice ? { toolChoice } : undefined),\n },\n prompt: convertToLanguageModelPrompt(system, messages),\n ...(options as Partial<LanguageModelV1CallOptions>),\n });\n}\n\nexport function convertToLanguageModelPrompt(\n system: string | undefined,\n messages: CoreMessage[],\n): LanguageModelV1Prompt {\n const languageModelMessages: LanguageModelV1Prompt = [];\n\n if (system != null) {\n languageModelMessages.push({ role: \"system\", content: system });\n }\n languageModelMessages.push(...toLanguageModelMessages(messages));\n\n return languageModelMessages;\n}\n"],"mappings":"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","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"assistantDecoderStream.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/edge/streams/assistantDecoderStream.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAErB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,wBAAgB,sBAAsB,
|
1
|
+
{"version":3,"file":"assistantDecoderStream.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/edge/streams/assistantDecoderStream.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAErB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,wBAAgB,sBAAsB,4EA2JrC"}
|
@@ -130,6 +130,12 @@ function assistantDecoderStream() {
|
|
130
130
|
});
|
131
131
|
break;
|
132
132
|
}
|
133
|
+
case import_AssistantStreamChunkType.AssistantStreamChunkType.Annotation:
|
134
|
+
controller.enqueue({
|
135
|
+
type: "annotations",
|
136
|
+
annotations: value
|
137
|
+
});
|
138
|
+
break;
|
133
139
|
case import_AssistantStreamChunkType.AssistantStreamChunkType.Data:
|
134
140
|
controller.enqueue({
|
135
141
|
type: "data",
|
@@ -139,7 +145,6 @@ function assistantDecoderStream() {
|
|
139
145
|
// TODO
|
140
146
|
case import_AssistantStreamChunkType.AssistantStreamChunkType.ReasoningDelta:
|
141
147
|
case import_AssistantStreamChunkType.AssistantStreamChunkType.StartStep:
|
142
|
-
case import_AssistantStreamChunkType.AssistantStreamChunkType.Annotation:
|
143
148
|
break;
|
144
149
|
default: {
|
145
150
|
const unhandledType = type;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/runtimes/edge/streams/assistantDecoderStream.ts"],"sourcesContent":["import {\n AssistantStreamChunk,\n AssistantStreamChunkType,\n} from \"./AssistantStreamChunkType\";\nimport { StreamPart } from \"./utils/StreamPart\";\nimport { ToolResultStreamPart } from \"./toolResultStream\";\n\nexport function assistantDecoderStream() {\n const toolCallNames = new Map<string, string>();\n let currentToolCall:\n | { id: string; name: string; argsText: string }\n | undefined;\n\n const endCurrentToolCall = (\n controller: TransformStreamDefaultController<ToolResultStreamPart>,\n ) => {\n if (!currentToolCall) return;\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: currentToolCall.id,\n toolName: currentToolCall.name,\n args: currentToolCall.argsText,\n });\n currentToolCall = undefined;\n };\n\n return new TransformStream<\n StreamPart<AssistantStreamChunk>,\n ToolResultStreamPart\n >({\n transform({ type, value }, controller) {\n if (\n type !== AssistantStreamChunkType.ToolCallDelta &&\n type !== AssistantStreamChunkType.Error\n ) {\n endCurrentToolCall(controller);\n }\n\n switch (type) {\n case AssistantStreamChunkType.TextDelta: {\n controller.enqueue({\n type: \"text-delta\",\n textDelta: value,\n });\n break;\n }\n case AssistantStreamChunkType.ToolCallBegin: {\n const { toolCallId: id, toolName: name } = value;\n toolCallNames.set(id, name);\n\n currentToolCall = { id, name, argsText: \"\" };\n\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId: id,\n toolName: name,\n argsTextDelta: \"\",\n });\n break;\n }\n case AssistantStreamChunkType.ToolCallDelta: {\n const { toolCallId, argsTextDelta } = value;\n\n const toolName = toolCallNames.get(toolCallId)!;\n if (currentToolCall?.id === toolCallId) {\n currentToolCall.argsText += argsTextDelta;\n }\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId,\n toolName,\n argsTextDelta: argsTextDelta,\n });\n break;\n }\n case AssistantStreamChunkType.ToolCallResult: {\n controller.enqueue({\n type: \"tool-result\",\n toolCallType: \"function\",\n toolCallId: value.toolCallId,\n toolName: toolCallNames.get(value.toolCallId)!,\n result: value.result,\n });\n break;\n }\n case AssistantStreamChunkType.FinishMessage: {\n controller.enqueue({\n type: \"finish\",\n ...value,\n });\n break;\n }\n case AssistantStreamChunkType.Error: {\n controller.enqueue({\n type: \"error\",\n error: value,\n });\n break;\n }\n\n case AssistantStreamChunkType.ToolCall: {\n const { toolCallId, toolName, args } = value;\n toolCallNames.set(toolCallId, toolName);\n\n const argsText = JSON.stringify(args);\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId,\n toolName,\n argsTextDelta: argsText,\n });\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: toolCallId,\n toolName: toolName,\n args: argsText,\n });\n break;\n }\n\n case AssistantStreamChunkType.FinishStep: {\n controller.enqueue({\n type: \"step-finish\",\n ...value,\n });\n break;\n }\n\n case AssistantStreamChunkType.Data:\n controller.enqueue({\n type: \"data\",\n data: value,\n });\n break;\n\n // TODO\n case AssistantStreamChunkType.ReasoningDelta:\n case AssistantStreamChunkType.StartStep:\n
|
1
|
+
{"version":3,"sources":["../../../../src/runtimes/edge/streams/assistantDecoderStream.ts"],"sourcesContent":["import {\n AssistantStreamChunk,\n AssistantStreamChunkType,\n} from \"./AssistantStreamChunkType\";\nimport { StreamPart } from \"./utils/StreamPart\";\nimport { ToolResultStreamPart } from \"./toolResultStream\";\n\nexport function assistantDecoderStream() {\n const toolCallNames = new Map<string, string>();\n let currentToolCall:\n | { id: string; name: string; argsText: string }\n | undefined;\n\n const endCurrentToolCall = (\n controller: TransformStreamDefaultController<ToolResultStreamPart>,\n ) => {\n if (!currentToolCall) return;\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: currentToolCall.id,\n toolName: currentToolCall.name,\n args: currentToolCall.argsText,\n });\n currentToolCall = undefined;\n };\n\n return new TransformStream<\n StreamPart<AssistantStreamChunk>,\n ToolResultStreamPart\n >({\n transform({ type, value }, controller) {\n if (\n type !== AssistantStreamChunkType.ToolCallDelta &&\n type !== AssistantStreamChunkType.Error\n ) {\n endCurrentToolCall(controller);\n }\n\n switch (type) {\n case AssistantStreamChunkType.TextDelta: {\n controller.enqueue({\n type: \"text-delta\",\n textDelta: value,\n });\n break;\n }\n case AssistantStreamChunkType.ToolCallBegin: {\n const { toolCallId: id, toolName: name } = value;\n toolCallNames.set(id, name);\n\n currentToolCall = { id, name, argsText: \"\" };\n\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId: id,\n toolName: name,\n argsTextDelta: \"\",\n });\n break;\n }\n case AssistantStreamChunkType.ToolCallDelta: {\n const { toolCallId, argsTextDelta } = value;\n\n const toolName = toolCallNames.get(toolCallId)!;\n if (currentToolCall?.id === toolCallId) {\n currentToolCall.argsText += argsTextDelta;\n }\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId,\n toolName,\n argsTextDelta: argsTextDelta,\n });\n break;\n }\n case AssistantStreamChunkType.ToolCallResult: {\n controller.enqueue({\n type: \"tool-result\",\n toolCallType: \"function\",\n toolCallId: value.toolCallId,\n toolName: toolCallNames.get(value.toolCallId)!,\n result: value.result,\n });\n break;\n }\n case AssistantStreamChunkType.FinishMessage: {\n controller.enqueue({\n type: \"finish\",\n ...value,\n });\n break;\n }\n case AssistantStreamChunkType.Error: {\n controller.enqueue({\n type: \"error\",\n error: value,\n });\n break;\n }\n\n case AssistantStreamChunkType.ToolCall: {\n const { toolCallId, toolName, args } = value;\n toolCallNames.set(toolCallId, toolName);\n\n const argsText = JSON.stringify(args);\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId,\n toolName,\n argsTextDelta: argsText,\n });\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: toolCallId,\n toolName: toolName,\n args: argsText,\n });\n break;\n }\n\n case AssistantStreamChunkType.FinishStep: {\n controller.enqueue({\n type: \"step-finish\",\n ...value,\n });\n break;\n }\n\n case AssistantStreamChunkType.Annotation:\n controller.enqueue({\n type: \"annotations\",\n annotations: value,\n });\n break;\n\n case AssistantStreamChunkType.Data:\n controller.enqueue({\n type: \"data\",\n data: value,\n });\n break;\n\n // TODO\n case AssistantStreamChunkType.ReasoningDelta:\n case AssistantStreamChunkType.StartStep:\n break;\n\n default: {\n const unhandledType: never = type;\n throw new Error(`Unhandled chunk type: ${unhandledType}`);\n }\n }\n },\n flush(controller) {\n endCurrentToolCall(controller);\n },\n });\n}\n"],"mappings":"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","names":[]}
|
@@ -108,6 +108,12 @@ function assistantDecoderStream() {
|
|
108
108
|
});
|
109
109
|
break;
|
110
110
|
}
|
111
|
+
case AssistantStreamChunkType.Annotation:
|
112
|
+
controller.enqueue({
|
113
|
+
type: "annotations",
|
114
|
+
annotations: value
|
115
|
+
});
|
116
|
+
break;
|
111
117
|
case AssistantStreamChunkType.Data:
|
112
118
|
controller.enqueue({
|
113
119
|
type: "data",
|
@@ -117,7 +123,6 @@ function assistantDecoderStream() {
|
|
117
123
|
// TODO
|
118
124
|
case AssistantStreamChunkType.ReasoningDelta:
|
119
125
|
case AssistantStreamChunkType.StartStep:
|
120
|
-
case AssistantStreamChunkType.Annotation:
|
121
126
|
break;
|
122
127
|
default: {
|
123
128
|
const unhandledType = type;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/runtimes/edge/streams/assistantDecoderStream.ts"],"sourcesContent":["import {\n AssistantStreamChunk,\n AssistantStreamChunkType,\n} from \"./AssistantStreamChunkType\";\nimport { StreamPart } from \"./utils/StreamPart\";\nimport { ToolResultStreamPart } from \"./toolResultStream\";\n\nexport function assistantDecoderStream() {\n const toolCallNames = new Map<string, string>();\n let currentToolCall:\n | { id: string; name: string; argsText: string }\n | undefined;\n\n const endCurrentToolCall = (\n controller: TransformStreamDefaultController<ToolResultStreamPart>,\n ) => {\n if (!currentToolCall) return;\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: currentToolCall.id,\n toolName: currentToolCall.name,\n args: currentToolCall.argsText,\n });\n currentToolCall = undefined;\n };\n\n return new TransformStream<\n StreamPart<AssistantStreamChunk>,\n ToolResultStreamPart\n >({\n transform({ type, value }, controller) {\n if (\n type !== AssistantStreamChunkType.ToolCallDelta &&\n type !== AssistantStreamChunkType.Error\n ) {\n endCurrentToolCall(controller);\n }\n\n switch (type) {\n case AssistantStreamChunkType.TextDelta: {\n controller.enqueue({\n type: \"text-delta\",\n textDelta: value,\n });\n break;\n }\n case AssistantStreamChunkType.ToolCallBegin: {\n const { toolCallId: id, toolName: name } = value;\n toolCallNames.set(id, name);\n\n currentToolCall = { id, name, argsText: \"\" };\n\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId: id,\n toolName: name,\n argsTextDelta: \"\",\n });\n break;\n }\n case AssistantStreamChunkType.ToolCallDelta: {\n const { toolCallId, argsTextDelta } = value;\n\n const toolName = toolCallNames.get(toolCallId)!;\n if (currentToolCall?.id === toolCallId) {\n currentToolCall.argsText += argsTextDelta;\n }\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId,\n toolName,\n argsTextDelta: argsTextDelta,\n });\n break;\n }\n case AssistantStreamChunkType.ToolCallResult: {\n controller.enqueue({\n type: \"tool-result\",\n toolCallType: \"function\",\n toolCallId: value.toolCallId,\n toolName: toolCallNames.get(value.toolCallId)!,\n result: value.result,\n });\n break;\n }\n case AssistantStreamChunkType.FinishMessage: {\n controller.enqueue({\n type: \"finish\",\n ...value,\n });\n break;\n }\n case AssistantStreamChunkType.Error: {\n controller.enqueue({\n type: \"error\",\n error: value,\n });\n break;\n }\n\n case AssistantStreamChunkType.ToolCall: {\n const { toolCallId, toolName, args } = value;\n toolCallNames.set(toolCallId, toolName);\n\n const argsText = JSON.stringify(args);\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId,\n toolName,\n argsTextDelta: argsText,\n });\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: toolCallId,\n toolName: toolName,\n args: argsText,\n });\n break;\n }\n\n case AssistantStreamChunkType.FinishStep: {\n controller.enqueue({\n type: \"step-finish\",\n ...value,\n });\n break;\n }\n\n case AssistantStreamChunkType.Data:\n controller.enqueue({\n type: \"data\",\n data: value,\n });\n break;\n\n // TODO\n case AssistantStreamChunkType.ReasoningDelta:\n case AssistantStreamChunkType.StartStep:\n
|
1
|
+
{"version":3,"sources":["../../../../src/runtimes/edge/streams/assistantDecoderStream.ts"],"sourcesContent":["import {\n AssistantStreamChunk,\n AssistantStreamChunkType,\n} from \"./AssistantStreamChunkType\";\nimport { StreamPart } from \"./utils/StreamPart\";\nimport { ToolResultStreamPart } from \"./toolResultStream\";\n\nexport function assistantDecoderStream() {\n const toolCallNames = new Map<string, string>();\n let currentToolCall:\n | { id: string; name: string; argsText: string }\n | undefined;\n\n const endCurrentToolCall = (\n controller: TransformStreamDefaultController<ToolResultStreamPart>,\n ) => {\n if (!currentToolCall) return;\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: currentToolCall.id,\n toolName: currentToolCall.name,\n args: currentToolCall.argsText,\n });\n currentToolCall = undefined;\n };\n\n return new TransformStream<\n StreamPart<AssistantStreamChunk>,\n ToolResultStreamPart\n >({\n transform({ type, value }, controller) {\n if (\n type !== AssistantStreamChunkType.ToolCallDelta &&\n type !== AssistantStreamChunkType.Error\n ) {\n endCurrentToolCall(controller);\n }\n\n switch (type) {\n case AssistantStreamChunkType.TextDelta: {\n controller.enqueue({\n type: \"text-delta\",\n textDelta: value,\n });\n break;\n }\n case AssistantStreamChunkType.ToolCallBegin: {\n const { toolCallId: id, toolName: name } = value;\n toolCallNames.set(id, name);\n\n currentToolCall = { id, name, argsText: \"\" };\n\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId: id,\n toolName: name,\n argsTextDelta: \"\",\n });\n break;\n }\n case AssistantStreamChunkType.ToolCallDelta: {\n const { toolCallId, argsTextDelta } = value;\n\n const toolName = toolCallNames.get(toolCallId)!;\n if (currentToolCall?.id === toolCallId) {\n currentToolCall.argsText += argsTextDelta;\n }\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId,\n toolName,\n argsTextDelta: argsTextDelta,\n });\n break;\n }\n case AssistantStreamChunkType.ToolCallResult: {\n controller.enqueue({\n type: \"tool-result\",\n toolCallType: \"function\",\n toolCallId: value.toolCallId,\n toolName: toolCallNames.get(value.toolCallId)!,\n result: value.result,\n });\n break;\n }\n case AssistantStreamChunkType.FinishMessage: {\n controller.enqueue({\n type: \"finish\",\n ...value,\n });\n break;\n }\n case AssistantStreamChunkType.Error: {\n controller.enqueue({\n type: \"error\",\n error: value,\n });\n break;\n }\n\n case AssistantStreamChunkType.ToolCall: {\n const { toolCallId, toolName, args } = value;\n toolCallNames.set(toolCallId, toolName);\n\n const argsText = JSON.stringify(args);\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId,\n toolName,\n argsTextDelta: argsText,\n });\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: toolCallId,\n toolName: toolName,\n args: argsText,\n });\n break;\n }\n\n case AssistantStreamChunkType.FinishStep: {\n controller.enqueue({\n type: \"step-finish\",\n ...value,\n });\n break;\n }\n\n case AssistantStreamChunkType.Annotation:\n controller.enqueue({\n type: \"annotations\",\n annotations: value,\n });\n break;\n\n case AssistantStreamChunkType.Data:\n controller.enqueue({\n type: \"data\",\n data: value,\n });\n break;\n\n // TODO\n case AssistantStreamChunkType.ReasoningDelta:\n case AssistantStreamChunkType.StartStep:\n break;\n\n default: {\n const unhandledType: never = type;\n throw new Error(`Unhandled chunk type: ${unhandledType}`);\n }\n }\n },\n flush(controller) {\n endCurrentToolCall(controller);\n },\n });\n}\n"],"mappings":"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","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"assistantEncoderStream.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/edge/streams/assistantEncoderStream.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAErB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,wBAAgB,sBAAsB,
|
1
|
+
{"version":3,"file":"assistantEncoderStream.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/edge/streams/assistantEncoderStream.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAErB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,wBAAgB,sBAAsB,4EAuGrC"}
|
@@ -58,6 +58,13 @@ function assistantEncoderStream() {
|
|
58
58
|
});
|
59
59
|
break;
|
60
60
|
}
|
61
|
+
case "annotations": {
|
62
|
+
controller.enqueue({
|
63
|
+
type: import_AssistantStreamChunkType.AssistantStreamChunkType.Annotation,
|
64
|
+
value: chunk.annotations
|
65
|
+
});
|
66
|
+
break;
|
67
|
+
}
|
61
68
|
case "data": {
|
62
69
|
controller.enqueue({
|
63
70
|
type: import_AssistantStreamChunkType.AssistantStreamChunkType.Data,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/runtimes/edge/streams/assistantEncoderStream.ts"],"sourcesContent":["import {\n AssistantStreamChunk,\n AssistantStreamChunkType,\n} from \"./AssistantStreamChunkType\";\nimport { StreamPart } from \"./utils/StreamPart\";\nimport { ToolResultStreamPart } from \"./toolResultStream\";\n\nexport function assistantEncoderStream() {\n const toolCalls = new Set<string>();\n return new TransformStream<\n ToolResultStreamPart,\n StreamPart<AssistantStreamChunk>\n >({\n transform(chunk, controller) {\n const chunkType = chunk.type;\n switch (chunkType) {\n case \"text-delta\": {\n if (!chunk.textDelta) break; // ignore empty text deltas\n controller.enqueue({\n type: AssistantStreamChunkType.TextDelta,\n value: chunk.textDelta,\n });\n break;\n }\n case \"tool-call-delta\": {\n if (!toolCalls.has(chunk.toolCallId)) {\n toolCalls.add(chunk.toolCallId);\n controller.enqueue({\n type: AssistantStreamChunkType.ToolCallBegin,\n value: {\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n },\n });\n }\n\n controller.enqueue({\n type: AssistantStreamChunkType.ToolCallDelta,\n value: {\n toolCallId: chunk.toolCallId,\n argsTextDelta: chunk.argsTextDelta,\n },\n });\n break;\n }\n\n case \"data\": {\n controller.enqueue({\n type: AssistantStreamChunkType.Data,\n value: chunk.data,\n });\n break;\n }\n\n // ignore\n case \"tool-call\":\n case \"response-metadata\":\n break;\n\n case \"tool-result\": {\n controller.enqueue({\n type: AssistantStreamChunkType.ToolCallResult,\n value: {\n toolCallId: chunk.toolCallId,\n result: chunk.result,\n },\n });\n break;\n }\n\n case \"step-finish\": {\n const { type, ...rest } = chunk;\n controller.enqueue({\n type: AssistantStreamChunkType.FinishStep,\n value: rest,\n });\n break;\n }\n\n case \"finish\": {\n const { type, ...rest } = chunk;\n controller.enqueue({\n type: AssistantStreamChunkType.FinishMessage,\n value: rest,\n });\n break;\n }\n\n case \"error\": {\n controller.enqueue({\n type: AssistantStreamChunkType.Error,\n value: chunk.error,\n });\n break;\n }\n default: {\n const unhandledType: never = chunkType;\n throw new Error(`Unhandled chunk type: ${unhandledType}`);\n }\n }\n },\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCAGO;AAIA,SAAS,yBAAyB;AACvC,QAAM,YAAY,oBAAI,IAAY;AAClC,SAAO,IAAI,gBAGT;AAAA,IACA,UAAU,OAAO,YAAY;AAC3B,YAAM,YAAY,MAAM;AACxB,cAAQ,WAAW;AAAA,QACjB,KAAK,cAAc;AACjB,cAAI,CAAC,MAAM,UAAW;AACtB,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO,MAAM;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA,QACA,KAAK,mBAAmB;AACtB,cAAI,CAAC,UAAU,IAAI,MAAM,UAAU,GAAG;AACpC,sBAAU,IAAI,MAAM,UAAU;AAC9B,uBAAW,QAAQ;AAAA,cACjB,MAAM,yDAAyB;AAAA,cAC/B,OAAO;AAAA,gBACL,YAAY,MAAM;AAAA,gBAClB,UAAU,MAAM;AAAA,cAClB;AAAA,YACF,CAAC;AAAA,UACH;AAEA,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO;AAAA,cACL,YAAY,MAAM;AAAA,cAClB,eAAe,MAAM;AAAA,YACvB;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,QAAQ;AACX,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO,MAAM;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA;AAAA,QAGA,KAAK;AAAA,QACL,KAAK;AACH;AAAA,QAEF,KAAK,eAAe;AAClB,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO;AAAA,cACL,YAAY,MAAM;AAAA,cAClB,QAAQ,MAAM;AAAA,YAChB;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,eAAe;AAClB,gBAAM,EAAE,MAAM,GAAG,KAAK,IAAI;AAC1B,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO;AAAA,UACT,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,UAAU;AACb,gBAAM,EAAE,MAAM,GAAG,KAAK,IAAI;AAC1B,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO;AAAA,UACT,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,SAAS;AACZ,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO,MAAM;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA,QACA,SAAS;AACP,gBAAM,gBAAuB;AAC7B,gBAAM,IAAI,MAAM,yBAAyB,aAAa,EAAE;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
|
1
|
+
{"version":3,"sources":["../../../../src/runtimes/edge/streams/assistantEncoderStream.ts"],"sourcesContent":["import {\n AssistantStreamChunk,\n AssistantStreamChunkType,\n} from \"./AssistantStreamChunkType\";\nimport { StreamPart } from \"./utils/StreamPart\";\nimport { ToolResultStreamPart } from \"./toolResultStream\";\n\nexport function assistantEncoderStream() {\n const toolCalls = new Set<string>();\n return new TransformStream<\n ToolResultStreamPart,\n StreamPart<AssistantStreamChunk>\n >({\n transform(chunk, controller) {\n const chunkType = chunk.type;\n switch (chunkType) {\n case \"text-delta\": {\n if (!chunk.textDelta) break; // ignore empty text deltas\n controller.enqueue({\n type: AssistantStreamChunkType.TextDelta,\n value: chunk.textDelta,\n });\n break;\n }\n case \"tool-call-delta\": {\n if (!toolCalls.has(chunk.toolCallId)) {\n toolCalls.add(chunk.toolCallId);\n controller.enqueue({\n type: AssistantStreamChunkType.ToolCallBegin,\n value: {\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n },\n });\n }\n\n controller.enqueue({\n type: AssistantStreamChunkType.ToolCallDelta,\n value: {\n toolCallId: chunk.toolCallId,\n argsTextDelta: chunk.argsTextDelta,\n },\n });\n break;\n }\n\n case \"annotations\": {\n controller.enqueue({\n type: AssistantStreamChunkType.Annotation,\n value: chunk.annotations,\n });\n break;\n }\n\n case \"data\": {\n controller.enqueue({\n type: AssistantStreamChunkType.Data,\n value: chunk.data,\n });\n break;\n }\n\n // ignore\n case \"tool-call\":\n case \"response-metadata\":\n break;\n\n case \"tool-result\": {\n controller.enqueue({\n type: AssistantStreamChunkType.ToolCallResult,\n value: {\n toolCallId: chunk.toolCallId,\n result: chunk.result,\n },\n });\n break;\n }\n\n case \"step-finish\": {\n const { type, ...rest } = chunk;\n controller.enqueue({\n type: AssistantStreamChunkType.FinishStep,\n value: rest,\n });\n break;\n }\n\n case \"finish\": {\n const { type, ...rest } = chunk;\n controller.enqueue({\n type: AssistantStreamChunkType.FinishMessage,\n value: rest,\n });\n break;\n }\n\n case \"error\": {\n controller.enqueue({\n type: AssistantStreamChunkType.Error,\n value: chunk.error,\n });\n break;\n }\n default: {\n const unhandledType: never = chunkType;\n throw new Error(`Unhandled chunk type: ${unhandledType}`);\n }\n }\n },\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCAGO;AAIA,SAAS,yBAAyB;AACvC,QAAM,YAAY,oBAAI,IAAY;AAClC,SAAO,IAAI,gBAGT;AAAA,IACA,UAAU,OAAO,YAAY;AAC3B,YAAM,YAAY,MAAM;AACxB,cAAQ,WAAW;AAAA,QACjB,KAAK,cAAc;AACjB,cAAI,CAAC,MAAM,UAAW;AACtB,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO,MAAM;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA,QACA,KAAK,mBAAmB;AACtB,cAAI,CAAC,UAAU,IAAI,MAAM,UAAU,GAAG;AACpC,sBAAU,IAAI,MAAM,UAAU;AAC9B,uBAAW,QAAQ;AAAA,cACjB,MAAM,yDAAyB;AAAA,cAC/B,OAAO;AAAA,gBACL,YAAY,MAAM;AAAA,gBAClB,UAAU,MAAM;AAAA,cAClB;AAAA,YACF,CAAC;AAAA,UACH;AAEA,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO;AAAA,cACL,YAAY,MAAM;AAAA,cAClB,eAAe,MAAM;AAAA,YACvB;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,eAAe;AAClB,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO,MAAM;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,QAAQ;AACX,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO,MAAM;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA;AAAA,QAGA,KAAK;AAAA,QACL,KAAK;AACH;AAAA,QAEF,KAAK,eAAe;AAClB,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO;AAAA,cACL,YAAY,MAAM;AAAA,cAClB,QAAQ,MAAM;AAAA,YAChB;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,eAAe;AAClB,gBAAM,EAAE,MAAM,GAAG,KAAK,IAAI;AAC1B,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO;AAAA,UACT,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,UAAU;AACb,gBAAM,EAAE,MAAM,GAAG,KAAK,IAAI;AAC1B,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO;AAAA,UACT,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,SAAS;AACZ,qBAAW,QAAQ;AAAA,YACjB,MAAM,yDAAyB;AAAA,YAC/B,OAAO,MAAM;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA,QACA,SAAS;AACP,gBAAM,gBAAuB;AAC7B,gBAAM,IAAI,MAAM,yBAAyB,aAAa,EAAE;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
|
@@ -36,6 +36,13 @@ function assistantEncoderStream() {
|
|
36
36
|
});
|
37
37
|
break;
|
38
38
|
}
|
39
|
+
case "annotations": {
|
40
|
+
controller.enqueue({
|
41
|
+
type: AssistantStreamChunkType.Annotation,
|
42
|
+
value: chunk.annotations
|
43
|
+
});
|
44
|
+
break;
|
45
|
+
}
|
39
46
|
case "data": {
|
40
47
|
controller.enqueue({
|
41
48
|
type: AssistantStreamChunkType.Data,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/runtimes/edge/streams/assistantEncoderStream.ts"],"sourcesContent":["import {\n AssistantStreamChunk,\n AssistantStreamChunkType,\n} from \"./AssistantStreamChunkType\";\nimport { StreamPart } from \"./utils/StreamPart\";\nimport { ToolResultStreamPart } from \"./toolResultStream\";\n\nexport function assistantEncoderStream() {\n const toolCalls = new Set<string>();\n return new TransformStream<\n ToolResultStreamPart,\n StreamPart<AssistantStreamChunk>\n >({\n transform(chunk, controller) {\n const chunkType = chunk.type;\n switch (chunkType) {\n case \"text-delta\": {\n if (!chunk.textDelta) break; // ignore empty text deltas\n controller.enqueue({\n type: AssistantStreamChunkType.TextDelta,\n value: chunk.textDelta,\n });\n break;\n }\n case \"tool-call-delta\": {\n if (!toolCalls.has(chunk.toolCallId)) {\n toolCalls.add(chunk.toolCallId);\n controller.enqueue({\n type: AssistantStreamChunkType.ToolCallBegin,\n value: {\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n },\n });\n }\n\n controller.enqueue({\n type: AssistantStreamChunkType.ToolCallDelta,\n value: {\n toolCallId: chunk.toolCallId,\n argsTextDelta: chunk.argsTextDelta,\n },\n });\n break;\n }\n\n case \"data\": {\n controller.enqueue({\n type: AssistantStreamChunkType.Data,\n value: chunk.data,\n });\n break;\n }\n\n // ignore\n case \"tool-call\":\n case \"response-metadata\":\n break;\n\n case \"tool-result\": {\n controller.enqueue({\n type: AssistantStreamChunkType.ToolCallResult,\n value: {\n toolCallId: chunk.toolCallId,\n result: chunk.result,\n },\n });\n break;\n }\n\n case \"step-finish\": {\n const { type, ...rest } = chunk;\n controller.enqueue({\n type: AssistantStreamChunkType.FinishStep,\n value: rest,\n });\n break;\n }\n\n case \"finish\": {\n const { type, ...rest } = chunk;\n controller.enqueue({\n type: AssistantStreamChunkType.FinishMessage,\n value: rest,\n });\n break;\n }\n\n case \"error\": {\n controller.enqueue({\n type: AssistantStreamChunkType.Error,\n value: chunk.error,\n });\n break;\n }\n default: {\n const unhandledType: never = chunkType;\n throw new Error(`Unhandled chunk type: ${unhandledType}`);\n }\n }\n },\n });\n}\n"],"mappings":";AAAA;AAAA,EAEE;AAAA,OACK;AAIA,SAAS,yBAAyB;AACvC,QAAM,YAAY,oBAAI,IAAY;AAClC,SAAO,IAAI,gBAGT;AAAA,IACA,UAAU,OAAO,YAAY;AAC3B,YAAM,YAAY,MAAM;AACxB,cAAQ,WAAW;AAAA,QACjB,KAAK,cAAc;AACjB,cAAI,CAAC,MAAM,UAAW;AACtB,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO,MAAM;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA,QACA,KAAK,mBAAmB;AACtB,cAAI,CAAC,UAAU,IAAI,MAAM,UAAU,GAAG;AACpC,sBAAU,IAAI,MAAM,UAAU;AAC9B,uBAAW,QAAQ;AAAA,cACjB,MAAM,yBAAyB;AAAA,cAC/B,OAAO;AAAA,gBACL,YAAY,MAAM;AAAA,gBAClB,UAAU,MAAM;AAAA,cAClB;AAAA,YACF,CAAC;AAAA,UACH;AAEA,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO;AAAA,cACL,YAAY,MAAM;AAAA,cAClB,eAAe,MAAM;AAAA,YACvB;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,QAAQ;AACX,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO,MAAM;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA;AAAA,QAGA,KAAK;AAAA,QACL,KAAK;AACH;AAAA,QAEF,KAAK,eAAe;AAClB,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO;AAAA,cACL,YAAY,MAAM;AAAA,cAClB,QAAQ,MAAM;AAAA,YAChB;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,eAAe;AAClB,gBAAM,EAAE,MAAM,GAAG,KAAK,IAAI;AAC1B,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO;AAAA,UACT,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,UAAU;AACb,gBAAM,EAAE,MAAM,GAAG,KAAK,IAAI;AAC1B,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO;AAAA,UACT,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,SAAS;AACZ,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO,MAAM;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA,QACA,SAAS;AACP,gBAAM,gBAAuB;AAC7B,gBAAM,IAAI,MAAM,yBAAyB,aAAa,EAAE;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
|
1
|
+
{"version":3,"sources":["../../../../src/runtimes/edge/streams/assistantEncoderStream.ts"],"sourcesContent":["import {\n AssistantStreamChunk,\n AssistantStreamChunkType,\n} from \"./AssistantStreamChunkType\";\nimport { StreamPart } from \"./utils/StreamPart\";\nimport { ToolResultStreamPart } from \"./toolResultStream\";\n\nexport function assistantEncoderStream() {\n const toolCalls = new Set<string>();\n return new TransformStream<\n ToolResultStreamPart,\n StreamPart<AssistantStreamChunk>\n >({\n transform(chunk, controller) {\n const chunkType = chunk.type;\n switch (chunkType) {\n case \"text-delta\": {\n if (!chunk.textDelta) break; // ignore empty text deltas\n controller.enqueue({\n type: AssistantStreamChunkType.TextDelta,\n value: chunk.textDelta,\n });\n break;\n }\n case \"tool-call-delta\": {\n if (!toolCalls.has(chunk.toolCallId)) {\n toolCalls.add(chunk.toolCallId);\n controller.enqueue({\n type: AssistantStreamChunkType.ToolCallBegin,\n value: {\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n },\n });\n }\n\n controller.enqueue({\n type: AssistantStreamChunkType.ToolCallDelta,\n value: {\n toolCallId: chunk.toolCallId,\n argsTextDelta: chunk.argsTextDelta,\n },\n });\n break;\n }\n\n case \"annotations\": {\n controller.enqueue({\n type: AssistantStreamChunkType.Annotation,\n value: chunk.annotations,\n });\n break;\n }\n\n case \"data\": {\n controller.enqueue({\n type: AssistantStreamChunkType.Data,\n value: chunk.data,\n });\n break;\n }\n\n // ignore\n case \"tool-call\":\n case \"response-metadata\":\n break;\n\n case \"tool-result\": {\n controller.enqueue({\n type: AssistantStreamChunkType.ToolCallResult,\n value: {\n toolCallId: chunk.toolCallId,\n result: chunk.result,\n },\n });\n break;\n }\n\n case \"step-finish\": {\n const { type, ...rest } = chunk;\n controller.enqueue({\n type: AssistantStreamChunkType.FinishStep,\n value: rest,\n });\n break;\n }\n\n case \"finish\": {\n const { type, ...rest } = chunk;\n controller.enqueue({\n type: AssistantStreamChunkType.FinishMessage,\n value: rest,\n });\n break;\n }\n\n case \"error\": {\n controller.enqueue({\n type: AssistantStreamChunkType.Error,\n value: chunk.error,\n });\n break;\n }\n default: {\n const unhandledType: never = chunkType;\n throw new Error(`Unhandled chunk type: ${unhandledType}`);\n }\n }\n },\n });\n}\n"],"mappings":";AAAA;AAAA,EAEE;AAAA,OACK;AAIA,SAAS,yBAAyB;AACvC,QAAM,YAAY,oBAAI,IAAY;AAClC,SAAO,IAAI,gBAGT;AAAA,IACA,UAAU,OAAO,YAAY;AAC3B,YAAM,YAAY,MAAM;AACxB,cAAQ,WAAW;AAAA,QACjB,KAAK,cAAc;AACjB,cAAI,CAAC,MAAM,UAAW;AACtB,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO,MAAM;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA,QACA,KAAK,mBAAmB;AACtB,cAAI,CAAC,UAAU,IAAI,MAAM,UAAU,GAAG;AACpC,sBAAU,IAAI,MAAM,UAAU;AAC9B,uBAAW,QAAQ;AAAA,cACjB,MAAM,yBAAyB;AAAA,cAC/B,OAAO;AAAA,gBACL,YAAY,MAAM;AAAA,gBAClB,UAAU,MAAM;AAAA,cAClB;AAAA,YACF,CAAC;AAAA,UACH;AAEA,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO;AAAA,cACL,YAAY,MAAM;AAAA,cAClB,eAAe,MAAM;AAAA,YACvB;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,eAAe;AAClB,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO,MAAM;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,QAAQ;AACX,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO,MAAM;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA;AAAA,QAGA,KAAK;AAAA,QACL,KAAK;AACH;AAAA,QAEF,KAAK,eAAe;AAClB,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO;AAAA,cACL,YAAY,MAAM;AAAA,cAClB,QAAQ,MAAM;AAAA,YAChB;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,eAAe;AAClB,gBAAM,EAAE,MAAM,GAAG,KAAK,IAAI;AAC1B,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO;AAAA,UACT,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,UAAU;AACb,gBAAM,EAAE,MAAM,GAAG,KAAK,IAAI;AAC1B,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO;AAAA,UACT,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,SAAS;AACZ,qBAAW,QAAQ;AAAA,YACjB,MAAM,yBAAyB;AAAA,YAC/B,OAAO,MAAM;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA,QACA,SAAS;AACP,gBAAM,gBAAuB;AAC7B,gBAAM,IAAI,MAAM,yBAAyB,aAAa,EAAE;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"runResultStream.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/edge/streams/runResultStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,wBAAgB,eAAe,
|
1
|
+
{"version":3,"file":"runResultStream.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/edge/streams/runResultStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,wBAAgB,eAAe,kEAmG9B"}
|
@@ -53,6 +53,11 @@ function runResultStream() {
|
|
53
53
|
// ignoring tool call events because they are converted to tool-call-delta as well
|
54
54
|
case "response-metadata":
|
55
55
|
break;
|
56
|
+
case "annotations": {
|
57
|
+
message = appendAnnotations(message, chunk);
|
58
|
+
controller.enqueue(message);
|
59
|
+
break;
|
60
|
+
}
|
56
61
|
case "data": {
|
57
62
|
message = appendData(message, chunk);
|
58
63
|
controller.enqueue(message);
|
@@ -180,6 +185,18 @@ var appendOrUpdateToolResult = (message, toolCallId, toolName, result) => {
|
|
180
185
|
content: newContentParts
|
181
186
|
};
|
182
187
|
};
|
188
|
+
var appendAnnotations = (message, chunk) => {
|
189
|
+
return {
|
190
|
+
...message,
|
191
|
+
metadata: {
|
192
|
+
...message.metadata,
|
193
|
+
unstable_annotations: [
|
194
|
+
...message.metadata?.unstable_annotations ?? [],
|
195
|
+
...chunk.annotations
|
196
|
+
]
|
197
|
+
}
|
198
|
+
};
|
199
|
+
};
|
183
200
|
var appendData = (message, chunk) => {
|
184
201
|
return {
|
185
202
|
...message,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/runtimes/edge/streams/runResultStream.ts"],"sourcesContent":["import { CoreChatModelRunResult } from \"../../local/ChatModelAdapter\";\nimport { parsePartialJson } from \"../partial-json/parse-partial-json\";\nimport { LanguageModelV1StreamPart } from \"@ai-sdk/provider\";\nimport { ToolResultStreamPart } from \"./toolResultStream\";\nimport { MessageStatus, ToolCallContentPart } from \"../../../types\";\n\nexport function runResultStream() {\n let message: CoreChatModelRunResult = {\n content: [],\n status: { type: \"running\" },\n };\n\n return new TransformStream<ToolResultStreamPart, CoreChatModelRunResult>({\n transform(chunk, controller) {\n const chunkType = chunk.type;\n switch (chunkType) {\n case \"text-delta\": {\n message = appendOrUpdateText(message, chunk.textDelta);\n controller.enqueue(message);\n break;\n }\n\n case \"tool-call-delta\": {\n const { toolCallId, toolName, argsTextDelta } = chunk;\n\n message = appendOrUpdateToolCall(\n message,\n toolCallId,\n toolName,\n argsTextDelta,\n );\n controller.enqueue(message);\n break;\n }\n\n case \"tool-call\":\n // ignoring tool call events because they are converted to tool-call-delta as well\n case \"response-metadata\":\n break;\n\n case \"data\": {\n message = appendData(message, chunk);\n controller.enqueue(message);\n break;\n }\n\n case \"tool-result\": {\n message = appendOrUpdateToolResult(\n message,\n chunk.toolCallId,\n chunk.toolName,\n chunk.result,\n );\n controller.enqueue(message);\n break;\n }\n case \"step-finish\": {\n message = appendStepFinish(message, chunk);\n controller.enqueue(message);\n break;\n }\n case \"finish\": {\n message = appendOrUpdateFinish(message, chunk);\n controller.enqueue(message);\n break;\n }\n case \"error\": {\n if (\n chunk.error instanceof Error &&\n chunk.error.name === \"AbortError\"\n ) {\n message = appendOrUpdateCancel(message);\n controller.enqueue(message);\n break;\n } else {\n throw chunk.error;\n }\n }\n default: {\n const unhandledType: never = chunkType;\n throw new Error(`Unhandled chunk type: ${unhandledType}`);\n }\n }\n },\n flush(controller) {\n if (message.status?.type === \"running\") {\n const requiresAction = message.content?.at(-1)?.type === \"tool-call\";\n message = appendOrUpdateFinish(message, {\n type: \"finish\",\n finishReason: requiresAction ? \"tool-calls\" : \"unknown\",\n usage: {\n promptTokens: 0,\n completionTokens: 0,\n },\n });\n controller.enqueue(message);\n }\n },\n });\n}\n\nconst appendOrUpdateText = (\n message: CoreChatModelRunResult,\n textDelta: string,\n) => {\n let contentParts = message.content ?? [];\n let contentPart = message.content?.at(-1);\n if (contentPart?.type !== \"text\") {\n contentPart = { type: \"text\", text: textDelta };\n } else {\n contentParts = contentParts.slice(0, -1);\n contentPart = { type: \"text\", text: contentPart.text + textDelta };\n }\n return {\n ...message,\n content: contentParts.concat([contentPart]),\n };\n};\n\nconst appendOrUpdateToolCall = (\n message: CoreChatModelRunResult,\n toolCallId: string,\n toolName: string,\n argsTextDelta: string,\n): CoreChatModelRunResult => {\n let contentParts = message.content ?? [];\n const contentPartIdx = contentParts.findIndex(\n (c) => c.type === \"tool-call\" && c.toolCallId === toolCallId,\n );\n let contentPart =\n contentPartIdx === -1\n ? null\n : (contentParts[contentPartIdx] as ToolCallContentPart);\n\n if (contentPart == null) {\n contentPart = {\n type: \"tool-call\",\n toolCallId,\n toolName,\n argsText: argsTextDelta,\n args: parsePartialJson(argsTextDelta),\n };\n contentParts = [...contentParts, contentPart];\n } else {\n const argsText = contentPart.argsText + argsTextDelta;\n contentPart = {\n ...contentPart,\n argsText,\n args: parsePartialJson(argsText),\n };\n contentParts = [\n ...contentParts.slice(0, contentPartIdx),\n contentPart,\n ...contentParts.slice(contentPartIdx + 1),\n ];\n }\n\n return {\n ...message,\n content: contentParts,\n };\n};\n\nconst appendOrUpdateToolResult = (\n message: CoreChatModelRunResult,\n toolCallId: string,\n toolName: string,\n result: any,\n) => {\n let found = false;\n const newContentParts = message.content?.map((part) => {\n if (part.type !== \"tool-call\" || part.toolCallId !== toolCallId)\n return part;\n found = true;\n\n if (part.toolName !== toolName)\n throw new Error(\n `Tool call ${toolCallId} found with tool name ${part.toolName}, but expected ${toolName}`,\n );\n\n return {\n ...part,\n result,\n };\n });\n if (!found)\n throw new Error(\n `Received tool result for unknown tool call \"${toolName}\" / \"${toolCallId}\". This is likely an internal bug in assistant-ui.`,\n );\n\n return {\n ...message,\n content: newContentParts!,\n };\n};\n\nconst appendData = (\n message: CoreChatModelRunResult,\n chunk: ToolResultStreamPart & { type: \"data\" },\n): CoreChatModelRunResult => {\n return {\n ...message,\n metadata: {\n ...message.metadata,\n unstable_data: [\n ...(message.metadata?.unstable_data ?? []),\n ...chunk.data,\n ],\n },\n };\n};\n\nconst appendStepFinish = (\n message: CoreChatModelRunResult,\n chunk: ToolResultStreamPart & { type: \"step-finish\" },\n): CoreChatModelRunResult => {\n const { type, ...rest } = chunk;\n const steps = [\n ...(message.metadata?.steps ?? []),\n {\n usage: rest.usage,\n },\n ];\n return {\n ...message,\n metadata: {\n ...message.metadata,\n steps,\n },\n };\n};\n\nconst appendOrUpdateFinish = (\n message: CoreChatModelRunResult,\n chunk: LanguageModelV1StreamPart & { type: \"finish\" },\n): CoreChatModelRunResult => {\n const { type, ...rest } = chunk;\n\n const steps = [\n ...(message.metadata?.steps ?? []),\n {\n logprobs: rest.logprobs,\n usage: rest.usage,\n },\n ];\n return {\n ...message,\n status: getStatus(chunk),\n metadata: {\n ...message.metadata,\n steps,\n },\n };\n};\n\nconst getStatus = (\n chunk:\n | (LanguageModelV1StreamPart & { type: \"finish\" })\n | (ToolResultStreamPart & { type: \"step-finish\" }),\n): MessageStatus => {\n if (chunk.finishReason === \"tool-calls\") {\n return {\n type: \"requires-action\",\n reason: \"tool-calls\",\n };\n } else if (\n chunk.finishReason === \"stop\" ||\n chunk.finishReason === \"unknown\"\n ) {\n return {\n type: \"complete\",\n reason: chunk.finishReason,\n };\n } else {\n return {\n type: \"incomplete\",\n reason: chunk.finishReason,\n };\n }\n};\n\nconst appendOrUpdateCancel = (\n message: CoreChatModelRunResult,\n): CoreChatModelRunResult => {\n return {\n ...message,\n status: {\n type: \"incomplete\",\n reason: \"cancelled\",\n },\n };\n};\n"],"mappings":"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","names":[]}
|
1
|
+
{"version":3,"sources":["../../../../src/runtimes/edge/streams/runResultStream.ts"],"sourcesContent":["import { CoreChatModelRunResult } from \"../../local/ChatModelAdapter\";\nimport { parsePartialJson } from \"../partial-json/parse-partial-json\";\nimport { LanguageModelV1StreamPart } from \"@ai-sdk/provider\";\nimport { ToolResultStreamPart } from \"./toolResultStream\";\nimport { MessageStatus, ToolCallContentPart } from \"../../../types\";\n\nexport function runResultStream() {\n let message: CoreChatModelRunResult = {\n content: [],\n status: { type: \"running\" },\n };\n\n return new TransformStream<ToolResultStreamPart, CoreChatModelRunResult>({\n transform(chunk, controller) {\n const chunkType = chunk.type;\n switch (chunkType) {\n case \"text-delta\": {\n message = appendOrUpdateText(message, chunk.textDelta);\n controller.enqueue(message);\n break;\n }\n\n case \"tool-call-delta\": {\n const { toolCallId, toolName, argsTextDelta } = chunk;\n\n message = appendOrUpdateToolCall(\n message,\n toolCallId,\n toolName,\n argsTextDelta,\n );\n controller.enqueue(message);\n break;\n }\n\n case \"tool-call\":\n // ignoring tool call events because they are converted to tool-call-delta as well\n case \"response-metadata\":\n break;\n\n case \"annotations\": {\n message = appendAnnotations(message, chunk);\n controller.enqueue(message);\n break;\n }\n\n case \"data\": {\n message = appendData(message, chunk);\n controller.enqueue(message);\n break;\n }\n\n case \"tool-result\": {\n message = appendOrUpdateToolResult(\n message,\n chunk.toolCallId,\n chunk.toolName,\n chunk.result,\n );\n controller.enqueue(message);\n break;\n }\n case \"step-finish\": {\n message = appendStepFinish(message, chunk);\n controller.enqueue(message);\n break;\n }\n case \"finish\": {\n message = appendOrUpdateFinish(message, chunk);\n controller.enqueue(message);\n break;\n }\n case \"error\": {\n if (\n chunk.error instanceof Error &&\n chunk.error.name === \"AbortError\"\n ) {\n message = appendOrUpdateCancel(message);\n controller.enqueue(message);\n break;\n } else {\n throw chunk.error;\n }\n }\n default: {\n const unhandledType: never = chunkType;\n throw new Error(`Unhandled chunk type: ${unhandledType}`);\n }\n }\n },\n flush(controller) {\n if (message.status?.type === \"running\") {\n const requiresAction = message.content?.at(-1)?.type === \"tool-call\";\n message = appendOrUpdateFinish(message, {\n type: \"finish\",\n finishReason: requiresAction ? \"tool-calls\" : \"unknown\",\n usage: {\n promptTokens: 0,\n completionTokens: 0,\n },\n });\n controller.enqueue(message);\n }\n },\n });\n}\n\nconst appendOrUpdateText = (\n message: CoreChatModelRunResult,\n textDelta: string,\n) => {\n let contentParts = message.content ?? [];\n let contentPart = message.content?.at(-1);\n if (contentPart?.type !== \"text\") {\n contentPart = { type: \"text\", text: textDelta };\n } else {\n contentParts = contentParts.slice(0, -1);\n contentPart = { type: \"text\", text: contentPart.text + textDelta };\n }\n return {\n ...message,\n content: contentParts.concat([contentPart]),\n };\n};\n\nconst appendOrUpdateToolCall = (\n message: CoreChatModelRunResult,\n toolCallId: string,\n toolName: string,\n argsTextDelta: string,\n): CoreChatModelRunResult => {\n let contentParts = message.content ?? [];\n const contentPartIdx = contentParts.findIndex(\n (c) => c.type === \"tool-call\" && c.toolCallId === toolCallId,\n );\n let contentPart =\n contentPartIdx === -1\n ? null\n : (contentParts[contentPartIdx] as ToolCallContentPart);\n\n if (contentPart == null) {\n contentPart = {\n type: \"tool-call\",\n toolCallId,\n toolName,\n argsText: argsTextDelta,\n args: parsePartialJson(argsTextDelta),\n };\n contentParts = [...contentParts, contentPart];\n } else {\n const argsText = contentPart.argsText + argsTextDelta;\n contentPart = {\n ...contentPart,\n argsText,\n args: parsePartialJson(argsText),\n };\n contentParts = [\n ...contentParts.slice(0, contentPartIdx),\n contentPart,\n ...contentParts.slice(contentPartIdx + 1),\n ];\n }\n\n return {\n ...message,\n content: contentParts,\n };\n};\n\nconst appendOrUpdateToolResult = (\n message: CoreChatModelRunResult,\n toolCallId: string,\n toolName: string,\n result: any,\n) => {\n let found = false;\n const newContentParts = message.content?.map((part) => {\n if (part.type !== \"tool-call\" || part.toolCallId !== toolCallId)\n return part;\n found = true;\n\n if (part.toolName !== toolName)\n throw new Error(\n `Tool call ${toolCallId} found with tool name ${part.toolName}, but expected ${toolName}`,\n );\n\n return {\n ...part,\n result,\n };\n });\n if (!found)\n throw new Error(\n `Received tool result for unknown tool call \"${toolName}\" / \"${toolCallId}\". This is likely an internal bug in assistant-ui.`,\n );\n\n return {\n ...message,\n content: newContentParts!,\n };\n};\n\nconst appendAnnotations = (\n message: CoreChatModelRunResult,\n chunk: ToolResultStreamPart & { type: \"annotations\" },\n): CoreChatModelRunResult => {\n return {\n ...message,\n metadata: {\n ...message.metadata,\n unstable_annotations: [\n ...(message.metadata?.unstable_annotations ?? []),\n ...chunk.annotations,\n ],\n },\n };\n};\n\nconst appendData = (\n message: CoreChatModelRunResult,\n chunk: ToolResultStreamPart & { type: \"data\" },\n): CoreChatModelRunResult => {\n return {\n ...message,\n metadata: {\n ...message.metadata,\n unstable_data: [\n ...(message.metadata?.unstable_data ?? []),\n ...chunk.data,\n ],\n },\n };\n};\n\nconst appendStepFinish = (\n message: CoreChatModelRunResult,\n chunk: ToolResultStreamPart & { type: \"step-finish\" },\n): CoreChatModelRunResult => {\n const { type, ...rest } = chunk;\n const steps = [\n ...(message.metadata?.steps ?? []),\n {\n usage: rest.usage,\n },\n ];\n return {\n ...message,\n metadata: {\n ...message.metadata,\n steps,\n },\n };\n};\n\nconst appendOrUpdateFinish = (\n message: CoreChatModelRunResult,\n chunk: LanguageModelV1StreamPart & { type: \"finish\" },\n): CoreChatModelRunResult => {\n const { type, ...rest } = chunk;\n\n const steps = [\n ...(message.metadata?.steps ?? []),\n {\n logprobs: rest.logprobs,\n usage: rest.usage,\n },\n ];\n return {\n ...message,\n status: getStatus(chunk),\n metadata: {\n ...message.metadata,\n steps,\n },\n };\n};\n\nconst getStatus = (\n chunk:\n | (LanguageModelV1StreamPart & { type: \"finish\" })\n | (ToolResultStreamPart & { type: \"step-finish\" }),\n): MessageStatus => {\n if (chunk.finishReason === \"tool-calls\") {\n return {\n type: \"requires-action\",\n reason: \"tool-calls\",\n };\n } else if (\n chunk.finishReason === \"stop\" ||\n chunk.finishReason === \"unknown\"\n ) {\n return {\n type: \"complete\",\n reason: chunk.finishReason,\n };\n } else {\n return {\n type: \"incomplete\",\n reason: chunk.finishReason,\n };\n }\n};\n\nconst appendOrUpdateCancel = (\n message: CoreChatModelRunResult,\n): CoreChatModelRunResult => {\n return {\n ...message,\n status: {\n type: \"incomplete\",\n reason: \"cancelled\",\n },\n };\n};\n"],"mappings":"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","names":[]}
|
@@ -29,6 +29,11 @@ function runResultStream() {
|
|
29
29
|
// ignoring tool call events because they are converted to tool-call-delta as well
|
30
30
|
case "response-metadata":
|
31
31
|
break;
|
32
|
+
case "annotations": {
|
33
|
+
message = appendAnnotations(message, chunk);
|
34
|
+
controller.enqueue(message);
|
35
|
+
break;
|
36
|
+
}
|
32
37
|
case "data": {
|
33
38
|
message = appendData(message, chunk);
|
34
39
|
controller.enqueue(message);
|
@@ -156,6 +161,18 @@ var appendOrUpdateToolResult = (message, toolCallId, toolName, result) => {
|
|
156
161
|
content: newContentParts
|
157
162
|
};
|
158
163
|
};
|
164
|
+
var appendAnnotations = (message, chunk) => {
|
165
|
+
return {
|
166
|
+
...message,
|
167
|
+
metadata: {
|
168
|
+
...message.metadata,
|
169
|
+
unstable_annotations: [
|
170
|
+
...message.metadata?.unstable_annotations ?? [],
|
171
|
+
...chunk.annotations
|
172
|
+
]
|
173
|
+
}
|
174
|
+
};
|
175
|
+
};
|
159
176
|
var appendData = (message, chunk) => {
|
160
177
|
return {
|
161
178
|
...message,
|