@copilotkit/shared 0.9.0-mme-cloud.3 → 0.9.0-mme-cloud.5

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.
Files changed (37) hide show
  1. package/.turbo/turbo-build.log +31 -31
  2. package/CHANGELOG.md +24 -7
  3. package/dist/{chunk-FFQUB5LF.mjs → chunk-5VZXLWOP.mjs} +4 -2
  4. package/dist/chunk-5VZXLWOP.mjs.map +1 -0
  5. package/dist/{chunk-NKEDWRKJ.mjs → chunk-CBF2BIA7.mjs} +20 -12
  6. package/dist/chunk-CBF2BIA7.mjs.map +1 -0
  7. package/dist/{chunk-TYZD5BQY.mjs → chunk-HW4V75UQ.mjs} +1 -1
  8. package/dist/chunk-HW4V75UQ.mjs.map +1 -0
  9. package/dist/constants/index.d.ts +3 -2
  10. package/dist/constants/index.js +4 -1
  11. package/dist/constants/index.js.map +1 -1
  12. package/dist/constants/index.mjs +4 -2
  13. package/dist/index.d.ts +3 -3
  14. package/dist/index.js +23 -12
  15. package/dist/index.js.map +1 -1
  16. package/dist/index.mjs +6 -4
  17. package/dist/types/action.d.ts +33 -32
  18. package/dist/types/action.js.map +1 -1
  19. package/dist/types/index.d.ts +1 -1
  20. package/dist/utils/decode-chat-completion.js +19 -11
  21. package/dist/utils/decode-chat-completion.js.map +1 -1
  22. package/dist/utils/decode-chat-completion.mjs +1 -1
  23. package/dist/utils/index.d.ts +1 -1
  24. package/dist/utils/index.js +19 -11
  25. package/dist/utils/index.js.map +1 -1
  26. package/dist/utils/index.mjs +2 -2
  27. package/dist/utils/parse-chat-completion.d.ts +12 -10
  28. package/dist/utils/parse-chat-completion.js.map +1 -1
  29. package/dist/utils/parse-chat-completion.mjs +1 -1
  30. package/package.json +3 -3
  31. package/src/constants/index.ts +2 -1
  32. package/src/types/action.ts +51 -37
  33. package/src/utils/decode-chat-completion.ts +29 -16
  34. package/src/utils/parse-chat-completion.ts +19 -15
  35. package/dist/chunk-FFQUB5LF.mjs.map +0 -1
  36. package/dist/chunk-NKEDWRKJ.mjs.map +0 -1
  37. package/dist/chunk-TYZD5BQY.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
 
2
- > @copilotkit/shared@0.9.0-mme-cloud.3 build /home/runner/work/CopilotKit/CopilotKit/CopilotKit/packages/shared
2
+ > @copilotkit/shared@0.9.0-mme-cloud.5 build /home/runner/work/CopilotKit/CopilotKit/CopilotKit/packages/shared
3
3
  > tsup --clean
4
4
 
5
5
  CLI Building entry: src/index.ts, src/constants/copilot-protocol.ts, src/constants/index.ts, src/types/action.ts, src/types/annotated-function.ts, src/types/copilot-cloud-config.ts, src/types/index.ts, src/types/openai-assistant.ts, src/utils/annotated-function.ts, src/utils/decode-chat-completion-as-text.ts, src/utils/decode-chat-completion.ts, src/utils/index.ts, src/utils/parse-chat-completion.ts, src/utils/utils.test.ts, src/utils/utils.ts
@@ -10,37 +10,37 @@
10
10
  CLI Cleaning output folder
11
11
  ESM Build start
12
12
  CJS Build start
13
- CJS dist/index.js 17.49 KB
13
+ CJS dist/index.js 17.88 KB
14
14
  CJS dist/constants/copilot-protocol.js 1.25 KB
15
15
  CJS dist/types/action.js 801.00 B
16
16
  CJS dist/utils/annotated-function.js 5.84 KB
17
- CJS dist/constants/index.js 1.77 KB
17
+ CJS dist/constants/index.js 1.90 KB
18
18
  CJS dist/types/annotated-function.js 849.00 B
19
19
  CJS dist/types/copilot-cloud-config.js 857.00 B
20
20
  CJS dist/types/index.js 797.00 B
21
21
  CJS dist/types/openai-assistant.js 841.00 B
22
22
  CJS dist/utils/decode-chat-completion-as-text.js 1.82 KB
23
- CJS dist/utils/decode-chat-completion.js 4.42 KB
24
- CJS dist/utils/index.js 16.77 KB
23
+ CJS dist/utils/decode-chat-completion.js 4.68 KB
24
+ CJS dist/utils/index.js 17.02 KB
25
25
  CJS dist/utils/parse-chat-completion.js 2.68 KB
26
- CJS dist/utils/utils.js 6.25 KB
27
26
  CJS dist/utils/utils.test.js 184.00 B
28
- CJS dist/index.js.map 33.14 KB
27
+ CJS dist/utils/utils.js 6.25 KB
28
+ CJS dist/index.js.map 33.63 KB
29
29
  CJS dist/constants/copilot-protocol.js.map 261.00 B
30
- CJS dist/types/action.js.map 4.62 KB
30
+ CJS dist/types/action.js.map 4.84 KB
31
31
  CJS dist/utils/annotated-function.js.map 8.45 KB
32
- CJS dist/constants/index.js.map 666.00 B
32
+ CJS dist/constants/index.js.map 766.00 B
33
33
  CJS dist/types/annotated-function.js.map 871.00 B
