@sap-ai-sdk/orchestration 1.16.1-20250725013252.0 → 1.16.1-20250727013328.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/orchestration-client.d.ts.map +1 -1
- package/dist/orchestration-client.js +16 -11
- package/dist/orchestration-client.js.map +1 -1
- package/dist/orchestration-stream-response.d.ts +28 -25
- package/dist/orchestration-stream-response.d.ts.map +1 -1
- package/dist/orchestration-stream-response.js +74 -32
- package/dist/orchestration-stream-response.js.map +1 -1
- package/dist/orchestration-stream.d.ts +2 -12
- package/dist/orchestration-stream.d.ts.map +1 -1
- package/dist/orchestration-stream.js +7 -86
- package/dist/orchestration-stream.js.map +1 -1
- package/dist/util/index.d.ts +1 -1
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +1 -1
- package/dist/util/index.js.map +1 -1
- package/dist/util/stream.d.ts +6 -0
- package/dist/util/stream.d.ts.map +1 -0
- package/dist/util/stream.js +168 -0
- package/dist/util/stream.js.map +1 -0
- package/package.json +4 -4
- package/dist/util/tool-calls.d.ts +0 -24
- package/dist/util/tool-calls.d.ts.map +0 -1
- package/dist/util/tool-calls.js +0 -48
- package/dist/util/tool-calls.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestration-client.d.ts","sourceRoot":"","sources":["../src/orchestration-client.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAMpE,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EACV,yBAAyB,EACzB,MAAM,EAEN,aAAa,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AACjG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAOjF;;GAEG;AACH,qBAAa,mBAAmB;IAQ5B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,gBAAgB,CAAC;IACzB,OAAO,CAAC,WAAW,CAAC;IATtB;;;;;OAKG;gBAEO,MAAM,EAAE,yBAAyB,GAAG,MAAM,EAC1C,gBAAgB,CAAC,EAAE,mBAAmB,YAAA,EACtC,WAAW,CAAC,EAAE,6BAA6B,YAAA;IAY/C,cAAc,CAClB,MAAM,CAAC,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,mBAAmB,GAClC,OAAO,CAAC,qBAAqB,CAAC;IAS3B,MAAM,CACV,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,kBAAwB,EAClC,OAAO,CAAC,EAAE,aAAa,EACvB,aAAa,CAAC,EAAE,mBAAmB,GAClC,OAAO,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestration-client.d.ts","sourceRoot":"","sources":["../src/orchestration-client.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAMpE,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EACV,yBAAyB,EACzB,MAAM,EAEN,aAAa,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AACjG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAOjF;;GAEG;AACH,qBAAa,mBAAmB;IAQ5B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,gBAAgB,CAAC;IACzB,OAAO,CAAC,WAAW,CAAC;IATtB;;;;;OAKG;gBAEO,MAAM,EAAE,yBAAyB,GAAG,MAAM,EAC1C,gBAAgB,CAAC,EAAE,mBAAmB,YAAA,EACtC,WAAW,CAAC,EAAE,6BAA6B,YAAA;IAY/C,cAAc,CAClB,MAAM,CAAC,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,mBAAmB,GAClC,OAAO,CAAC,qBAAqB,CAAC;IAS3B,MAAM,CACV,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,kBAAwB,EAClC,OAAO,CAAC,EAAE,aAAa,EACvB,aAAa,CAAC,EAAE,mBAAmB,GAClC,OAAO,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,CAAC;YAuB3D,cAAc;YAkCd,oBAAoB;IA4BlC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;CA8BhC"}
|
|
@@ -47,15 +47,21 @@ export class OrchestrationClient {
|
|
|
47
47
|
return new OrchestrationResponse(response);
|
|
48
48
|
}
|
|
49
49
|
async stream(prompt, controller = new AbortController(), options, requestConfig) {
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
try {
|
|
51
|
+
if (typeof this.config === 'string' && options) {
|
|
52
|
+
logger.warn('Stream options are not supported when using a JSON module config.');
|
|
53
|
+
}
|
|
54
|
+
return await this.createStreamResponse({
|
|
55
|
+
prompt,
|
|
56
|
+
requestConfig,
|
|
57
|
+
stream: true,
|
|
58
|
+
streamOptions: options
|
|
59
|
+
}, controller);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
controller.abort();
|
|
63
|
+
throw error;
|
|
52
64
|
}
|
|
53
|
-
return this.createStreamResponse({
|
|
54
|
-
prompt,
|
|
55
|
-
requestConfig,
|
|
56
|
-
stream: true,
|
|
57
|
-
streamOptions: options
|
|
58
|
-
}, controller);
|
|
59
65
|
}
|
|
60
66
|
async executeRequest(options) {
|
|
61
67
|
const { prompt, requestConfig, stream, streamOptions } = options;
|
|
@@ -85,9 +91,8 @@ export class OrchestrationClient {
|
|
|
85
91
|
const stream = OrchestrationStream._create(streamResponse, controller);
|
|
86
92
|
response.stream = stream
|
|
87
93
|
._pipe(OrchestrationStream._processChunk)
|
|
88
|
-
._pipe(OrchestrationStream.
|
|
89
|
-
._pipe(OrchestrationStream.
|
|
90
|
-
._pipe(OrchestrationStream._processTokenUsage, response);
|
|
94
|
+
._pipe(OrchestrationStream._processOrchestrationStreamChunkResponse, response)
|
|
95
|
+
._pipe(OrchestrationStream._processStreamEnd, response);
|
|
91
96
|
return response;
|
|
92
97
|
}
|
|
93
98
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestration-client.js","sourceRoot":"","sources":["../src/orchestration-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EACL,8BAA8B,EAC9B,kDAAkD,EACnD,MAAM,iBAAiB,CAAC;AAgBzB,MAAM,MAAM,GAAG,YAAY,CAAC;IAC1B,OAAO,EAAE,eAAe;IACxB,cAAc,EAAE,sBAAsB;CACvC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAQpB;IACA;IACA;IATV;;;;;OAKG;IACH,YACU,MAA0C,EAC1C,gBAAsC,EACtC,WAA2C;QAF3C,WAAM,GAAN,MAAM,CAAoC;QAC1C,qBAAgB,GAAhB,gBAAgB,CAAsB;QACtC,gBAAW,GAAX,WAAW,CAAgC;QAEnD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM;gBACT,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;oBACnC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,6CAA6C;oBACpF,CAAC,CAAC,MAAM,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,MAAe,EACf,aAAmC;QAEnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;YACzC,MAAM;YACN,aAAa;YACb,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,OAAO,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,MAAM,CACV,MAAe,EACf,UAAU,GAAG,IAAI,eAAe,EAAE,EAClC,OAAuB,EACvB,aAAmC;QAEnC,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestration-client.js","sourceRoot":"","sources":["../src/orchestration-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,17 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { MessageToolCalls, TokenUsage } from './client/api/schema/index.js';
|
|
1
|
+
import type { AssistantChatMessage, ChatMessages, CompletionPostResponse, MessageToolCalls, TokenUsage } from './client/api/schema/index.js';
|
|
3
2
|
import type { OrchestrationStream } from './orchestration-stream.js';
|
|
4
3
|
/**
|
|
5
4
|
* Orchestration stream response.
|
|
6
5
|
*/
|
|
7
6
|
export declare class OrchestrationStreamResponse<T> {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
* Finish reasons for all choices.
|
|
11
|
-
*/
|
|
12
|
-
private _finishReasons;
|
|
13
|
-
private _toolCallsAccumulators;
|
|
7
|
+
_openStream: boolean;
|
|
8
|
+
_data: Partial<CompletionPostResponse>;
|
|
14
9
|
private _stream;
|
|
15
|
-
private _toolCalls;
|
|
16
10
|
/**
|
|
17
11
|
* Gets the token usage for the response.
|
|
18
12
|
* @returns The token usage for the response.
|
|
19
13
|
*/
|
|
20
14
|
getTokenUsage(): TokenUsage | undefined;
|
|
21
|
-
/**
|
|
22
|
-
* @internal
|
|
23
|
-
*/
|
|
24
|
-
_setTokenUsage(usage: TokenUsage): void;
|
|
25
15
|
/**
|
|
26
16
|
* Gets the finish reason for a specific choice index.
|
|
27
17
|
* @param choiceIndex - The index of the choice to get the finish reason for.
|
|
@@ -29,28 +19,41 @@ export declare class OrchestrationStreamResponse<T> {
|
|
|
29
19
|
*/
|
|
30
20
|
getFinishReason(choiceIndex?: number): string | undefined;
|
|
31
21
|
/**
|
|
32
|
-
*
|
|
22
|
+
* Parses the orchestration response and returns the content.
|
|
23
|
+
* If the response was filtered, an error is thrown.
|
|
24
|
+
* @param choiceIndex - The index of the choice to parse.
|
|
25
|
+
* @returns The message content.
|
|
33
26
|
*/
|
|
34
|
-
|
|
27
|
+
getContent(choiceIndex?: number): string | undefined;
|
|
35
28
|
/**
|
|
36
|
-
*
|
|
29
|
+
* Parses the orchestration response and returns the tool calls generated by the model.
|
|
30
|
+
* @param choiceIndex - The index of the choice to parse.
|
|
31
|
+
* @returns The message tool calls.
|
|
37
32
|
*/
|
|
38
|
-
|
|
33
|
+
getToolCalls(choiceIndex?: number): MessageToolCalls | undefined;
|
|
39
34
|
/**
|
|
40
|
-
*
|
|
41
|
-
* @param choiceIndex - The index of the choice to
|
|
42
|
-
* @returns The
|
|
35
|
+
* Parses the orchestration response and returns the refusal message generated by the model.
|
|
36
|
+
* @param choiceIndex - The index of the choice to parse.
|
|
37
|
+
* @returns The refusal string.
|
|
43
38
|
*/
|
|
44
|
-
|
|
39
|
+
getRefusal(choiceIndex?: number): string | undefined;
|
|
45
40
|
/**
|
|
46
|
-
*
|
|
41
|
+
* Messages that can be used for subsequent prompts as message history.
|
|
42
|
+
* @param choiceIndex - The index of the choice to parse.
|
|
43
|
+
* @returns A list of all messages.
|
|
47
44
|
*/
|
|
48
|
-
|
|
45
|
+
getAllMessages(choiceIndex?: number): ChatMessages | undefined;
|
|
49
46
|
/**
|
|
50
|
-
*
|
|
47
|
+
* Gets the assistant message from the response.
|
|
48
|
+
* @param choiceIndex - The index of the choice to use (default is 0).
|
|
49
|
+
* @returns The assistant message.
|
|
51
50
|
*/
|
|
52
|
-
|
|
51
|
+
getAssistantMessage(choiceIndex?: number): AssistantChatMessage | undefined;
|
|
52
|
+
getResponse(): CompletionPostResponse | undefined;
|
|
53
53
|
get stream(): OrchestrationStream<T>;
|
|
54
|
+
private getChoices;
|
|
55
|
+
private findChoiceByIndex;
|
|
56
|
+
private isStreamOpen;
|
|
54
57
|
/**
|
|
55
58
|
* @internal
|
|
56
59
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestration-stream-response.d.ts","sourceRoot":"","sources":["../src/orchestration-stream-response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"orchestration-stream-response.d.ts","sourceRoot":"","sources":["../src/orchestration-stream-response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACX,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;GAEG;AACH,qBAAa,2BAA2B,CAAC,CAAC;IACjC,WAAW,UAAQ;IACnB,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAM;IACnD,OAAO,CAAC,OAAO,CAAqC;IAEpD;;;OAGG;IACI,aAAa,IAAI,UAAU,GAAG,SAAS;IAO9C;;;;OAIG;IACI,eAAe,CAAC,WAAW,SAAI,GAAG,MAAM,GAAG,SAAS;IAO3D;;;;;OAKG;IACI,UAAU,CAAC,WAAW,SAAI,GAAG,MAAM,GAAG,SAAS;IAQtD;;;;OAIG;IACI,YAAY,CAAC,WAAW,SAAI,GAAG,gBAAgB,GAAG,SAAS;IAQlE;;;;OAIG;IACI,UAAU,CAAC,WAAW,SAAI,GAAG,MAAM,GAAG,SAAS;IAQtD;;;;OAIG;IACI,cAAc,CAAC,WAAW,SAAI,GAAG,YAAY,GAAG,SAAS;IAShE;;;;OAIG;IAEI,mBAAmB,CACxB,WAAW,SAAI,GACd,oBAAoB,GAAG,SAAS;IAO5B,WAAW,IAAI,sBAAsB,GAAG,SAAS;IAOxD,IAAI,MAAM,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAKnC;IAED,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,YAAY;IASpB;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAExC;CACF"}
|
|
@@ -2,26 +2,18 @@
|
|
|
2
2
|
* Orchestration stream response.
|
|
3
3
|
*/
|
|
4
4
|
export class OrchestrationStreamResponse {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* Finish reasons for all choices.
|
|
8
|
-
*/
|
|
9
|
-
_finishReasons = new Map();
|
|
10
|
-
_toolCallsAccumulators = new Map();
|
|
5
|
+
_openStream = true;
|
|
6
|
+
_data = {};
|
|
11
7
|
_stream;
|
|
12
|
-
_toolCalls = new Map();
|
|
13
8
|
/**
|
|
14
9
|
* Gets the token usage for the response.
|
|
15
10
|
* @returns The token usage for the response.
|
|
16
11
|
*/
|
|
17
12
|
getTokenUsage() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
*/
|
|
23
|
-
_setTokenUsage(usage) {
|
|
24
|
-
this._usage = usage;
|
|
13
|
+
if (this.isStreamOpen()) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
return this._data.orchestration_result?.usage;
|
|
25
17
|
}
|
|
26
18
|
/**
|
|
27
19
|
* Gets the finish reason for a specific choice index.
|
|
@@ -29,39 +21,77 @@ export class OrchestrationStreamResponse {
|
|
|
29
21
|
* @returns The finish reason for the specified choice index.
|
|
30
22
|
*/
|
|
31
23
|
getFinishReason(choiceIndex = 0) {
|
|
32
|
-
|
|
24
|
+
if (this.isStreamOpen()) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
return this.findChoiceByIndex(choiceIndex)?.finish_reason;
|
|
33
28
|
}
|
|
34
29
|
/**
|
|
35
|
-
*
|
|
30
|
+
* Parses the orchestration response and returns the content.
|
|
31
|
+
* If the response was filtered, an error is thrown.
|
|
32
|
+
* @param choiceIndex - The index of the choice to parse.
|
|
33
|
+
* @returns The message content.
|
|
36
34
|
*/
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
getContent(choiceIndex = 0) {
|
|
36
|
+
if (this.isStreamOpen()) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const choice = this.findChoiceByIndex(choiceIndex);
|
|
40
|
+
return choice?.message?.content;
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
41
|
-
*
|
|
43
|
+
* Parses the orchestration response and returns the tool calls generated by the model.
|
|
44
|
+
* @param choiceIndex - The index of the choice to parse.
|
|
45
|
+
* @returns The message tool calls.
|
|
42
46
|
*/
|
|
43
|
-
|
|
44
|
-
this.
|
|
47
|
+
getToolCalls(choiceIndex = 0) {
|
|
48
|
+
if (this.isStreamOpen()) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const choice = this.findChoiceByIndex(choiceIndex);
|
|
52
|
+
return choice?.message?.tool_calls;
|
|
45
53
|
}
|
|
46
54
|
/**
|
|
47
|
-
*
|
|
48
|
-
* @param choiceIndex - The index of the choice to
|
|
49
|
-
* @returns The
|
|
55
|
+
* Parses the orchestration response and returns the refusal message generated by the model.
|
|
56
|
+
* @param choiceIndex - The index of the choice to parse.
|
|
57
|
+
* @returns The refusal string.
|
|
50
58
|
*/
|
|
51
|
-
|
|
52
|
-
|
|
59
|
+
getRefusal(choiceIndex = 0) {
|
|
60
|
+
if (this.isStreamOpen()) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const choice = this.findChoiceByIndex(choiceIndex);
|
|
64
|
+
return choice?.message?.refusal;
|
|
53
65
|
}
|
|
54
66
|
/**
|
|
55
|
-
*
|
|
67
|
+
* Messages that can be used for subsequent prompts as message history.
|
|
68
|
+
* @param choiceIndex - The index of the choice to parse.
|
|
69
|
+
* @returns A list of all messages.
|
|
56
70
|
*/
|
|
57
|
-
|
|
58
|
-
this.
|
|
71
|
+
getAllMessages(choiceIndex = 0) {
|
|
72
|
+
if (this.isStreamOpen()) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const messages = this._data.module_results?.templating ?? [];
|
|
76
|
+
const content = this.findChoiceByIndex(choiceIndex)?.message;
|
|
77
|
+
return content ? [...messages, content] : messages;
|
|
59
78
|
}
|
|
60
79
|
/**
|
|
61
|
-
*
|
|
80
|
+
* Gets the assistant message from the response.
|
|
81
|
+
* @param choiceIndex - The index of the choice to use (default is 0).
|
|
82
|
+
* @returns The assistant message.
|
|
62
83
|
*/
|
|
63
|
-
|
|
64
|
-
|
|
84
|
+
getAssistantMessage(choiceIndex = 0) {
|
|
85
|
+
if (this.isStreamOpen()) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
return this.findChoiceByIndex(choiceIndex)?.message;
|
|
89
|
+
}
|
|
90
|
+
getResponse() {
|
|
91
|
+
if (this.isStreamOpen()) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
return this._data;
|
|
65
95
|
}
|
|
66
96
|
get stream() {
|
|
67
97
|
if (!this._stream) {
|
|
@@ -69,6 +99,18 @@ export class OrchestrationStreamResponse {
|
|
|
69
99
|
}
|
|
70
100
|
return this._stream;
|
|
71
101
|
}
|
|
102
|
+
getChoices() {
|
|
103
|
+
return this._data.orchestration_result?.choices ?? [];
|
|
104
|
+
}
|
|
105
|
+
findChoiceByIndex(index) {
|
|
106
|
+
return this.getChoices().find((c) => c.index === index);
|
|
107
|
+
}
|
|
108
|
+
isStreamOpen() {
|
|
109
|
+
if (this._openStream) {
|
|
110
|
+
throw Error('The stream is still open, the requested data is not available yet. Please wait until the stream is closed.');
|
|
111
|
+
}
|
|
112
|
+
return this._openStream;
|
|
113
|
+
}
|
|
72
114
|
/**
|
|
73
115
|
* @internal
|
|
74
116
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestration-stream-response.js","sourceRoot":"","sources":["../src/orchestration-stream-response.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"orchestration-stream-response.js","sourceRoot":"","sources":["../src/orchestration-stream-response.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,18 +21,8 @@ export declare class OrchestrationStream<Item> extends SseStream<Item> {
|
|
|
21
21
|
* @internal
|
|
22
22
|
*/
|
|
23
23
|
static _processChunk(stream: OrchestrationStream<CompletionPostResponseStreaming>): AsyncGenerator<OrchestrationStreamChunkResponse>;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
*/
|
|
27
|
-
static _processToolCalls(stream: OrchestrationStream<OrchestrationStreamChunkResponse>, response?: OrchestrationStreamResponse<OrchestrationStreamChunkResponse>): AsyncGenerator<OrchestrationStreamChunkResponse>;
|
|
28
|
-
/**
|
|
29
|
-
* @internal
|
|
30
|
-
*/
|
|
31
|
-
static _processFinishReason(stream: OrchestrationStream<OrchestrationStreamChunkResponse>, response?: OrchestrationStreamResponse<OrchestrationStreamChunkResponse>): AsyncGenerator<OrchestrationStreamChunkResponse>;
|
|
32
|
-
/**
|
|
33
|
-
* @internal
|
|
34
|
-
*/
|
|
35
|
-
static _processTokenUsage(stream: OrchestrationStream<OrchestrationStreamChunkResponse>, response?: OrchestrationStreamResponse<OrchestrationStreamChunkResponse>): AsyncGenerator<OrchestrationStreamChunkResponse>;
|
|
24
|
+
static _processOrchestrationStreamChunkResponse(stream: OrchestrationStream<OrchestrationStreamChunkResponse>, response?: OrchestrationStreamResponse<OrchestrationStreamChunkResponse>): AsyncGenerator<OrchestrationStreamChunkResponse>;
|
|
25
|
+
static _processStreamEnd(stream: OrchestrationStream<OrchestrationStreamChunkResponse>, response?: OrchestrationStreamResponse<OrchestrationStreamChunkResponse>): AsyncGenerator<OrchestrationStreamChunkResponse>;
|
|
36
26
|
/**
|
|
37
27
|
* Transform a stream of chunks into a stream of content strings.
|
|
38
28
|
* @param stream - Orchestration stream.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestration-stream.d.ts","sourceRoot":"","sources":["../src/orchestration-stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"orchestration-stream.d.ts","sourceRoot":"","sources":["../src/orchestration-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AAE5F,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEtF;;GAEG;AACH,qBAAa,mBAAmB,CAAC,IAAI,CAAE,SAAQ,SAAS,CAAC,IAAI,CAAC;IAgFnD,QAAQ,EAAE,MAAM,aAAa,CAAC,IAAI,CAAC;IA/E5C;;;;;OAKG;WACW,OAAO,CACnB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,eAAe,GAC1B,mBAAmB,CAAC,+BAA+B,CAAC;IASvD;;;;OAIG;WACW,aAAa,CACzB,MAAM,EAAE,mBAAmB,CAAC,+BAA+B,CAAC,GAC3D,cAAc,CAAC,gCAAgC,CAAC;WAMrC,wCAAwC,CACpD,MAAM,EAAE,mBAAmB,CAAC,gCAAgC,CAAC,EAC7D,QAAQ,CAAC,EAAE,2BAA2B,CAAC,gCAAgC,CAAC,GACvE,cAAc,CAAC,gCAAgC,CAAC;WAYrC,iBAAiB,CAC7B,MAAM,EAAE,mBAAmB,CAAC,gCAAgC,CAAC,EAC7D,QAAQ,CAAC,EAAE,2BAA2B,CAAC,gCAAgC,CAAC,GACvE,cAAc,CAAC,gCAAgC,CAAC;IAWnD;;;;;OAKG;WACW,qBAAqB,CACjC,MAAM,EAAE,mBAAmB,CAAC,gCAAgC,CAAC,GAC5D,cAAc,CAAC,MAAM,CAAC;gBAWhB,QAAQ,EAAE,MAAM,aAAa,CAAC,IAAI,CAAC,EAC1C,UAAU,EAAE,eAAe;IAK7B;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,EACX,SAAS,EAAE,CACT,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,EACjC,QAAQ,CAAC,EAAE,2BAA2B,CAAC,gCAAgC,CAAC,KACrE,aAAa,CAAC,OAAO,CAAC,EAC3B,QAAQ,CAAC,EAAE,2BAA2B,CAAC,gCAAgC,CAAC,GACvE,mBAAmB,CAAC,OAAO,CAAC;IAU/B;;;;OAIG;IACI,eAAe,CACpB,IAAI,EAAE,mBAAmB,CAAC,gCAAgC,CAAC,GAC1D,mBAAmB,CAAC,MAAM,CAAC;CAM/B"}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
import { createLogger } from '@sap-cloud-sdk/util';
|
|
2
1
|
import { SseStream } from '@sap-ai-sdk/core';
|
|
3
2
|
import { OrchestrationStreamChunkResponse } from './orchestration-stream-chunk-response.js';
|
|
4
|
-
import {
|
|
5
|
-
const logger = createLogger({
|
|
6
|
-
package: 'orchestration',
|
|
7
|
-
messageContext: 'orchestration-chat-completion-stream'
|
|
8
|
-
});
|
|
3
|
+
import { mergeStreamResponse } from './util/index.js';
|
|
9
4
|
/**
|
|
10
5
|
* Orchestration stream containing post-processing functions.
|
|
11
6
|
*/
|
|
@@ -31,97 +26,23 @@ export class OrchestrationStream extends SseStream {
|
|
|
31
26
|
yield new OrchestrationStreamChunkResponse(chunk);
|
|
32
27
|
}
|
|
33
28
|
}
|
|
34
|
-
|
|
35
|
-
* @internal
|
|
36
|
-
*/
|
|
37
|
-
static async *_processToolCalls(stream, response) {
|
|
38
|
-
if (!response) {
|
|
39
|
-
throw new Error('Response is required to process tool calls.');
|
|
40
|
-
}
|
|
41
|
-
for await (const chunk of stream) {
|
|
42
|
-
chunk.data.orchestration_result?.choices.forEach(choice => {
|
|
43
|
-
const choiceIndex = choice.index;
|
|
44
|
-
const toolCallsChunks = chunk.getDeltaToolCalls(choiceIndex);
|
|
45
|
-
if (toolCallsChunks) {
|
|
46
|
-
let toolCallAccumulators = response
|
|
47
|
-
._getToolCallsAccumulators()
|
|
48
|
-
.get(choiceIndex);
|
|
49
|
-
if (!toolCallAccumulators) {
|
|
50
|
-
toolCallAccumulators = new Map();
|
|
51
|
-
response
|
|
52
|
-
._getToolCallsAccumulators()
|
|
53
|
-
.set(choiceIndex, toolCallAccumulators);
|
|
54
|
-
}
|
|
55
|
-
toolCallsChunks.map(toolCallChunk => {
|
|
56
|
-
const toolCallId = toolCallChunk.index;
|
|
57
|
-
const toolCallAccumulator = mergeToolCallChunk(toolCallChunk, toolCallAccumulators.get(toolCallId));
|
|
58
|
-
toolCallAccumulators.set(toolCallId, toolCallAccumulator);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
yield chunk;
|
|
63
|
-
}
|
|
64
|
-
for (const [choiceIndex, toolCallsAccumulators] of response._getToolCallsAccumulators()) {
|
|
65
|
-
const toolCalls = [];
|
|
66
|
-
for (const [id, acc] of toolCallsAccumulators.entries()) {
|
|
67
|
-
if (isMessageToolCall(acc)) {
|
|
68
|
-
toolCalls.push(acc);
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
logger.error(`Error while parsing tool calls for choice index ${choiceIndex}: Tool call with id ${id} was incomplete.`);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
response._setToolCalls(choiceIndex, toolCalls);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* @internal
|
|
79
|
-
*/
|
|
80
|
-
static async *_processFinishReason(stream, response) {
|
|
29
|
+
static async *_processOrchestrationStreamChunkResponse(stream, response) {
|
|
81
30
|
if (!response) {
|
|
82
|
-
throw new Error('Response is required to process
|
|
31
|
+
throw new Error('Response is required to process completion post response streaming.');
|
|
83
32
|
}
|
|
84
33
|
for await (const chunk of stream) {
|
|
85
|
-
chunk.data
|
|
86
|
-
const choiceIndex = choice.index;
|
|
87
|
-
const finishReason = chunk.getFinishReason(choiceIndex);
|
|
88
|
-
if (finishReason) {
|
|
89
|
-
response._getFinishReasons().set(choiceIndex, finishReason);
|
|
90
|
-
switch (finishReason) {
|
|
91
|
-
case 'content_filter':
|
|
92
|
-
logger.error(`Choice ${choiceIndex}: Stream finished with content filter hit.`);
|
|
93
|
-
break;
|
|
94
|
-
case 'length':
|
|
95
|
-
logger.error(`Choice ${choiceIndex}: Stream finished with token length exceeded.`);
|
|
96
|
-
break;
|
|
97
|
-
case 'stop':
|
|
98
|
-
case 'tool_calls':
|
|
99
|
-
case 'function_call':
|
|
100
|
-
logger.debug(`Choice ${choiceIndex}: Stream finished.`);
|
|
101
|
-
break;
|
|
102
|
-
default:
|
|
103
|
-
logger.error(`Choice ${choiceIndex}: Stream finished with unknown reason '${finishReason}'.`);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
});
|
|
34
|
+
mergeStreamResponse(response, chunk.data);
|
|
107
35
|
yield chunk;
|
|
108
36
|
}
|
|
109
37
|
}
|
|
110
|
-
|
|
111
|
-
* @internal
|
|
112
|
-
*/
|
|
113
|
-
static async *_processTokenUsage(stream, response) {
|
|
38
|
+
static async *_processStreamEnd(stream, response) {
|
|
114
39
|
if (!response) {
|
|
115
|
-
throw new Error('Response is required to process
|
|
40
|
+
throw new Error('Response is required to process stream end.');
|
|
116
41
|
}
|
|
117
42
|
for await (const chunk of stream) {
|
|
118
|
-
const usage = chunk.getTokenUsage();
|
|
119
|
-
if (usage) {
|
|
120
|
-
response._setTokenUsage(usage);
|
|
121
|
-
logger.debug(`Token usage: ${JSON.stringify(usage)}`);
|
|
122
|
-
}
|
|
123
43
|
yield chunk;
|
|
124
44
|
}
|
|
45
|
+
response._openStream = false;
|
|
125
46
|
}
|
|
126
47
|
/**
|
|
127
48
|
* Transform a stream of chunks into a stream of content strings.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestration-stream.js","sourceRoot":"","sources":["../src/orchestration-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"orchestration-stream.js","sourceRoot":"","sources":["../src/orchestration-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAKtD;;GAEG;AACH,MAAM,OAAO,mBAA0B,SAAQ,SAAe;IAgFnD;IA/ET;;;;;OAKG;IACI,MAAM,CAAC,OAAO,CACnB,QAAsB,EACtB,UAA2B;QAE3B,MAAM,MAAM,GACV,SAAS,CAAC,oBAAoB,CAC5B,QAAQ,EACR,UAAU,CACX,CAAC;QACJ,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,CACzB,MAA4D;QAE5D,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,MAAM,IAAI,gCAAgC,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,CAAC,wCAAwC,CACpD,MAA6D,EAC7D,QAAwE;QAExE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAC7B,MAA6D,EAC7D,QAAwE;QAExE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,CAAC,qBAAqB,CACjC,MAA6D;QAE7D,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;YAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,MAAM,YAAY,CAAC;QACrB,CAAC;IACH,CAAC;IAED,YACS,QAAmC,EAC1C,UAA2B;QAE3B,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAHrB,aAAQ,GAAR,QAAQ,CAA2B;IAI5C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CACH,SAG2B,EAC3B,QAAwE;QAExE,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,IAAI,mBAAmB,CAC5B,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,EAC/B,IAAI,CAAC,UAAU,CAChB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,mBAAmB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACI,eAAe;QAGpB,OAAO,IAAI,mBAAmB,CAC5B,GAAG,EAAE,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,IAAI,CAAC,EACrD,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;CACF"}
|
package/dist/util/index.d.ts
CHANGED
package/dist/util/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
|
package/dist/util/index.js
CHANGED
package/dist/util/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CompletionPostResponseStreaming, OrchestrationStreamChunkResponse, OrchestrationStreamResponse } from '../index.js';
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export declare function mergeStreamResponse(response: OrchestrationStreamResponse<OrchestrationStreamChunkResponse>, chunk: CompletionPostResponseStreaming): void;
|
|
6
|
+
//# sourceMappingURL=stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/util/stream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,+BAA+B,EAQ/B,gCAAgC,EAChC,2BAA2B,EAG5B,MAAM,aAAa,CAAC;AAOrB;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,2BAA2B,CAAC,gCAAgC,CAAC,EACvE,KAAK,EAAE,+BAA+B,GACrC,IAAI,CAWN"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { createLogger } from '@sap-cloud-sdk/util';
|
|
2
|
+
const logger = createLogger({
|
|
3
|
+
package: 'orchestration',
|
|
4
|
+
messageContext: 'stream-util'
|
|
5
|
+
});
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export function mergeStreamResponse(response, chunk) {
|
|
10
|
+
const data = response._data;
|
|
11
|
+
data.request_id = chunk.request_id;
|
|
12
|
+
data.module_results = mergeModuleResults(data.module_results, chunk.module_results);
|
|
13
|
+
data.orchestration_result = mergeLlmModule(data.orchestration_result, chunk.orchestration_result);
|
|
14
|
+
}
|
|
15
|
+
function mergeModuleResults(existing, incoming) {
|
|
16
|
+
const mergedModuleResults = { ...existing };
|
|
17
|
+
for (const [moduleName, moduleResult] of Object.entries(incoming || {})) {
|
|
18
|
+
switch (moduleName) {
|
|
19
|
+
case 'llm':
|
|
20
|
+
mergedModuleResults[moduleName] = mergeLlmModule(mergedModuleResults[moduleName], moduleResult);
|
|
21
|
+
break;
|
|
22
|
+
case 'output_unmasking':
|
|
23
|
+
mergedModuleResults[moduleName] = mergeLlmChoices(mergedModuleResults[moduleName], moduleResult);
|
|
24
|
+
break;
|
|
25
|
+
default:
|
|
26
|
+
mergedModuleResults[moduleName] = moduleResult;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return mergedModuleResults;
|
|
30
|
+
}
|
|
31
|
+
function mergeLlmModule(existing, incoming) {
|
|
32
|
+
if (!incoming) {
|
|
33
|
+
return existing;
|
|
34
|
+
}
|
|
35
|
+
const mergedModuleResults = {
|
|
36
|
+
...incoming,
|
|
37
|
+
usage: mergeTokenUsage(existing?.usage, incoming.usage),
|
|
38
|
+
choices: mergeLlmChoices(existing?.choices, incoming?.choices)
|
|
39
|
+
};
|
|
40
|
+
return mergedModuleResults;
|
|
41
|
+
}
|
|
42
|
+
function mergeTokenUsage(existing, incoming) {
|
|
43
|
+
if (incoming) {
|
|
44
|
+
logger.debug(`Token usage: ${JSON.stringify(incoming)}`);
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
prompt_tokens: incoming?.prompt_tokens ?? existing?.prompt_tokens ?? 0,
|
|
48
|
+
completion_tokens: incoming?.completion_tokens ?? existing?.completion_tokens ?? 0,
|
|
49
|
+
total_tokens: incoming?.total_tokens ?? existing?.total_tokens ?? 0
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function mergeLlmChoices(existing, incoming) {
|
|
53
|
+
const mergedChoices = [...(existing ?? [])];
|
|
54
|
+
for (const choice of incoming ?? []) {
|
|
55
|
+
const existingChoice = mergedChoices.find(c => c.index === choice.index);
|
|
56
|
+
if (existingChoice) {
|
|
57
|
+
// Merge existing choice with incoming choice
|
|
58
|
+
existingChoice.finish_reason = handleFinishReason(existingChoice.finish_reason, choice.finish_reason, choice.index);
|
|
59
|
+
existingChoice.logprobs = mergeLogProbs(existingChoice.logprobs, choice.logprobs);
|
|
60
|
+
existingChoice.message = mergeMessage(existingChoice.message, choice.delta);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// Add new choice
|
|
64
|
+
mergedChoices.push(transformStreamingChoice(choice));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return mergedChoices;
|
|
68
|
+
}
|
|
69
|
+
function mergeMessage(existing, incoming) {
|
|
70
|
+
if (!incoming) {
|
|
71
|
+
return existing;
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
role: existing.role,
|
|
75
|
+
content: existing.content + (incoming.content ?? ''),
|
|
76
|
+
tool_calls: mergeToolCalls(existing.tool_calls, incoming.tool_calls),
|
|
77
|
+
refusal: incoming.refusal ?? existing.refusal
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function mergeToolCalls(existing, incoming) {
|
|
81
|
+
if (!incoming || incoming.length === 0) {
|
|
82
|
+
return existing;
|
|
83
|
+
}
|
|
84
|
+
if (!existing || existing.length === 0) {
|
|
85
|
+
return transformStreamingToolCalls(incoming);
|
|
86
|
+
}
|
|
87
|
+
const mergedToolCalls = [...existing];
|
|
88
|
+
for (const toolCall of incoming) {
|
|
89
|
+
const existingToolCall = mergedToolCalls.find(tc => tc.index === toolCall.index);
|
|
90
|
+
if (existingToolCall) {
|
|
91
|
+
// Merge existing tool call with incoming tool call
|
|
92
|
+
existingToolCall.function.name =
|
|
93
|
+
toolCall.function?.name ?? existingToolCall.function.name;
|
|
94
|
+
existingToolCall.function.arguments =
|
|
95
|
+
existingToolCall.function.arguments +
|
|
96
|
+
(toolCall.function?.arguments ?? '');
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
// Add new tool call
|
|
100
|
+
mergedToolCalls.push(transformStreamingToolCall(toolCall));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return mergedToolCalls;
|
|
104
|
+
}
|
|
105
|
+
function mergeLogProbs(existing, incoming) {
|
|
106
|
+
if (!incoming) {
|
|
107
|
+
return existing;
|
|
108
|
+
}
|
|
109
|
+
if (!existing) {
|
|
110
|
+
return incoming;
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
content: [...(existing.content ?? []), ...(incoming.content ?? [])],
|
|
114
|
+
refusal: [...(existing.refusal ?? []), ...(incoming.refusal ?? [])]
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function handleFinishReason(existing, incoming, choiceIndex) {
|
|
118
|
+
if (!incoming) {
|
|
119
|
+
return existing ?? '';
|
|
120
|
+
}
|
|
121
|
+
switch (incoming) {
|
|
122
|
+
case 'content_filter':
|
|
123
|
+
logger.error(`Choice ${choiceIndex}: Stream finished with content filter hit.`);
|
|
124
|
+
break;
|
|
125
|
+
case 'length':
|
|
126
|
+
logger.error(`Choice ${choiceIndex}: Stream finished with token length exceeded.`);
|
|
127
|
+
break;
|
|
128
|
+
case 'stop':
|
|
129
|
+
case 'tool_calls':
|
|
130
|
+
case 'function_call':
|
|
131
|
+
logger.debug(`Choice ${choiceIndex}: Stream finished.`);
|
|
132
|
+
break;
|
|
133
|
+
default:
|
|
134
|
+
logger.error(`Choice ${choiceIndex}: Stream finished with unknown reason '${incoming}'.`);
|
|
135
|
+
}
|
|
136
|
+
return incoming;
|
|
137
|
+
}
|
|
138
|
+
function transformStreamingChoice(choice) {
|
|
139
|
+
return {
|
|
140
|
+
index: choice.index,
|
|
141
|
+
message: {
|
|
142
|
+
role: 'assistant',
|
|
143
|
+
content: choice.delta.content,
|
|
144
|
+
tool_calls: transformStreamingToolCalls(choice.delta.tool_calls),
|
|
145
|
+
refusal: choice.delta.refusal
|
|
146
|
+
},
|
|
147
|
+
finish_reason: choice.finish_reason ?? '',
|
|
148
|
+
logprobs: choice.logprobs
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
function transformStreamingToolCalls(toolCalls) {
|
|
152
|
+
if (!toolCalls || toolCalls.length === 0) {
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
return toolCalls?.map(toolCall => transformStreamingToolCall(toolCall));
|
|
156
|
+
}
|
|
157
|
+
function transformStreamingToolCall(toolCall) {
|
|
158
|
+
return {
|
|
159
|
+
index: toolCall.index,
|
|
160
|
+
id: toolCall.id ?? '',
|
|
161
|
+
type: toolCall.type ?? 'function',
|
|
162
|
+
function: {
|
|
163
|
+
name: toolCall.function?.name ?? '',
|
|
164
|
+
arguments: toolCall.function?.arguments ?? ''
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/util/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAkBnD,MAAM,MAAM,GAAG,YAAY,CAAC;IAC1B,OAAO,EAAE,eAAe;IACxB,cAAc,EAAE,aAAa;CAC9B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAuE,EACvE,KAAsC;IAEtC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACnC,IAAI,CAAC,cAAc,GAAG,kBAAkB,CACtC,IAAI,CAAC,cAAc,EACnB,KAAK,CAAC,cAAc,CACrB,CAAC;IACF,IAAI,CAAC,oBAAoB,GAAG,cAAc,CACxC,IAAI,CAAC,oBAAoB,EACzB,KAAK,CAAC,oBAAoB,CAC3B,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,QAAmC,EACnC,QAA4C;IAE5C,MAAM,mBAAmB,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QACxE,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,KAAK;gBACR,mBAAmB,CAAC,UAAU,CAAC,GAAG,cAAc,CAC9C,mBAAmB,CAAC,UAAU,CAAC,EAC/B,YAAY,CACb,CAAC;gBACF,MAAM;YACR,KAAK,kBAAkB;gBACrB,mBAAmB,CAAC,UAAU,CAAC,GAAG,eAAe,CAC/C,mBAAmB,CAAC,UAAU,CAAC,EAC/B,YAAY,CACb,CAAC;gBACF,MAAM;YACR;gBACE,mBAAmB,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,SAAS,cAAc,CACrB,QAAqC,EACrC,QAA8C;IAE9C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,mBAAmB,GAAG;QAC1B,GAAG,QAAQ;QACX,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;QACvD,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;KAC/D,CAAC;IACF,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,SAAS,eAAe,CACtB,QAEa,EACb,QAEa;IAEb,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO;QACL,aAAa,EAAE,QAAQ,EAAE,aAAa,IAAI,QAAQ,EAAE,aAAa,IAAI,CAAC;QACtE,iBAAiB,EACf,QAAQ,EAAE,iBAAiB,IAAI,QAAQ,EAAE,iBAAiB,IAAI,CAAC;QACjE,YAAY,EAAE,QAAQ,EAAE,YAAY,IAAI,QAAQ,EAAE,YAAY,IAAI,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,QAAiC,EACjC,QAA0C;IAE1C,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,KAAK,MAAM,MAAM,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;QACzE,IAAI,cAAc,EAAE,CAAC;YACnB,6CAA6C;YAC7C,cAAc,CAAC,aAAa,GAAG,kBAAkB,CAC/C,cAAc,CAAC,aAAa,EAC5B,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,KAAK,CACb,CAAC;YACF,cAAc,CAAC,QAAQ,GAAG,aAAa,CACrC,cAAc,CAAC,QAAQ,EACvB,MAAM,CAAC,QAAQ,CAChB,CAAC;YACF,cAAc,CAAC,OAAO,GAAG,YAAY,CACnC,cAAc,CAAC,OAAO,EACtB,MAAM,CAAC,KAAK,CACb,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,iBAAiB;YACjB,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,YAAY,CACnB,QAA6B,EAC7B,QAA+B;IAE/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QACpD,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;QACpE,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;KAC9C,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,QAAuC,EACvC,QAAqC;IAErC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,eAAe,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IACtC,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAC3C,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAClC,CAAC;QACF,IAAI,gBAAgB,EAAE,CAAC;YACrB,mDAAmD;YACnD,gBAAgB,CAAC,QAAQ,CAAC,IAAI;gBAC5B,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC5D,gBAAgB,CAAC,QAAQ,CAAC,SAAS;gBACjC,gBAAgB,CAAC,QAAQ,CAAC,SAAS;oBACnC,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,oBAAoB;YACpB,eAAe,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAS,aAAa,CACpB,QAAoC,EACpC,QAAoC;IAEpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACnE,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,QAA4B,EAC5B,QAA4B,EAC5B,WAAmB;IAEnB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,gBAAgB;YACnB,MAAM,CAAC,KAAK,CACV,UAAU,WAAW,4CAA4C,CAClE,CAAC;YACF,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,CAAC,KAAK,CACV,UAAU,WAAW,+CAA+C,CACrE,CAAC;YACF,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,YAAY,CAAC;QAClB,KAAK,eAAe;YAClB,MAAM,CAAC,KAAK,CAAC,UAAU,WAAW,oBAAoB,CAAC,CAAC;YACxD,MAAM;QACR;YACE,MAAM,CAAC,KAAK,CACV,UAAU,WAAW,0CAA0C,QAAQ,IAAI,CAC5E,CAAC;IACN,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,wBAAwB,CAAC,MAA0B;IAC1D,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE;YACP,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;YAC7B,UAAU,EAAE,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YAChE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;SAC9B;QACD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;QACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,SAAsC;IAEtC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,0BAA0B,CAAC,QAAuB;IACzD,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,EAAE,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,UAAU;QACjC,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE;YACnC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE;SAC9C;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sap-ai-sdk/orchestration",
|
|
3
|
-
"version": "1.16.1-
|
|
3
|
+
"version": "1.16.1-20250727013328.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"keywords": [
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@sap-cloud-sdk/util": "^4.1.0",
|
|
24
24
|
"yaml": "^2.8.0",
|
|
25
|
-
"@sap-ai-sdk/core": "^1.16.1-
|
|
26
|
-
"@sap-ai-sdk/ai-api": "^1.16.1-
|
|
27
|
-
"@sap-ai-sdk/prompt-registry": "^1.16.1-
|
|
25
|
+
"@sap-ai-sdk/core": "^1.16.1-20250727013328.0",
|
|
26
|
+
"@sap-ai-sdk/ai-api": "^1.16.1-20250727013328.0",
|
|
27
|
+
"@sap-ai-sdk/prompt-registry": "^1.16.1-20250727013328.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@sap-cloud-sdk/http-client": "^4.1.0",
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { MessageToolCall, ToolCallChunk } from '../client/api/schema/index.js';
|
|
2
|
-
/**
|
|
3
|
-
* @internal
|
|
4
|
-
*/
|
|
5
|
-
export type ToolCallAccumulator = {
|
|
6
|
-
id?: string;
|
|
7
|
-
type: 'function';
|
|
8
|
-
function: {
|
|
9
|
-
name?: string;
|
|
10
|
-
arguments?: string;
|
|
11
|
-
} & Record<string, any>;
|
|
12
|
-
} & Record<string, any>;
|
|
13
|
-
/**
|
|
14
|
-
* @internal
|
|
15
|
-
* Check if the accumulator is a MessageToolCall.
|
|
16
|
-
*/
|
|
17
|
-
export declare function isMessageToolCall(acc: ToolCallAccumulator): acc is MessageToolCall;
|
|
18
|
-
/**
|
|
19
|
-
* Merge a stream of ToolCallChunk into a single MessageToolCall.
|
|
20
|
-
* @throws If the final object is missing required fields.
|
|
21
|
-
* @internal
|
|
22
|
-
*/
|
|
23
|
-
export declare function mergeToolCallChunk(chunk: ToolCallChunk, acc?: ToolCallAccumulator): ToolCallAccumulator;
|
|
24
|
-
//# sourceMappingURL=tool-calls.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-calls.d.ts","sourceRoot":"","sources":["../../src/util/tool-calls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACd,MAAM,+BAA+B,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAExB;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,mBAAmB,GACvB,GAAG,IAAI,eAAe,CAMxB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,GAAG,CAAC,EAAE,mBAAmB,GACxB,mBAAmB,CAsCrB"}
|
package/dist/util/tool-calls.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @internal
|
|
3
|
-
* Check if the accumulator is a MessageToolCall.
|
|
4
|
-
*/
|
|
5
|
-
export function isMessageToolCall(acc) {
|
|
6
|
-
return (typeof acc.id === 'string' &&
|
|
7
|
-
typeof acc.function.name === 'string' &&
|
|
8
|
-
typeof acc.function.arguments === 'string');
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Merge a stream of ToolCallChunk into a single MessageToolCall.
|
|
12
|
-
* @throws If the final object is missing required fields.
|
|
13
|
-
* @internal
|
|
14
|
-
*/
|
|
15
|
-
export function mergeToolCallChunk(chunk, acc) {
|
|
16
|
-
const accumulator = acc
|
|
17
|
-
? { ...acc }
|
|
18
|
-
: {
|
|
19
|
-
type: 'function',
|
|
20
|
-
function: {}
|
|
21
|
-
};
|
|
22
|
-
if (chunk.id) {
|
|
23
|
-
accumulator.id = chunk.id;
|
|
24
|
-
}
|
|
25
|
-
// Merge any extra top‐level props
|
|
26
|
-
for (const key of Object.keys(chunk)) {
|
|
27
|
-
if (!['index', 'id', 'type', 'function'].includes(key)) {
|
|
28
|
-
accumulator[key] = chunk[key];
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
if (chunk.function) {
|
|
32
|
-
if (chunk.function.name) {
|
|
33
|
-
accumulator.function.name = chunk.function.name;
|
|
34
|
-
}
|
|
35
|
-
if (chunk.function.arguments) {
|
|
36
|
-
accumulator.function.arguments =
|
|
37
|
-
(accumulator.function.arguments || '') + chunk.function.arguments;
|
|
38
|
-
}
|
|
39
|
-
// Merge any extra function‐scoped fields
|
|
40
|
-
for (const key of Object.keys(chunk.function)) {
|
|
41
|
-
if (!['name', 'arguments'].includes(key)) {
|
|
42
|
-
accumulator.function[key] = chunk.function[key];
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return accumulator;
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=tool-calls.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-calls.js","sourceRoot":"","sources":["../../src/util/tool-calls.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAwB;IAExB,OAAO,CACL,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ;QAC1B,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ;QACrC,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAC3C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAoB,EACpB,GAAyB;IAEzB,MAAM,WAAW,GAAwB,GAAG;QAC1C,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE;QACZ,CAAC,CAAC;YACE,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,EAAE;SACb,CAAC;IAEN,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QACb,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAC5B,CAAC;IAED,kCAAkC;IAClC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxB,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClD,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC7B,WAAW,CAAC,QAAQ,CAAC,SAAS;gBAC5B,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QACtE,CAAC;QAED,yCAAyC;QACzC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAI,KAAK,CAAC,QAAgB,CAAC,GAAG,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
|