@antdv-next/x-sdk 0.0.1 → 0.0.2

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 (54) hide show
  1. package/dist/_util/resolveMaybeRef.d.ts +2 -0
  2. package/dist/_util/resolveMaybeRef.js +7 -0
  3. package/dist/_util/types.js +0 -0
  4. package/dist/chat-providers/AbstractChatProvider.d.ts +2 -2
  5. package/dist/chat-providers/AbstractChatProvider.js +42 -0
  6. package/dist/chat-providers/DeepSeekChatProvider.d.ts +2 -2
  7. package/dist/chat-providers/DeepSeekChatProvider.js +59 -0
  8. package/dist/chat-providers/DefaultChatProvider.d.ts +2 -2
  9. package/dist/chat-providers/DefaultChatProvider.js +26 -0
  10. package/dist/chat-providers/OpenAIChatProvider.d.ts +2 -2
  11. package/dist/chat-providers/OpenAIChatProvider.js +49 -0
  12. package/dist/chat-providers/index.js +4 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.js +7 -3
  15. package/dist/node_modules/vitest/dist/@vitest/expect/index.js +1456 -0
  16. package/dist/node_modules/vitest/dist/@vitest/pretty-format/index.js +884 -0
  17. package/dist/node_modules/vitest/dist/@vitest/runner/chunk-artifact.js +1543 -0
  18. package/dist/node_modules/vitest/dist/@vitest/snapshot/index.js +660 -0
  19. package/dist/node_modules/vitest/dist/@vitest/spy/index.js +384 -0
  20. package/dist/node_modules/vitest/dist/@vitest/utils/chunk-pathe.M-eThtNZ.js +80 -0
  21. package/dist/node_modules/vitest/dist/@vitest/utils/diff.js +1304 -0
  22. package/dist/node_modules/vitest/dist/@vitest/utils/display.js +556 -0
  23. package/dist/node_modules/vitest/dist/@vitest/utils/error.js +27 -0
  24. package/dist/node_modules/vitest/dist/@vitest/utils/helpers.js +179 -0
  25. package/dist/node_modules/vitest/dist/@vitest/utils/offset.js +25 -0
  26. package/dist/node_modules/vitest/dist/@vitest/utils/serialize.js +75 -0
  27. package/dist/node_modules/vitest/dist/@vitest/utils/source-map.js +371 -0
  28. package/dist/node_modules/vitest/dist/@vitest/utils/timers.js +35 -0
  29. package/dist/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +4 -0
  30. package/dist/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +50 -0
  31. package/dist/node_modules/vitest/dist/chunks/test.CBQUpOM3.js +2640 -0
  32. package/dist/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +42 -0
  33. package/dist/node_modules/vitest/dist/vendor/chai.js +2872 -0
  34. package/dist/node_modules/vitest/dist/vendor/magic-string.js +1009 -0
  35. package/dist/node_modules/vitest/dist/vendor/tinyrainbow.js +84 -0
  36. package/dist/x-chat/__tests__/index.test.d.ts +1 -0
  37. package/dist/x-chat/__tests__/index.test.js +257 -0
  38. package/dist/x-chat/index.d.ts +14 -23
  39. package/dist/x-chat/index.js +83 -66
  40. package/dist/x-chat/store.d.ts +2 -0
  41. package/dist/{store-C1diHqNH.js → x-chat/store.js} +15 -9
  42. package/dist/x-conversations/__tests__/index.test.d.ts +1 -0
  43. package/dist/x-conversations/__tests__/index.test.js +36 -0
  44. package/dist/x-conversations/index.d.ts +4 -4
  45. package/dist/x-conversations/index.js +37 -1
  46. package/dist/{x-conversations-BrKWhj5r.js → x-conversations/store.js} +2 -31
  47. package/dist/x-request/__tests__/index.test.d.ts +1 -0
  48. package/dist/x-request/__tests__/index.test.js +90 -0
  49. package/dist/x-request/index.d.ts +36 -11
  50. package/dist/x-request/index.js +246 -1
  51. package/dist/x-request/x-fetch.js +18 -0
  52. package/package.json +1 -1
  53. package/dist/chat-providers-5x9Va7p5.js +0 -167
  54. package/dist/x-request-BSFGaKND.js +0 -234