34
34
  CJS dist/types/copilot-cloud-config.js.map 356.00 B
35
35
  CJS dist/types/index.js.map 277.00 B
36
36
  CJS dist/types/openai-assistant.js.map 2.86 KB
37
37
  CJS dist/utils/decode-chat-completion-as-text.js.map 1.34 KB
38
- CJS dist/utils/decode-chat-completion.js.map 6.89 KB
39
- CJS dist/utils/index.js.map 32.75 KB
40
- CJS dist/utils/parse-chat-completion.js.map 4.15 KB
41
- CJS dist/utils/utils.js.map 12.09 KB
38
+ CJS dist/utils/decode-chat-completion.js.map 7.26 KB
39
+ CJS dist/utils/index.js.map 33.13 KB
40
+ CJS dist/utils/parse-chat-completion.js.map 4.17 KB
42
41
  CJS dist/utils/utils.test.js.map 354.00 B
43
- CJS ⚡️ Build success in 52ms
42
+ CJS dist/utils/utils.js.map 12.09 KB
43
+ CJS ⚡️ Build success in 63ms
44
44
  ESM dist/utils/annotated-function.mjs 314.00 B
45
45
  ESM dist/utils/decode-chat-completion-as-text.mjs 170.00 B
46
46
  ESM dist/utils/decode-chat-completion.mjs 150.00 B
@@ -48,16 +48,16 @@
48
48
  ESM dist/utils/parse-chat-completion.mjs 147.00 B
49
49
  ESM dist/utils/utils.test.mjs 170.00 B
50
50
  ESM dist/utils/utils.mjs 439.00 B
51
- ESM dist/index.mjs 1.44 KB
51
+ ESM dist/index.mjs 1.49 KB
52
52
  ESM dist/chunk-UAPRMZEY.mjs 43.00 B
53
53
  ESM dist/chunk-S4HGLK2E.mjs 4.62 KB
54
54
  ESM dist/chunk-4MTSDAP6.mjs 729.00 B
55
- ESM dist/chunk-NKEDWRKJ.mjs 3.36 KB
56
- ESM dist/chunk-TYZD5BQY.mjs 1.63 KB
55
+ ESM dist/chunk-CBF2BIA7.mjs 3.62 KB
56
+ ESM dist/chunk-HW4V75UQ.mjs 1.63 KB
57
57
  ESM dist/chunk-DBW3BY7E.mjs 4.92 KB
58
- ESM dist/constants/index.mjs 375.00 B
59
- ESM dist/chunk-FFQUB5LF.mjs 391.00 B
60
58
  ESM dist/constants/copilot-protocol.mjs 166.00 B
59
+ ESM dist/constants/index.mjs 425.00 B
60
+ ESM dist/chunk-5VZXLWOP.mjs 474.00 B
61
61
  ESM dist/chunk-3ZU7SB62.mjs 200.00 B
62
62
  ESM dist/types/action.mjs 67.00 B
63
63
  ESM dist/types/annotated-function.mjs 79.00 B
@@ -80,12 +80,12 @@
80
80
  ESM dist/chunk-UAPRMZEY.mjs.map 71.00 B
81
81
  ESM dist/chunk-S4HGLK2E.mjs.map 8.40 KB
82
82
  ESM dist/chunk-4MTSDAP6.mjs.map 1.30 KB
83
- ESM dist/chunk-NKEDWRKJ.mjs.map 6.85 KB
84
- ESM dist/chunk-TYZD5BQY.mjs.map 4.10 KB
83
+ ESM dist/chunk-CBF2BIA7.mjs.map 7.21 KB
84
+ ESM dist/chunk-HW4V75UQ.mjs.map 4.12 KB
85
85
  ESM dist/chunk-DBW3BY7E.mjs.map 12.00 KB
86
- ESM dist/constants/index.mjs.map 71.00 B
87
- ESM dist/chunk-FFQUB5LF.mjs.map 452.00 B
88
86
  ESM dist/constants/copilot-protocol.mjs.map 71.00 B
87
+ ESM dist/constants/index.mjs.map 71.00 B
88
+ ESM dist/chunk-5VZXLWOP.mjs.map 547.00 B
89
89
  ESM dist/chunk-3ZU7SB62.mjs.map 214.00 B
90
90
  ESM dist/types/action.mjs.map 71.00 B
91
91
  ESM dist/types/annotated-function.mjs.map 71.00 B
@@ -97,21 +97,21 @@
97
97
  ESM dist/chunk-MSUB6DGR.mjs.map 71.00 B
98
98
  ESM dist/types/openai-assistant.mjs.map 71.00 B
99
99
  ESM dist/chunk-IAFBVORQ.mjs.map 71.00 B
100
- ESM ⚡️ Build success in 61ms
100
+ ESM ⚡️ Build success in 67ms
101
101
  DTS Build start
102
- DTS ⚡️ Build success in 2092ms
103
- DTS dist/index.d.ts 1.46 KB
102
+ DTS ⚡️ Build success in 2068ms
103
+ DTS dist/index.d.ts 1.47 KB
104
104
  DTS dist/types/openai-assistant.d.ts 2.79 KB
105
105
  DTS dist/types/annotated-function.d.ts 766.00 B
106
- DTS dist/types/action.d.ts 2.09 KB
106
+ DTS dist/types/action.d.ts 2.24 KB
107
107
  DTS dist/types/copilot-cloud-config.d.ts 278.00 B
108
108
  DTS dist/utils/utils.d.ts 4.32 KB
