@xsai/utils-chat 0.0.30 → 0.0.31

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/index.d.ts CHANGED
@@ -5,18 +5,20 @@ declare const system: <C extends string | SystemMessagePart[]>(content: C) => Sy
5
5
  declare const user: <C extends Array<UserMessagePart> | string>(content: C) => UserMessage;
6
6
  declare const textPart: (text: string) => TextPart;
7
7
  declare const imagePart: (url: string) => ImagePart;
8
- declare const assistant: <C extends AssistantMessagePart[] | string | ToolCall>(content: C) => AssistantMessage;
8
+ declare const isToolCall: (content: AssistantMessagePart[] | string | ToolCall | ToolCall[]) => content is ToolCall | ToolCall[];
9
+ declare const assistant: <C extends AssistantMessagePart[] | string | ToolCall | ToolCall[]>(content: C) => AssistantMessage;
9
10
  declare const tool: <C extends string | ToolMessagePart[]>(content: C, toolCall: ToolCall) => ToolMessage;
10
11
 
11
12
  declare const message_assistant: typeof assistant;
12
13
  declare const message_imagePart: typeof imagePart;
14
+ declare const message_isToolCall: typeof isToolCall;
13
15
  declare const message_messages: typeof messages;
14
16
  declare const message_system: typeof system;
15
17
  declare const message_textPart: typeof textPart;
16
18
  declare const message_tool: typeof tool;
17
19
  declare const message_user: typeof user;
18
20
  declare namespace message {
19
- export { message_assistant as assistant, message_imagePart as imagePart, message_messages as messages, message_system as system, message_textPart as textPart, message_tool as tool, message_user as user };
21
+ export { message_assistant as assistant, message_imagePart as imagePart, message_isToolCall as isToolCall, message_messages as messages, message_system as system, message_textPart as textPart, message_tool as tool, message_user as user };
20
22
  }
21
23
 
22
24
  export { message };
package/dist/index.js CHANGED
@@ -3,7 +3,18 @@ const system = (content) => ({ content, role: "system" });
3
3
  const user = (content) => ({ content, role: "user" });
4
4
  const textPart = (text) => ({ text, type: "text" });
5
5
  const imagePart = (url) => ({ image_url: { url }, type: "image_url" });
6
- const assistant = (content) => typeof content === "string" || Array.isArray(content) ? { content, role: "assistant" } : { role: "assistant", tool_calls: [content] };
6
+ const isToolCall = (content) => {
7
+ const isElementToolCallLike = (c) => {
8
+ return typeof c === "object" && ("type" in c && c.type === "function" && "id" in c && "function" in c && typeof c.function === "object");
9
+ };
10
+ return isElementToolCallLike(content) || Array.isArray(content) && content.every((part) => isElementToolCallLike(part));
11
+ };
12
+ const assistant = (content) => {
13
+ if (isToolCall(content)) {
14
+ return Array.isArray(content) ? { role: "assistant", tool_calls: content } : { role: "assistant", tool_calls: [content] };
15
+ }
16
+ return { content, role: "assistant" };
17
+ };
7
18
  const tool = (content, toolCall) => ({
8
19
  content,
9
20
  role: "tool",
@@ -14,6 +25,7 @@ var message = /*#__PURE__*/Object.freeze({
14
25
  __proto__: null,
15
26
  assistant: assistant,
16
27
  imagePart: imagePart,
28
+ isToolCall: isToolCall,
17
29
  messages: messages,
18
30
  system: system,
19
31
  textPart: textPart,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@xsai/utils-chat",
3
3
  "type": "module",
4
- "version": "0.0.30",
4
+ "version": "0.0.31",
5
5
  "description": "extra-small AI SDK for Browser, Node.js, Deno, Bun or Edge Runtime.",
6
6
  "author": "Moeru AI",
7
7
  "license": "MIT",