@@ -0,0 +1,2 @@
1
+ import { MaybeRef } from 'vue';
2
+ export default function resolveMaybeRef<T>(value: MaybeRef<T> | undefined): T | undefined;
@@ -0,0 +1,7 @@
1
+ import { isRef } from "vue";
2
+ //#region src/_util/resolveMaybeRef.ts
3
+ function resolveMaybeRef(value) {
4
+ return isRef(value) ? value.value : value;
5
+ }
6
+ //#endregion
7
+ export { resolveMaybeRef as default };
File without changes
@@ -1,5 +1,5 @@
1
1
  import { MessageStatus, SimpleType } from '../x-chat';
2
- import { AbstractXRequestClass, XRequestOptions } from '../x-request';
2
+ import { AbstractXRequestClass, XRequestConfigOptions } from '../x-request';
3
3
  export interface ChatProviderConfig<Input, Output, ChatMessage extends SimpleType = any> {
4
4
  request: AbstractXRequestClass<Input, Output, ChatMessage> | (() => AbstractXRequestClass<Input, Output, ChatMessage>);
5
5
  }
@@ -21,7 +21,7 @@ export default abstract class AbstractChatProvider<ChatMessage extends SimpleTyp
21
21
  * @param requestParams 请求参数
22
22
  * @param options 请求配置,从Provider实例化时request配置中来
23
23
  */
24
- abstract transformParams(requestParams: Partial<Input>, options: XRequestOptions<Input, Output, ChatMessage>): Input;
24
+ abstract transformParams(requestParams: Partial<Input>, options: XRequestConfigOptions<Input, Output, ChatMessage>): Input;
25
25
  /**
26
26
  * 将onRequest传入的参数转换为本地(用户发送)的ChatMessage,用于消息渲染
27
27
  * @param requestParams onRequest传入的参数
@@ -0,0 +1,42 @@
1
+ //#region src/chat-providers/AbstractChatProvider.ts
2
+ var AbstractChatProvider = class {
3
+ _request;
4
+ _getMessagesFn;
5
+ _originalCallbacks;
6
+ get request() {
7
+ return this._request;
8
+ }
9
+ constructor(config) {
10
+ const request = typeof config.request === "function" ? config.request() : config.request;
11
+ if (!request.manual) throw new Error("request must be manual");
12
+ this._request = request;
13
+ this._originalCallbacks = this._request.options?.callbacks;
14
+ }
15
+ getMessages() {
16
+ return this?._getMessagesFn();
17
+ }
18
+ injectGetMessages(getMessages) {
19
+ this._getMessagesFn = getMessages;
20
+ }
21
+ injectRequest({ onUpdate, onSuccess, onError }) {
22
+ const originalOnUpdate = this._originalCallbacks?.onUpdate;
23
+ const originalOnSuccess = this._originalCallbacks?.onSuccess;
24
+ const originalOnError = this._originalCallbacks?.onError;
25
+ this._request.options.callbacks = {
26
+ onUpdate: (data, responseHeaders) => {
27
+ const msg = onUpdate(data, responseHeaders);
28
+ if (originalOnUpdate) originalOnUpdate(data, responseHeaders, msg);
29
+ },
30
+ onSuccess: (data, responseHeaders) => {
31
+ const msg = onSuccess(data, responseHeaders);
32
+ if (originalOnSuccess) originalOnSuccess(data, responseHeaders, msg);
33
+ },
34
+ onError: (error, errorInfo, responseHeaders) => {
35
+ const fallbackMsg = onError(error, errorInfo);
36
+ if (originalOnError) originalOnError(error, errorInfo, responseHeaders, fallbackMsg);
37
+ }
38
+ };
39
+ }
40
+ };
41
+ //#endregion
42
+ export { AbstractChatProvider as default };
@@ -1,4 +1,4 @@
1
- import { XRequestOptions } from '../x-request';
1
+ import { XRequestConfigOptions } from '../x-request';
2
2
  import { SSEFields } from '../x-stream';
3
3
  import { TransformMessage, default as AbstractChatProvider } from './AbstractChatProvider';
4
4
  import { XModelMessage, XModelParams } from './types/model';
@@ -9,7 +9,7 @@ import { XModelMessage, XModelParams } from './types/model';
9
9
  * @template Output 响应数据类型
10
10
  */