109
- DTS dist/utils/parse-chat-completion.d.ts 805.00 B
109
+ DTS dist/utils/parse-chat-completion.d.ts 826.00 B
110
110
  DTS dist/utils/decode-chat-completion.d.ts 955.00 B
111
111
  DTS dist/utils/decode-chat-completion-as-text.d.ts 298.00 B
112
112
  DTS dist/utils/annotated-function.d.ts 600.00 B
113
- DTS dist/constants/index.d.ts 427.00 B
113
+ DTS dist/constants/index.d.ts 496.00 B
114
114
  DTS dist/constants/copilot-protocol.d.ts 128.00 B
115
- DTS dist/types/index.d.ts 492.00 B
116
- DTS dist/utils/index.d.ts 853.00 B
115
+ DTS dist/types/index.d.ts 443.00 B
116
+ DTS dist/utils/index.d.ts 892.00 B
117
117
  DTS dist/utils/utils.test.d.ts 12.00 B
package/CHANGELOG.md CHANGED
@@ -1,28 +1,45 @@
1
1
  # @copilotkit/shared
2
2
 
3
+ ## 0.9.0-mme-cloud.5
4
+
5
+ ### Minor Changes
6
+
7
+ - Update comments
8
+
9
+ ## 0.9.0-mme-cloud.4
10
+
11
+ ### Minor Changes
12
+
13
+ - Update comments
14
+
3
15
  ## 0.9.0-mme-cloud.3
4
16
 
5
17
  ### Minor Changes
6
18
 
7
- - Retrieve public API key
19
+ - 85c029b: streamline cloud configuration
20
+ - Rename
21
+ - a5ade3b: Support input guardrails (cloud)
22
+ - 12ff590: Unify api key handling
23
+ - f0c4745: Include reason in guardrails response
24
+ - 17f4b1b: Retrieve public API key
8
25
 
9
- ## 0.9.0-mme-cloud.2
26
+ ## 0.9.0-function-calling-fixes.2
10
27
 
11
28
  ### Minor Changes
12
29
 
13
- - streamline cloud configuration
30
+ - fix backend function calling return values
14
31
 
15
- ## 0.9.0-mme-cloud.1
32
+ ## 0.9.0-function-calling-fixes.1
16
33
 
17
34
  ### Minor Changes
18
35
 
19
- - Unify api key handling
36
+ - gpt-4-turbo-april-2024 function calling fixes
20
37
 
21
- ## 0.9.0-mme-cloud.0
38
+ ## 0.9.0-alpha.0
22
39
 
23
40
  ### Minor Changes
24
41
 
25
- - Support input guardrails (cloud)
42
+ - gpt-4-turbo-april-2024
26
43
 
27
44
  ## 0.8.0
28
45
 
@@ -1,11 +1,13 @@
1
1
  // src/constants/index.ts
2
2
  var COPILOT_CLOUD_API_URL = "https://api.cloud.copilotkit.ai";
3
- var COPILOT_CLOUD_CHAT_URL = `${COPILOT_CLOUD_API_URL}/copilotkit/chat/complete`;
3
+ var COPILOT_CLOUD_VERSION = "v1";
4
+ var COPILOT_CLOUD_CHAT_URL = `${COPILOT_CLOUD_API_URL}/${COPILOT_CLOUD_VERSION}/copilotkit/runtime/chat`;
4
5
  var COPILOT_CLOUD_PUBLIC_API_KEY_HEADER = "X-CopilotCloud-Public-Api-Key";
5
6
 
6
7
  export {
7
8
  COPILOT_CLOUD_API_URL,
9
+ COPILOT_CLOUD_VERSION,
8
10
  COPILOT_CLOUD_CHAT_URL,
9
11
  COPILOT_CLOUD_PUBLIC_API_KEY_HEADER
10
12
  };