11
11
  export default class DeepSeekChatProvider<ChatMessage extends XModelMessage = XModelMessage, Input extends XModelParams = XModelParams, Output extends Partial<Record<SSEFields, any>> = Partial<Record<SSEFields, any>>> extends AbstractChatProvider<ChatMessage, Input, Output> {
12
- transformParams(requestParams: Partial<Input>, options: XRequestOptions<Input, Output, ChatMessage>): Input;
12
+ transformParams(requestParams: Partial<Input>, options: XRequestConfigOptions<Input, Output, ChatMessage>): Input;
13
13
  transformLocalMessage(requestParams: Partial<Input>): ChatMessage[];
14
14
  transformMessage(info: TransformMessage<ChatMessage, Output>): ChatMessage;
15
15
  }
@@ -0,0 +1,59 @@
1
+ import resolveMaybeRef from "../_util/resolveMaybeRef.js";
2
+ import AbstractChatProvider from "./AbstractChatProvider.js";
3
+ //#region src/chat-providers/DeepSeekChatProvider.ts
4
+ /**
5
+ * DeepSeek Chat Provider
6
+ * @template ChatMessage 消息类型
7
+ * @template Input 请求参数类型
8
+ * @template Output 响应数据类型
9
+ */
10
+ var DeepSeekChatProvider = class extends AbstractChatProvider {
11
+ transformParams(requestParams, options) {
12
+ return {
13
+ ...resolveMaybeRef(options?.params),
14
+ ...requestParams,
15
+ messages: this.getMessages()
16
+ };
17
+ }
18
+ transformLocalMessage(requestParams) {
19
+ return requestParams?.messages || [];
20
+ }
21
+ transformMessage(info) {
22
+ const { originMessage, chunk, responseHeaders } = info;
23
+ let currentContent = "";
24
+ let currentThink = "";
25
+ let role = "assistant";
26
+ try {
27
+ let message;
28
+ if (responseHeaders.get("content-type")?.includes("text/event-stream")) {
29
+ if (chunk && chunk.data?.trim() !== "[DONE]") message = JSON.parse(chunk.data);
30
+ } else message = chunk;
31
+ if (message) message?.choices?.forEach((choice) => {
32
+ if (choice?.delta) {
33
+ currentThink = choice.delta.reasoning_content || "";
34
+ currentContent += choice.delta.content || "";
35
+ role = choice.delta.role;
36
+ } else if (choice?.message) {
37
+ currentThink = choice.message.reasoning_content || "";
38
+ currentContent += choice.message.content || "";
39
+ role = choice.message.role;
40
+ }
41
+ });
42
+ } catch (error) {
43
+ console.error("transformMessage error", error);
44
+ }
45
+ let content = "";
46
+ let originMessageContent = typeof originMessage?.content === "string" ? originMessage?.content : originMessage?.content.text || "";
47
+ if (!originMessageContent && currentThink) content = `\n\n<think>\n\n${currentThink?.replace?.(/^\n{0,2}/, "")}`;
48
+ else if (originMessageContent.includes("<think>") && !originMessageContent.includes("</think>") && currentContent) {
49
+ originMessageContent = originMessageContent.replace("<think>", "<think status=\"done\">");
50
+ content = `${originMessageContent?.replace?.(/[\s\n]{0,2}$/, "")}\n\n</think>\n\n${currentContent}`;
51
+ } else content = `${originMessageContent || ""}${currentThink}${currentContent}`;
52
+ return {
53
+ content,
54
+ role: role || "assistant"
55
+ };
56
+ }
57
+ };
58
+ //#endregion
59
+ export { DeepSeekChatProvider as default };
@@ -1,8 +1,8 @@
1
1
  import { SimpleType } from '../x-chat';
2
- import { XRequestOptions } from '../x-request';
2
+ import { XRequestConfigOptions } from '../x-request';
3
3
  import { TransformMessage, default as AbstractChatProvider } from './AbstractChatProvider';
4
4
  export default class DefaultChatProvider<ChatMessage extends SimpleType, Input, Output> extends AbstractChatProvider<ChatMessage, Input, Output> {
5
- transformParams(requestParams: ChatMessage & Partial<Input>, options: XRequestOptions<Input, Output, ChatMessage>): Input;
5
+ transformParams(requestParams: ChatMessage & Partial<Input>, options: XRequestConfigOptions<Input, Output, ChatMessage>): Input;
6
6
  transformLocalMessage(requestParams: Partial<Input>): ChatMessage;
7
7
  transformMessage(info: TransformMessage<ChatMessage, Output>): ChatMessage;
8
8
  }
@@ -0,0 +1,26 @@
1
+ import resolveMaybeRef from "../_util/resolveMaybeRef.js";
2
+ import AbstractChatProvider from "./AbstractChatProvider.js";
3
+ //#region src/chat-providers/DefaultChatProvider.ts
4
+ var DefaultChatProvider = class extends AbstractChatProvider {
5
+ transformParams(requestParams, options) {
6
+ if (typeof requestParams !== "object") throw new Error("requestParams must be an object");
7
+ return {
8
+ ...resolveMaybeRef(options?.params),
9
+ ...requestParams
10
+ };
11
+ }
12
+ transformLocalMessage(requestParams) {
13
+ return requestParams;
14
+ }
15
+ transformMessage(info) {
16
+ const { chunk, chunks, originMessage } = info;
17
+ if (chunk) return chunk;
18
+ if (Array.isArray(chunks)) {
19
+ const chunk = chunks?.length > 0 ? chunks?.[chunks?.length - 1] : void 0;
20
+ return originMessage ? originMessage : chunk;
21
+ }
22
+ return chunks;
23
+ }
24
+ };
25
+ //#endregion
26
+ export { DefaultChatProvider as default };
@@ -1,4 +1,4 @@
1
- import { XRequestOptions } from '../x-request';
1
+ import { XRequestConfigOptions } from '../x-request';
2
2
  import { SSEFields } from '../x-stream';
3
3
  import { TransformMessage, default as AbstractChatProvider } from './AbstractChatProvider';
4
4
  import { XModelMessage, XModelParams } from './types/model';
@@ -9,7 +9,7 @@ import { XModelMessage, XModelParams } from './types/model';
9
9
  * @template Output 响应数据类型
10
10
  */
11
11
  export default class OpenAIChatProvider<ChatMessage extends XModelMessage = XModelMessage, Input extends XModelParams = XModelParams, Output extends Partial<Record<SSEFields, any>> = Partial<Record<SSEFields, any>>> extends AbstractChatProvider<ChatMessage, Input, Output> {
12
- transformParams(requestParams: Partial<Input>, options: XRequestOptions<Input, Output, ChatMessage>): Input;
12
+ transformParams(requestParams: Partial<Input>, options: XRequestConfigOptions<Input, Output, ChatMessage>): Input;
13
13
  transformLocalMessage(requestParams: Partial<Input>): ChatMessage[];
14
14
  transformMessage(info: TransformMessage<ChatMessage, Output>): ChatMessage;
15
15
  }