11
- //# sourceMappingURL=chunk-FFQUB5LF.mjs.map
13
+ //# sourceMappingURL=chunk-5VZXLWOP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants/index.ts"],"sourcesContent":["export * from \"./copilot-protocol\";\nexport const COPILOT_CLOUD_API_URL = \"https://api.cloud.copilotkit.ai\";\nexport const COPILOT_CLOUD_VERSION = \"v1\";\nexport const COPILOT_CLOUD_CHAT_URL = `${COPILOT_CLOUD_API_URL}/${COPILOT_CLOUD_VERSION}/copilotkit/runtime/chat`;\nexport const COPILOT_CLOUD_PUBLIC_API_KEY_HEADER = \"X-CopilotCloud-Public-Api-Key\";\n"],"mappings":";AACO,IAAM,wBAAwB;AAC9B,IAAM,wBAAwB;AAC9B,IAAM,yBAAyB,GAAG,yBAAyB;AAC3D,IAAM,sCAAsC;","names":[]}
@@ -46,19 +46,24 @@ function decodeChatCompletion(stream) {
46
46
  try {
47
47
  const { done, value } = await reader.read();
48
48
  if (done) {
49
- if (mode === "function") {
49
+ if ((mode == null ? void 0 : mode.type) === "function") {
50
50
  flushFunctionCall();
51
51
  }
52
52
  await cleanup(controller);
53
53
  return;
54
54
  }
55
- if (mode === "function" && (!((_b = (_a = value.choices[0].delta.tool_calls) == null ? void 0 : _a[0]) == null ? void 0 : _b.function) || ((_d = (_c = value.choices[0].delta.tool_calls) == null ? void 0 : _c[0]) == null ? void 0 : _d.function.name))) {
55
+ if ((mode == null ? void 0 : mode.type) === "function" && (!((_b = (_a = value.choices[0].delta.tool_calls) == null ? void 0 : _a[0]) == null ? void 0 : _b.function) || ((_d = (_c = value.choices[0].delta.tool_calls) == null ? void 0 : _c[0]) == null ? void 0 : _d.function.name))) {
56
56
  if (!flushFunctionCall()) {
57
57
  return;
58
58
  }
59
59
  }
60
- mode = ((_f = (_e = value.choices[0].delta.tool_calls) == null ? void 0 : _e[0]) == null ? void 0 : _f.function) ? "function" : "message";
61
- if (mode === "message") {
60
+ const maybeFunctionCall = (_f = (_e = value.choices[0].delta.tool_calls) == null ? void 0 : _e[0]) == null ? void 0 : _f.function;
61
+ if (maybeFunctionCall) {
62
+ mode = { type: "function", function: maybeFunctionCall };
63
+ } else {
64
+ mode = { type: "message" };
65
+ }
66
+ if (mode.type === "message") {
62
67
  if (value.choices[0].delta.role === "function") {
63
68
  controller.enqueue({
64
69
  type: "result",
@@ -72,15 +77,18 @@ function decodeChatCompletion(stream) {
72
77
  });
73
78
  }
74
79
  continue;
75
- } else if (mode === "function") {
76
- if (value.choices[0].delta.tool_calls[0].function.name) {
77
- functionCallName = value.choices[0].delta.tool_calls[0].function.name;
80
+ } else if (mode.type === "function") {
81
+ const maybeFunctionCallName = mode.function.name;
82
+ if (maybeFunctionCallName) {
83
+ functionCallName = maybeFunctionCallName;
78
84
  }
79
- if (value.choices[0].delta.tool_calls[0].function.arguments) {
80
- functionCallArguments += value.choices[0].delta.tool_calls[0].function.arguments;
85
+ const maybeFunctionCallArguments = mode.function.arguments;
86
+ if (maybeFunctionCallArguments) {
87
+ functionCallArguments += maybeFunctionCallArguments;
81
88
  }
82
- if (value.choices[0].delta.tool_calls[0].function.scope) {
83
- functionCallScope = value.choices[0].delta.tool_calls[0].function.scope;
89
+ const maybeFunctionCallScope = mode.function.scope;
90
+ if (maybeFunctionCallScope) {
91
+ functionCallScope = maybeFunctionCallScope;
84
92
  }
85
93
  controller.enqueue({
86
94
  type: "partial",
@@ -105,4 +113,4 @@ function decodeChatCompletion(stream) {
105
113
  export {
106
114
  decodeChatCompletion
107
115
  };
108
- //# sourceMappingURL=chunk-NKEDWRKJ.mjs.map
116
+ //# sourceMappingURL=chunk-CBF2BIA7.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/decode-chat-completion.ts"],"sourcesContent":["import { ChatCompletionChunk, ToolCallFunctionCall } from \"./parse-chat-completion\";\n\nexport interface ChatCompletionContentEvent {\n type: \"content\";\n content: string;\n}\n\nexport interface ChatCompletionPartialEvent {\n type: \"partial\";\n name: string;\n arguments: string;\n}\n\nexport interface ChatCompletionFunctionEvent {\n type: \"function\";\n name: string;\n arguments: any;\n scope: \"client\" | \"server\";\n}\n\nexport interface ChatCompletionResultEvent {\n type: \"result\";\n content: string;\n name: string;\n}\n\nexport type ChatCompletionEvent =\n | ChatCompletionContentEvent\n | ChatCompletionPartialEvent\n | ChatCompletionFunctionEvent\n | ChatCompletionResultEvent;\n\nexport function decodeChatCompletion(\n stream: ReadableStream<ChatCompletionChunk>,\n): ReadableStream<ChatCompletionEvent> {\n const reader = stream.getReader();\n\n type Mode = { type: \"function\"; function: ToolCallFunctionCall } | { type: \"message\" };\n\n let mode: Mode | null = null;\n let functionCallName: string = \"\";\n let functionCallArguments: string = \"\";\n let functionCallScope: \"client\" | \"server\" = \"client\";\n\n async function cleanup(controller?: ReadableStreamDefaultController<any>) {\n if (controller) {\n try {\n controller.close();\n } catch (_) {}\n }\n if (reader) {\n try {\n await reader.cancel();\n } catch (_) {}\n }\n }\n\n return new ReadableStream<ChatCompletionEvent>({\n async pull(controller) {\n const flushFunctionCall = (): boolean => {\n let args: any = null;\n try {\n args = JSON.parse(functionCallArguments);\n } catch (error) {\n cleanup(controller);\n controller.error(error);\n return false;\n }\n controller.enqueue({\n type: \"function\",\n name: functionCallName,\n arguments: args,\n scope: functionCallScope,\n });\n\n mode = null;\n functionCallName = \"\";\n functionCallArguments = \"\";\n return true;\n };\n\n while (true) {\n try {\n const { done, value } = await reader.read();\n\n if (done) {\n if (mode?.type === \"function\") {\n flushFunctionCall();\n }\n await cleanup(controller);\n return;\n }\n\n // In case we are currently handling a function call but the next message is either\n // - not a function call\n // - or is another function call (indicated by the presence of 'name' field in the next function call object)\n // => flush the current function call.\n if (\n mode?.type === \"function\" &&\n (!value.choices[0].delta.tool_calls?.[0]?.function ||\n value.choices[0].delta.tool_calls?.[0]?.function.name)\n ) {\n if (!flushFunctionCall()) {\n return;\n }\n }\n\n const maybeFunctionCall = value.choices[0].delta.tool_calls?.[0]?.function;\n if (maybeFunctionCall) {\n mode = { type: \"function\", function: maybeFunctionCall };\n } else {\n mode = { type: \"message\" };\n }\n\n // if we get a message, emit the content and continue;\n if (mode.type === \"message\") {\n // if we got a result message, send a result event\n if (value.choices[0].delta.role === \"function\") {\n controller.enqueue({\n type: \"result\",\n content: value.choices[0].delta.content!,\n name: value.choices[0].delta.name!,\n });\n }\n // otherwise, send a content event\n else if (value.choices[0].delta.content) {\n controller.enqueue({\n type: \"content\",\n content: value.choices[0].delta.content,\n });\n }\n continue;\n }\n // if we get a function call, buffer the name and arguments, then emit a partial event.\n else if (mode.type === \"function\") {\n const maybeFunctionCallName = mode.function.name;\n if (maybeFunctionCallName) {\n functionCallName = maybeFunctionCallName;\n }\n\n const maybeFunctionCallArguments = mode.function.arguments;\n if (maybeFunctionCallArguments) {\n functionCallArguments += maybeFunctionCallArguments;\n }\n\n const maybeFunctionCallScope = mode.function.scope;\n if (maybeFunctionCallScope) {\n functionCallScope = maybeFunctionCallScope;\n }\n\n controller.enqueue({\n type: \"partial\",\n name: functionCallName,\n arguments: functionCallArguments,\n });\n continue;\n }\n } catch (error) {\n controller.error(error);\n await cleanup(controller);\n return;\n }\n }\n },\n cancel() {\n reader.cancel();\n },\n });\n}\n"],"mappings":"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","names":[]}
@@ -57,4 +57,4 @@ function parseChatCompletion(stream) {
57
57
  export {
58
58
  parseChatCompletion
59
59
  };
60
- //# sourceMappingURL=chunk-TYZD5BQY.mjs.map
60
+ //# sourceMappingURL=chunk-HW4V75UQ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/parse-chat-completion.ts"],"sourcesContent":["import { Role } from \"../types/openai-assistant\";\n\nexport interface ToolCallFunctionCall {\n arguments?: string;\n\n name?: string;\n // TODO:\n // Temporarily add scope to the OpenAI protocol until we\n // have our own protocol.\n // When scope is \"server\", the client will not attempt to\n // execute the function.\n scope?: \"client\" | \"server\";\n}\n\nexport interface ToolCallPayload {\n index: number;\n id?: string;\n function: ToolCallFunctionCall;\n}\n\nexport interface ChatCompletionChunk {\n choices: {\n delta: {\n id?: string;\n role: Role;\n content?: string | null;\n\n // TODO:\n // Temporarily add name to the OpenAI protocol until we\n // have our own protocol.\n // When name is set, we return the result of a server-side\n // function call.\n name?: string;\n\n function_call?: {\n name?: string;\n arguments?: string;\n };\n tool_calls?: ToolCallPayload[];\n };\n }[];\n}\n\n// TODO:\n// it's possible that unicode characters could be split across chunks\n// make sure to properly handle that\nexport function parseChatCompletion(\n stream: ReadableStream<Uint8Array>,\n): ReadableStream<ChatCompletionChunk> {\n const reader = stream.getReader();\n let buffer = new Uint8Array();\n\n async function cleanup(controller?: ReadableStreamDefaultController<any>) {\n if (controller) {\n try {\n controller.close();\n } catch (_) {}\n }\n if (reader) {\n try {\n await reader.cancel();\n } catch (_) {}\n }\n }\n\n return new ReadableStream<ChatCompletionChunk>({\n async pull(controller) {\n while (true) {\n try {\n const { done, value } = await reader.read();\n\n if (done) {\n await cleanup(controller);\n return;\n }\n\n const newBuffer = new Uint8Array(buffer.length + value.length);\n newBuffer.set(buffer);\n newBuffer.set(value, buffer.length);\n buffer = newBuffer;\n\n const valueString = new TextDecoder(\"utf-8\").decode(buffer);\n const lines = valueString.split(\"\\n\").filter((line) => line.trim() !== \"\");\n\n // If the last line isn't complete, keep it in the buffer for next time\n buffer = !valueString.endsWith(\"\\n\")\n ? new TextEncoder().encode(lines.pop() || \"\")\n : new Uint8Array();\n\n for (const line of lines) {\n const cleanedLine = line.replace(/^data: /, \"\");\n\n if (cleanedLine === \"[DONE]\") {\n await cleanup(controller);\n return;\n }\n\n const json = JSON.parse(cleanedLine);\n controller.enqueue(json);\n }\n } catch (error) {\n controller.error(error);\n await cleanup(controller);\n return;\n }\n }\n },\n cancel() {\n reader.cancel();\n },\n });\n}\n"],"mappings":";AA8CO,SAAS,oBACd,QACqC;AACrC,QAAM,SAAS,OAAO,UAAU;AAChC,MAAI,SAAS,IAAI,WAAW;AAE5B,iBAAe,QAAQ,YAAmD;AACxE,QAAI,YAAY;AACd,UAAI;AACF,mBAAW,MAAM;AAAA,MACnB,SAAS,GAAP;AAAA,MAAW;AAAA,IACf;AACA,QAAI,QAAQ;AACV,UAAI;AACF,cAAM,OAAO,OAAO;AAAA,MACtB,SAAS,GAAP;AAAA,MAAW;AAAA,IACf;AAAA,EACF;AAEA,SAAO,IAAI,eAAoC;AAAA,IAC7C,MAAM,KAAK,YAAY;AACrB,aAAO,MAAM;AACX,YAAI;AACF,gBAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAE1C,cAAI,MAAM;AACR,kBAAM,QAAQ,UAAU;AACxB;AAAA,UACF;AAEA,gBAAM,YAAY,IAAI,WAAW,OAAO,SAAS,MAAM,MAAM;AAC7D,oBAAU,IAAI,MAAM;AACpB,oBAAU,IAAI,OAAO,OAAO,MAAM;AAClC,mBAAS;AAET,gBAAM,cAAc,IAAI,YAAY,OAAO,EAAE,OAAO,MAAM;AAC1D,gBAAM,QAAQ,YAAY,MAAM,IAAI,EAAE,OAAO,CAAC,SAAS,KAAK,KAAK,MAAM,EAAE;AAGzE,mBAAS,CAAC,YAAY,SAAS,IAAI,IAC/B,IAAI,YAAY,EAAE,OAAO,MAAM,IAAI,KAAK,EAAE,IAC1C,IAAI,WAAW;AAEnB,qBAAW,QAAQ,OAAO;AACxB,kBAAM,cAAc,KAAK,QAAQ,WAAW,EAAE;AAE9C,gBAAI,gBAAgB,UAAU;AAC5B,oBAAM,QAAQ,UAAU;AACxB;AAAA,YACF;AAEA,kBAAM,OAAO,KAAK,MAAM,WAAW;AACnC,uBAAW,QAAQ,IAAI;AAAA,UACzB;AAAA,QACF,SAAS,OAAP;AACA,qBAAW,MAAM,KAAK;AACtB,gBAAM,QAAQ,UAAU;AACxB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS;AACP,aAAO,OAAO;AAAA,IAChB;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -1,7 +1,8 @@
1
1
  export { EXCLUDE_FROM_FORWARD_PROPS_KEYS } from './copilot-protocol.js';
2
2
 
3
3
  declare const COPILOT_CLOUD_API_URL = "https://api.cloud.copilotkit.ai";
4
- declare const COPILOT_CLOUD_CHAT_URL = "https://api.cloud.copilotkit.ai/copilotkit/chat/complete";
4
+ declare const COPILOT_CLOUD_VERSION = "v1";
5
+ declare const COPILOT_CLOUD_CHAT_URL = "https://api.cloud.copilotkit.ai/v1/copilotkit/runtime/chat";
5
6
  declare const COPILOT_CLOUD_PUBLIC_API_KEY_HEADER = "X-CopilotCloud-Public-Api-Key";
6
7
 
7
- export { COPILOT_CLOUD_API_URL, COPILOT_CLOUD_CHAT_URL, COPILOT_CLOUD_PUBLIC_API_KEY_HEADER };
8
+ export { COPILOT_CLOUD_API_URL, COPILOT_CLOUD_CHAT_URL, COPILOT_CLOUD_PUBLIC_API_KEY_HEADER, COPILOT_CLOUD_VERSION };
@@ -23,6 +23,7 @@ __export(constants_exports, {
23
23
  COPILOT_CLOUD_API_URL: () => COPILOT_CLOUD_API_URL,
24
24
  COPILOT_CLOUD_CHAT_URL: () => COPILOT_CLOUD_CHAT_URL,
25
25
  COPILOT_CLOUD_PUBLIC_API_KEY_HEADER: () => COPILOT_CLOUD_PUBLIC_API_KEY_HEADER,
26
+ COPILOT_CLOUD_VERSION: () => COPILOT_CLOUD_VERSION,
26
27
  EXCLUDE_FROM_FORWARD_PROPS_KEYS: () => EXCLUDE_FROM_FORWARD_PROPS_KEYS
27
28
  });
28
29
  module.exports = __toCommonJS(constants_exports);
@@ -32,13 +33,15 @@ var EXCLUDE_FROM_FORWARD_PROPS_KEYS = "exclude_from_forward_props_keys";
32
33
 
33
34
  // src/constants/index.ts
34
35
  var COPILOT_CLOUD_API_URL = "https://api.cloud.copilotkit.ai";
35
- var COPILOT_CLOUD_CHAT_URL = `${COPILOT_CLOUD_API_URL}/copilotkit/chat/complete`;
36
+ var COPILOT_CLOUD_VERSION = "v1";
37
+ var COPILOT_CLOUD_CHAT_URL = `${COPILOT_CLOUD_API_URL}/${COPILOT_CLOUD_VERSION}/copilotkit/runtime/chat`;
36
38
  var COPILOT_CLOUD_PUBLIC_API_KEY_HEADER = "X-CopilotCloud-Public-Api-Key";
37
39
  // Annotate the CommonJS export names for ESM import in node:
38
40
  0 && (module.exports = {
39
41
  COPILOT_CLOUD_API_URL,
40
42
  COPILOT_CLOUD_CHAT_URL,
41
43
  COPILOT_CLOUD_PUBLIC_API_KEY_HEADER,
44
+ COPILOT_CLOUD_VERSION,
42
45
  EXCLUDE_FROM_FORWARD_PROPS_KEYS
43
46
  });
44
47
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/constants/index.ts","../../src/constants/copilot-protocol.ts"],"sourcesContent":["export * from \"./copilot-protocol\";\nexport const COPILOT_CLOUD_API_URL = \"https://api.cloud.copilotkit.ai\";\nexport const COPILOT_CLOUD_CHAT_URL = `${COPILOT_CLOUD_API_URL}/copilotkit/chat/complete`;\nexport const COPILOT_CLOUD_PUBLIC_API_KEY_HEADER = \"X-CopilotCloud-Public-Api-Key\";\n","export const EXCLUDE_FROM_FORWARD_PROPS_KEYS = \"exclude_from_forward_props_keys\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,kCAAkC;;;ADCxC,IAAM,wBAAwB;AAC9B,IAAM,yBAAyB,GAAG;AAClC,IAAM,sCAAsC;","names":[]}
1
+ {"version":3,"sources":["../../src/constants/index.ts","../../src/constants/copilot-protocol.ts"],"sourcesContent":["export * from \"./copilot-protocol\";\nexport const COPILOT_CLOUD_API_URL = \"https://api.cloud.copilotkit.ai\";\nexport const COPILOT_CLOUD_VERSION = \"v1\";\nexport const COPILOT_CLOUD_CHAT_URL = `${COPILOT_CLOUD_API_URL}/${COPILOT_CLOUD_VERSION}/copilotkit/runtime/chat`;\nexport const COPILOT_CLOUD_PUBLIC_API_KEY_HEADER = \"X-CopilotCloud-Public-Api-Key\";\n","export const EXCLUDE_FROM_FORWARD_PROPS_KEYS = \"exclude_from_forward_props_keys\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,kCAAkC;;;ADCxC,IAAM,wBAAwB;AAC9B,IAAM,wBAAwB;AAC9B,IAAM,yBAAyB,GAAG,yBAAyB;AAC3D,IAAM,sCAAsC;","names":[]}
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  COPILOT_CLOUD_API_URL,
3
3
  COPILOT_CLOUD_CHAT_URL,
4
- COPILOT_CLOUD_PUBLIC_API_KEY_HEADER
5
- } from "../chunk-FFQUB5LF.mjs";
4
+ COPILOT_CLOUD_PUBLIC_API_KEY_HEADER,
5
+ COPILOT_CLOUD_VERSION
6
+ } from "../chunk-5VZXLWOP.mjs";
6
7
  import {
7
8
  EXCLUDE_FROM_FORWARD_PROPS_KEYS
8
9
  } from "../chunk-3ZU7SB62.mjs";
@@ -10,6 +11,7 @@ export {
10
11
  COPILOT_CLOUD_API_URL,
11
12
  COPILOT_CLOUD_CHAT_URL,
12
13
  COPILOT_CLOUD_PUBLIC_API_KEY_HEADER,
14
+ COPILOT_CLOUD_VERSION,
13
15
  EXCLUDE_FROM_FORWARD_PROPS_KEYS
14
16
  };
15
17
  //# sourceMappingURL=index.mjs.map
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  export { AssistantMessage, FunctionCall, FunctionCallHandler, FunctionDefinition, JSONValue, Message, Role, ToolDefinition } from './types/openai-assistant.js';
2
2
  export { AnnotatedFunction, AnnotatedFunctionArgument, AnnotatedFunctionArrayArgument, AnnotatedFunctionSimpleArgument } from './types/annotated-function.js';
3
- export { Action, BaseParameter, MappedParameterTypes, ObjectParameter, Parameter, StringParameter } from './types/action.js';
3
+ export { Action, MappedParameterTypes, Parameter } from './types/action.js';
4
4
  export { CopilotCloudConfig } from './types/copilot-cloud-config.js';
5
5
  export { COMPLEX_HEADER, StreamPart, StreamPartType, StreamString, StreamStringPrefixes, decodeResult, encodeResult, formatStreamPart, isStreamStringEqualToType, parseStreamPart, streamPartsByCode, validCodes } from './utils/utils.js';
6
- export { ChatCompletionChunk, parseChatCompletion } from './utils/parse-chat-completion.js';
6
+ export { ChatCompletionChunk, ToolCallFunctionCall, ToolCallPayload, parseChatCompletion } from './utils/parse-chat-completion.js';
7
7
  export { ChatCompletionContentEvent, ChatCompletionEvent, ChatCompletionFunctionEvent, ChatCompletionPartialEvent, ChatCompletionResultEvent, decodeChatCompletion } from './utils/decode-chat-completion.js';
8
8
  export { decodeChatCompletionAsText } from './utils/decode-chat-completion-as-text.js';
9
9
  export { actionToChatCompletionFunction, annotatedFunctionToAction, annotatedFunctionToChatCompletionFunction } from './utils/annotated-function.js';
10
- export { COPILOT_CLOUD_API_URL, COPILOT_CLOUD_CHAT_URL, COPILOT_CLOUD_PUBLIC_API_KEY_HEADER } from './constants/index.js';
10
+ export { COPILOT_CLOUD_API_URL, COPILOT_CLOUD_CHAT_URL, COPILOT_CLOUD_PUBLIC_API_KEY_HEADER, COPILOT_CLOUD_VERSION } from './constants/index.js';
11
11
  export { EXCLUDE_FROM_FORWARD_PROPS_KEYS } from './constants/copilot-protocol.js';
package/dist/index.js CHANGED
@@ -24,6 +24,7 @@ __export(src_exports, {
24
24
  COPILOT_CLOUD_API_URL: () => COPILOT_CLOUD_API_URL,
25
25
  COPILOT_CLOUD_CHAT_URL: () => COPILOT_CLOUD_CHAT_URL,
26
26
  COPILOT_CLOUD_PUBLIC_API_KEY_HEADER: () => COPILOT_CLOUD_PUBLIC_API_KEY_HEADER,
27
+ COPILOT_CLOUD_VERSION: () => COPILOT_CLOUD_VERSION,
27
28
  EXCLUDE_FROM_FORWARD_PROPS_KEYS: () => EXCLUDE_FROM_FORWARD_PROPS_KEYS,
28
29
  StreamStringPrefixes: () => StreamStringPrefixes,
29
30
  actionToChatCompletionFunction: () => actionToChatCompletionFunction,
@@ -291,19 +292,24 @@ function decodeChatCompletion(stream) {
291
292
  try {
292
293
  const { done, value } = await reader.read();
293
294
  if (done) {
294
- if (mode === "function") {
295
+ if ((mode == null ? void 0 : mode.type) === "function") {
295
296
  flushFunctionCall();
296
297
  }
297
298
  await cleanup(controller);
298
299
  return;
299
300
  }
300
- if (mode === "function" && (!((_b = (_a = value.choices[0].delta.tool_calls) == null ? void 0 : _a[0]) == null ? void 0 : _b.function) || ((_d = (_c = value.choices[0].delta.tool_calls) == null ? void 0 : _c[0]) == null ? void 0 : _d.function.name))) {
301
+ if ((mode == null ? void 0 : mode.type) === "function" && (!((_b = (_a = value.choices[0].delta.tool_calls) == null ? void 0 : _a[0]) == null ? void 0 : _b.function) || ((_d = (_c = value.choices[0].delta.tool_calls) == null ? void 0 : _c[0]) == null ? void 0 : _d.function.name))) {
301
302
  if (!flushFunctionCall()) {
302
303
  return;
303
304
  }
304
305
  }
305
- mode = ((_f = (_e = value.choices[0].delta.tool_calls) == null ? void 0 : _e[0]) == null ? void 0 : _f.function) ? "function" : "message";
306
- if (mode === "message") {
306
+ const maybeFunctionCall = (_f = (_e = value.choices[0].delta.tool_calls) == null ? void 0 : _e[0]) == null ? void 0 : _f.function;
307
+ if (maybeFunctionCall) {
308
+ mode = { type: "function", function: maybeFunctionCall };
309
+ } else {
310
+ mode = { type: "message" };
311
+ }
312
+ if (mode.type === "message") {
307
313
  if (value.choices[0].delta.role === "function") {
308
314
  controller.enqueue({
309
315
  type: "result",
@@ -317,15 +323,18 @@ function decodeChatCompletion(stream) {
317
323
  });
318
324
  }
319
325
  continue;
320
- } else if (mode === "function") {
321
- if (value.choices[0].delta.tool_calls[0].function.name) {
322
- functionCallName = value.choices[0].delta.tool_calls[0].function.name;
326
+ } else if (mode.type === "function") {
327
+ const maybeFunctionCallName = mode.function.name;
328
+ if (maybeFunctionCallName) {
329
+ functionCallName = maybeFunctionCallName;
323
330
  }
324
- if (value.choices[0].delta.tool_calls[0].function.arguments) {
325
- functionCallArguments += value.choices[0].delta.tool_calls[0].function.arguments;
331
+ const maybeFunctionCallArguments = mode.function.arguments;
332
+ if (maybeFunctionCallArguments) {
333
+ functionCallArguments += maybeFunctionCallArguments;
326
334
  }
327
- if (value.choices[0].delta.tool_calls[0].function.scope) {
328
- functionCallScope = value.choices[0].delta.tool_calls[0].function.scope;
335
+ const maybeFunctionCallScope = mode.function.scope;
336
+ if (maybeFunctionCallScope) {
337
+ functionCallScope = maybeFunctionCallScope;
329
338
  }
330
339
  controller.enqueue({
331
340
  type: "partial",
@@ -537,7 +546,8 @@ var EXCLUDE_FROM_FORWARD_PROPS_KEYS = "exclude_from_forward_props_keys";
537
546
 
538
547
  // src/constants/index.ts
539
548
  var COPILOT_CLOUD_API_URL = "https://api.cloud.copilotkit.ai";
540
- var COPILOT_CLOUD_CHAT_URL = `${COPILOT_CLOUD_API_URL}/copilotkit/chat/complete`;
549
+ var COPILOT_CLOUD_VERSION = "v1";
550
+ var COPILOT_CLOUD_CHAT_URL = `${COPILOT_CLOUD_API_URL}/${COPILOT_CLOUD_VERSION}/copilotkit/runtime/chat`;
541
551
  var COPILOT_CLOUD_PUBLIC_API_KEY_HEADER = "X-CopilotCloud-Public-Api-Key";
542
552
  // Annotate the CommonJS export names for ESM import in node:
543
553
  0 && (module.exports = {
@@ -545,6 +555,7 @@ var COPILOT_CLOUD_PUBLIC_API_KEY_HEADER = "X-CopilotCloud-Public-Api-Key";
545
555
  COPILOT_CLOUD_API_URL,
546
556
  COPILOT_CLOUD_CHAT_URL,
547
557
  COPILOT_CLOUD_PUBLIC_API_KEY_HEADER,
558
+ COPILOT_CLOUD_VERSION,
548
559
  EXCLUDE_FROM_FORWARD_PROPS_KEYS,
549
560
  StreamStringPrefixes,
550
561
  actionToChatCompletionFunction,