@@ -0,0 +1,49 @@
1
+ import resolveMaybeRef from "../_util/resolveMaybeRef.js";
2
+ import AbstractChatProvider from "./AbstractChatProvider.js";
3
+ //#region src/chat-providers/OpenAIChatProvider.ts
4
+ /**
5
+ * LLM OpenAI Compatible Chat Provider
6
+ * @template ChatMessage 消息类型
7
+ * @template Input 请求参数类型
8
+ * @template Output 响应数据类型
9
+ */
10
+ var OpenAIChatProvider = class extends AbstractChatProvider {
11
+ transformParams(requestParams, options) {
12
+ return {
13
+ ...resolveMaybeRef(options?.params),
14
+ ...requestParams,
15
+ messages: this.getMessages()
16
+ };
17
+ }
18
+ transformLocalMessage(requestParams) {
19
+ return requestParams?.messages || [];
20
+ }
21
+ transformMessage(info) {
22
+ const { originMessage, chunk, responseHeaders } = info;
23
+ let currentContent = "";
24
+ let role = "assistant";
25
+ try {
26
+ let message;
27
+ if (responseHeaders.get("content-type")?.includes("text/event-stream")) {
28
+ if (chunk && chunk.data?.trim() !== "[DONE]") message = JSON.parse(chunk.data);
29
+ } else message = chunk;
30
+ if (message) message?.choices?.forEach((choice) => {
31
+ if (choice?.delta) {
32
+ currentContent += choice.delta.content || "";
33
+ role = choice.delta.role || "assistant";
34
+ } else if (choice?.message) {
35
+ currentContent += choice.message.content || "";
36
+ role = choice.message.role || "assistant";
37
+ }
38
+ });
39
+ } catch (error) {
40
+ console.error("transformMessage error", error);
41
+ }
42
+ return {
43
+ content: `${originMessage?.content || ""}${currentContent || ""}`,
44
+ role
45
+ };
46
+ }
47
+ };
48
+ //#endregion
49
+ export { OpenAIChatProvider as default };
@@ -1,2 +1,5 @@
1
- import { i as AbstractChatProvider, n as DefaultChatProvider, r as DeepSeekChatProvider, t as OpenAIChatProvider } from "../chat-providers-5x9Va7p5.js";
1
+ import AbstractChatProvider from "./AbstractChatProvider.js";
2
+ import DeepSeekChatProvider from "./DeepSeekChatProvider.js";
3
+ import DefaultChatProvider from "./DefaultChatProvider.js";
4
+ import OpenAIChatProvider from "./OpenAIChatProvider.js";
2
5
  export { AbstractChatProvider, DeepSeekChatProvider, DefaultChatProvider, OpenAIChatProvider };
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ export type { DefaultMessageInfo, MessageInfo } from './x-chat';
4
4
  export { default as useXChat } from './x-chat';
5
5
  export type { ConversationData } from './x-conversations';
6
6
  export { default as useXConversations } from './x-conversations';
7
- export type { XRequestCallbacks, XRequestClass, XRequestFunction, XRequestGlobalOptions, XRequestOptions, } from './x-request';
7
+ export type { XRequestCallbacks, XRequestConfigOptions, XRequestClass, XRequestFunction, XRequestGlobalOptions, XRequestOptions, } from './x-request';
8
8
  export { AbstractXRequestClass, default as XRequest, setXRequestGlobalOptions, } from './x-request';
9
9
  export type { SSEFields, SSEOutput, XReadableStream, XStreamOptions, } from './x-stream';
10
10
  export { default as XStream } from './x-stream';
package/dist/index.js CHANGED
@@ -1,8 +1,12 @@
1
- import { i as AbstractChatProvider, n as DefaultChatProvider, r as DeepSeekChatProvider, t as OpenAIChatProvider } from "./chat-providers-5x9Va7p5.js";
1
+ import AbstractChatProvider from "./chat-providers/AbstractChatProvider.js";
2
+ import DeepSeekChatProvider from "./chat-providers/DeepSeekChatProvider.js";
3
+ import DefaultChatProvider from "./chat-providers/DefaultChatProvider.js";
4
+ import OpenAIChatProvider from "./chat-providers/OpenAIChatProvider.js";
5
+ import "./chat-providers/index.js";
2
6
  import XStream from "./x-stream/index.js";
3
- import { i as setXRequestGlobalOptions, n as XRequest, t as AbstractXRequestClass } from "./x-request-BSFGaKND.js";
7
+ import XRequest, { AbstractXRequestClass, setXRequestGlobalOptions } from "./x-request/index.js";
4
8
  import useXChat from "./x-chat/index.js";
5
- import { t as useXConversations } from "./x-conversations-BrKWhj5r.js";
9
+ import useXConversations from "./x-conversations/index.js";
6
10
  //#region src/index.ts
7
11
  var XSdkClient = class {
8
12
  baseURL;