@chat-lab/ui 0.1.0-beta.15 → 0.1.0-beta.16
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/components/assistant-ui/markdown-text.cjs +9 -9
- package/dist/components/assistant-ui/markdown-text.cjs.map +1 -1
- package/dist/components/assistant-ui/markdown-text.js +9 -9
- package/dist/components/assistant-ui/markdown-text.js.map +1 -1
- package/dist/packages/core/dist/index.cjs +2 -0
- package/dist/packages/core/dist/index.cjs.map +1 -1
- package/dist/packages/core/dist/index.js +2 -0
- package/dist/packages/core/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -10,10 +10,10 @@ var utils = require('../../lib/utils.cjs');
|
|
|
10
10
|
var shikiHighlighter = require('./shiki-highlighter.cjs');
|
|
11
11
|
var useDebounce = require('../../hooks/useDebounce.cjs');
|
|
12
12
|
var schema$1 = require('../../node_modules/.pnpm/hast-util-sanitize@5.0.2/node_modules/hast-util-sanitize/lib/schema.cjs');
|
|
13
|
+
var loaderCircle = require('../../node_modules/.pnpm/lucide-react@0.552.0_react@17.0.2/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs');
|
|
13
14
|
var index = require('../../node_modules/.pnpm/remark-gfm@4.0.1/node_modules/remark-gfm/lib/index.cjs');
|
|
14
15
|
var index$1 = require('../../node_modules/.pnpm/rehype-raw@7.0.0/node_modules/rehype-raw/lib/index.cjs');
|
|
15
16
|
var index$2 = require('../../node_modules/.pnpm/rehype-sanitize@6.0.0/node_modules/rehype-sanitize/lib/index.cjs');
|
|
16
|
-
var loaderCircle = require('../../node_modules/.pnpm/lucide-react@0.552.0_react@17.0.2/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs');
|
|
17
17
|
var copy = require('../../node_modules/.pnpm/lucide-react@0.552.0_react@17.0.2/node_modules/lucide-react/dist/esm/icons/copy.cjs');
|
|
18
18
|
var check = require('../../node_modules/.pnpm/lucide-react@0.552.0_react@17.0.2/node_modules/lucide-react/dist/esm/icons/check.cjs');
|
|
19
19
|
|
|
@@ -46,14 +46,14 @@ const schema = {
|
|
|
46
46
|
source: ["src", "type"],
|
|
47
47
|
},
|
|
48
48
|
};
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
//
|
|
54
|
-
|
|
49
|
+
const remarkPlugins = [index];
|
|
50
|
+
const rehypePlugins = [
|
|
51
|
+
index$1,
|
|
52
|
+
[index$2, schema],
|
|
53
|
+
// rehypeAppendCursor,
|
|
54
|
+
];
|
|
55
55
|
const MarkdownTextImpl = () => {
|
|
56
|
-
return (jsxRuntime.jsx(MarkdownText$1.MarkdownTextPrimitive, { remarkPlugins:
|
|
56
|
+
return (jsxRuntime.jsx(MarkdownText$1.MarkdownTextPrimitive, { remarkPlugins: remarkPlugins, rehypePlugins: rehypePlugins, className: "aui-md", components: defaultComponents }));
|
|
57
57
|
};
|
|
58
58
|
const MarkdownText = React.memo(MarkdownTextImpl);
|
|
59
59
|
const CodeHeader = ({ language, code }) => {
|
|
@@ -64,7 +64,7 @@ const CodeHeader = ({ language, code }) => {
|
|
|
64
64
|
return;
|
|
65
65
|
copyToClipboard(code);
|
|
66
66
|
};
|
|
67
|
-
return (jsxRuntime.jsxs("div", { className: "aui-code-header-root mt-4 flex items-center justify-between gap-4 rounded-t-lg border bg-muted-foreground/15 px-4 py-2 text-sm font-semibold text-foreground w-
|
|
67
|
+
return (jsxRuntime.jsxs("div", { className: "aui-code-header-root mt-4 flex items-center justify-between gap-4 rounded-t-lg border bg-muted-foreground/15 px-4 py-2 text-sm font-semibold text-foreground max-w-[800px]", children: [jsxRuntime.jsx("span", { className: "aui-code-header-language lowercase [&>span]:text-xs", children: processedLanguage }), jsxRuntime.jsxs(tooltipIconButton.TooltipIconButton, { tooltip: "Copy", onClick: onCopy, children: [!isCopied && jsxRuntime.jsx(copy.default, {}), isCopied && jsxRuntime.jsx(check.default, {})] })] }));
|
|
68
68
|
};
|
|
69
69
|
const Video = ({ src, className, ...props }) => {
|
|
70
70
|
const debouncedSrc = useDebounce.useDebounce(src, 500);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-text.cjs","sources":["../../../src/components/assistant-ui/markdown-text.tsx"],"sourcesContent":["\"use client\";\n\nimport \"@assistant-ui/react-markdown/styles/dot.css\";\n\nimport {\n type CodeHeaderProps,\n MarkdownTextPrimitive,\n unstable_memoizeMarkdownComponents as memoizeMarkdownComponents,\n useIsMarkdownCodeBlock,\n} from \"@assistant-ui/react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport rehypeRaw from \"rehype-raw\";\nimport rehypeSanitize, { defaultSchema } from \"rehype-sanitize\";\nimport { type FC, memo, useState } from \"react\";\nimport { CheckIcon, CopyIcon, Loader2 } from \"lucide-react\";\nimport \"./index.less\";\nimport { TooltipIconButton } from \"@/components/assistant-ui/tooltip-icon-button\";\nimport { cn } from \"@/lib/utils\";\nimport { SyntaxHighlighter } from \"./shiki-highlighter\";\nimport { useDebounce } from \"@/hooks/useDebounce\";\nimport remarkLoadingImage from \"@/utils/imageLoadingPlugin\";\nimport { rehypeAppendCursor } from \"@/utils/markdownCursorPlugin\";\nimport { PluggableList } from \"unified\";\n\nconst schema = {\n ...defaultSchema,\n // 1. 添加标签到白名单\n tagNames: [...(defaultSchema.tagNames || []), \"video\", \"source\"],\n // 2. 添加允许的属性\n attributes: {\n ...defaultSchema.attributes,\n // 允许 video 标签使用的属性\n video: [\n \"controls\",\n \"width\",\n \"height\",\n \"poster\",\n \"preload\",\n \"src\",\n \"muted\",\n \"loop\",\n \"autoPlay\",\n \"playsInline\",\n ],\n div: [\n ...(defaultSchema.attributes?.div || []),\n \"className\", //\n \"data-content\", // 如果你在插件里用了 data-content\n ],\n // 允许 source 标签使用的属性\n source: [\"src\", \"type\"],\n },\n};\n\n// const remarkPlugins: PluggableList = [remarkGfm, remarkLoadingImage];\n\n// const rehypePlugins: PluggableList = [\n// rehypeRaw,\n// [rehypeSanitize, schema],\n// // rehypeAppendCursor,\n// ];\nconst MarkdownTextImpl = () => {\n return (\n <MarkdownTextPrimitive\n remarkPlugins={[remarkGfm]}\n rehypePlugins={[rehypeRaw, [rehypeSanitize, schema]]}\n className=\"aui-md\"\n components={defaultComponents}\n />\n );\n};\n\nexport const MarkdownText = memo(MarkdownTextImpl);\n\nconst CodeHeader: FC<CodeHeaderProps> = ({ language, code }) => {\n const { isCopied, copyToClipboard } = useCopyToClipboard();\n const processedLanguage = language == \"unknown\" ? \"text\" : language;\n const onCopy = () => {\n if (!code || isCopied) return;\n copyToClipboard(code);\n };\n\n return (\n <div className=\"aui-code-header-root mt-4 flex items-center justify-between gap-4 rounded-t-lg border bg-muted-foreground/15 px-4 py-2 text-sm font-semibold text-foreground w-max-[800px]\">\n <span className=\"aui-code-header-language lowercase [&>span]:text-xs\">\n {processedLanguage}\n </span>\n <TooltipIconButton tooltip=\"Copy\" onClick={onCopy}>\n {!isCopied && <CopyIcon />}\n {isCopied && <CheckIcon />}\n </TooltipIconButton>\n </div>\n );\n};\n\nconst Video = ({\n src,\n className,\n ...props\n}: {\n src?: string;\n className?: string;\n}) => {\n const debouncedSrc = useDebounce(src, 500);\n return (\n <video\n src={debouncedSrc}\n style={{ maxWidth: 600 }}\n className={cn(\"aui-md-video max-w-full rounded-lg\", className)}\n controls\n {...props}\n />\n );\n};\n\nconst useCopyToClipboard = ({\n copiedDuration = 3000,\n}: {\n copiedDuration?: number;\n} = {}) => {\n const [isCopied, setIsCopied] = useState<boolean>(false);\n\n const copyToClipboard = (value: string) => {\n if (!value) return;\n\n navigator.clipboard.writeText(value).then(() => {\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), copiedDuration);\n });\n };\n\n return { isCopied, copyToClipboard };\n};\n\nconst defaultComponents = memoizeMarkdownComponents({\n h1: ({ className, ...props }) => (\n <h1\n className={cn(\n \"aui-md-h1 mb-8 scroll-m-20 text-4xl font-extrabold tracking-tight last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h2: ({ className, ...props }) => (\n <h2\n className={cn(\n \"aui-md-h2 mt-8 mb-4 scroll-m-20 text-3xl font-semibold tracking-tight first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h3: ({ className, ...props }) => (\n <h3\n className={cn(\n \"aui-md-h3 mt-6 mb-4 scroll-m-20 text-2xl font-semibold tracking-tight first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h4: ({ className, ...props }) => (\n <h4\n className={cn(\n \"aui-md-h4 mt-6 mb-4 scroll-m-20 text-xl font-semibold tracking-tight first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h5: ({ className, ...props }) => (\n <h5\n className={cn(\n \"aui-md-h5 my-4 text-lg font-semibold first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h6: ({ className, ...props }) => (\n <h6\n className={cn(\n \"aui-md-h6 my-4 font-semibold first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n p: ({ className, ...props }) => (\n <p\n className={cn(\n \"aui-md-p mt-5 mb-5 leading-7 first:mt-0 last:mb-0 chatkit-md-text-p\",\n className\n )}\n {...props}\n />\n ),\n image: ({ className, ...props }) => {\n return (\n <img\n src={props.href}\n style={{ maxWidth: 400 }}\n className={cn(\"aui-md-img max-w-full rounded-lg\", className)}\n />\n );\n },\n a: ({ className, ...props }) => {\n const isVideo = (href: string | undefined) => {\n if (!href) return false;\n const videoExtensions = [\n \".mp4\",\n \".avi\",\n \".mov\",\n \".wmv\",\n \".flv\",\n \".webm\",\n \".mkv\",\n \".m4v\",\n ];\n return videoExtensions.some((ext) => href.toLowerCase().includes(ext));\n };\n\n if (isVideo(props.href)) {\n return (\n <>\n <a\n className={cn(\n \"aui-md-a font-medium text-primary underline underline-offset-4\",\n className\n )}\n {...props}\n />\n <Video src={props.href} className={className} {...props} />\n </>\n );\n }\n\n return (\n <a\n className={cn(\n \"aui-md-a font-medium text-primary underline underline-offset-4\",\n className\n )}\n {...props}\n />\n );\n },\n video: ({ className, ...props }) => {\n return <Video className={className} {...props} />;\n },\n blockquote: ({ className, ...props }) => (\n <blockquote\n className={cn(\"aui-md-blockquote border-l-2 pl-6 italic\", className)}\n {...props}\n />\n ),\n ul: ({ className, ...props }) => (\n <ul\n className={cn(\"aui-md-ul my-5 ml-6 list-disc [&>li]:mt-2\", className)}\n {...props}\n />\n ),\n ol: ({ className, ...props }) => (\n <ol\n className={cn(\"aui-md-ol my-5 ml-6 list-decimal [&>li]:mt-2\", className)}\n {...props}\n />\n ),\n hr: ({ className, ...props }) => (\n <hr className={cn(\"aui-md-hr my-5 border-b\", className)} {...props} />\n ),\n table: ({ className, ...props }) => (\n <table\n className={cn(\n \"aui-md-table my-5 w-full border-separate border-spacing-0 overflow-y-auto\",\n className\n )}\n {...props}\n />\n ),\n th: ({ className, ...props }) => (\n <th\n className={cn(\n \"aui-md-th bg-muted px-4 py-2 text-left font-bold first:rounded-tl-lg last:rounded-tr-lg [&[align=center]]:text-center [&[align=right]]:text-right\",\n className\n )}\n {...props}\n />\n ),\n td: ({ className, ...props }) => (\n <td\n className={cn(\n \"aui-md-td border-b border-l px-4 py-2 text-left last:border-r [&[align=center]]:text-center [&[align=right]]:text-right\",\n className\n )}\n {...props}\n />\n ),\n tr: ({ className, ...props }) => (\n <tr\n className={cn(\n \"aui-md-tr m-0 border-b p-0 first:border-t [&:last-child>td:first-child]:rounded-bl-lg [&:last-child>td:last-child]:rounded-br-lg\",\n className\n )}\n {...props}\n />\n ),\n sup: ({ className, ...props }) => (\n <sup\n className={cn(\"aui-md-sup [&>a]:text-xs [&>a]:no-underline\", className)}\n {...props}\n />\n ),\n SyntaxHighlighter: SyntaxHighlighter,\n pre: ({ className, ...props }) => (\n <pre\n className={cn(\n \"aui-md-pre overflow-x-auto !rounded-t-none rounded-b-lg bg-black p-4 text-white\",\n className\n )}\n {...props}\n />\n ),\n code: function Code({ className, ...props }) {\n const isCodeBlock = useIsMarkdownCodeBlock();\n return (\n <code\n className={cn(\n !isCodeBlock &&\n \"aui-md-inline-code rounded border bg-muted font-semibold\",\n className\n )}\n {...props}\n />\n );\n },\n CodeHeader,\n div: ({ className, ...props }) => {\n if (className?.includes(\"img-loading-placeholder\")) {\n return (\n <div\n className={cn(\n \"flex items-center gap-2 py-2 text-muted-foreground\",\n className\n )}\n >\n {/* 这里可以使用你的 Loading 图片,建议放在 packages/chatui/src/assets/ 下并 import */}\n {/* <img src={require(\"@/assets/loading.gif\")} alt=\"loading\" className=\"h-4 w-4\" /> */}\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n <span className=\"text-sm\">\n {(props as any)[\"data-content\"] || \"正在生成图片...\"}\n </span>\n </div>\n );\n }\n return <div className={className} {...props} />;\n },\n});\n"],"names":["defaultSchema","_jsx","MarkdownTextPrimitive","remarkGfm","rehypeRaw","rehypeSanitize","memo","_jsxs","TooltipIconButton","CopyIcon","CheckIcon","useDebounce","cn","useState","memoizeMarkdownComponents","_Fragment","SyntaxHighlighter","useIsMarkdownCodeBlock","Loader2"],"mappings":";;;;;;;;;;;;;;;;;;;AAwBA,MAAM,MAAM,GAAG;AACb,IAAA,GAAGA,sBAAa;;AAEhB,IAAA,QAAQ,EAAE,CAAC,IAAIA,sBAAa,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC;;AAEhE,IAAA,UAAU,EAAE;QACV,GAAGA,sBAAa,CAAC,UAAU;;AAE3B,QAAA,KAAK,EAAE;YACL,UAAU;YACV,OAAO;YACP,QAAQ;YACR,QAAQ;YACR,SAAS;YACT,KAAK;YACL,OAAO;YACP,MAAM;YACN,UAAU;YACV,aAAa;AACd,SAAA;AACD,QAAA,GAAG,EAAE;YACH,IAAIA,sBAAa,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC;AACxC,YAAA,WAAW;AACX,YAAA,cAAc;AACf,SAAA;;AAED,QAAA,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AACxB,KAAA;CACF,CAAC;AAEF;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,gBAAgB,GAAG,MAAK;AAC5B,IAAA,QACEC,cAAA,CAACC,oCAAqB,EAAA,EACpB,aAAa,EAAE,CAACC,KAAS,CAAC,EAC1B,aAAa,EAAE,CAACC,OAAS,EAAE,CAACC,OAAc,EAAE,MAAM,CAAC,CAAC,EACpD,SAAS,EAAC,QAAQ,EAClB,UAAU,EAAE,iBAAiB,EAAA,CAC7B,EACF;AACJ,CAAC,CAAC;MAEW,YAAY,GAAGC,UAAI,CAAC,gBAAgB,EAAE;AAEnD,MAAM,UAAU,GAAwB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAI;IAC7D,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,kBAAkB,EAAE,CAAC;AAC3D,IAAA,MAAM,iBAAiB,GAAG,QAAQ,IAAI,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IACpE,MAAM,MAAM,GAAG,MAAK;QAClB,IAAI,CAAC,IAAI,IAAI,QAAQ;YAAE,OAAO;QAC9B,eAAe,CAAC,IAAI,CAAC,CAAC;AACxB,KAAC,CAAC;AAEF,IAAA,QACEC,eAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,4KAA4K,EAAA,QAAA,EAAA,CACzLN,yBAAM,SAAS,EAAC,qDAAqD,EAAA,QAAA,EAClE,iBAAiB,EACb,CAAA,EACPM,gBAACC,mCAAiB,EAAA,EAAC,OAAO,EAAC,MAAM,EAAC,OAAO,EAAE,MAAM,EAAA,QAAA,EAAA,CAC9C,CAAC,QAAQ,IAAIP,eAACQ,YAAQ,EAAA,EAAA,CAAG,EACzB,QAAQ,IAAIR,cAAC,CAAAS,aAAS,KAAG,CACR,EAAA,CAAA,CAAA,EAAA,CAChB,EACN;AACJ,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,EACb,GAAG,EACH,SAAS,EACT,GAAG,KAAK,EAIT,KAAI;IACH,MAAM,YAAY,GAAGC,uBAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3C,IAAA,QACEV,cAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EACxB,SAAS,EAAEW,QAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,EAC9D,QAAQ,EACJ,IAAA,EAAA,GAAA,KAAK,EACT,CAAA,EACF;AACJ,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,EAC1B,cAAc,GAAG,IAAI,GAAA,GAGnB,EAAE,KAAI;IACR,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGC,cAAQ,CAAU,KAAK,CAAC,CAAC;AAEzD,IAAA,MAAM,eAAe,GAAG,CAAC,KAAa,KAAI;AACxC,QAAA,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAK;YAC7C,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,UAAU,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;AACL,KAAC,CAAC;AAEF,IAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAGC,qCAAyB,CAAC;IAClD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1Bb,uBACE,SAAS,EAAEW,QAAE,CACX,6EAA6E,EAC7E,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BX,uBACE,SAAS,EAAEW,QAAE,CACX,4FAA4F,EAC5F,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BX,uBACE,SAAS,EAAEW,QAAE,CACX,4FAA4F,EAC5F,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BX,uBACE,SAAS,EAAEW,QAAE,CACX,2FAA2F,EAC3F,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BX,uBACE,SAAS,EAAEW,QAAE,CACX,2DAA2D,EAC3D,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BX,uBACE,SAAS,EAAEW,QAAE,CACX,mDAAmD,EACnD,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MACzBX,sBACE,SAAS,EAAEW,QAAE,CACX,qEAAqE,EACrE,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,KAAI;QACjC,QACEX,cACE,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,KAAK,CAAC,IAAI,EACf,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EACxB,SAAS,EAAEW,QAAE,CAAC,kCAAkC,EAAE,SAAS,CAAC,EAC5D,CAAA,EACF;KACH;IACD,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,KAAI;AAC7B,QAAA,MAAM,OAAO,GAAG,CAAC,IAAwB,KAAI;AAC3C,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,KAAK,CAAC;AACxB,YAAA,MAAM,eAAe,GAAG;gBACtB,MAAM;gBACN,MAAM;gBACN,MAAM;gBACN,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,MAAM;aACP,CAAC;AACF,YAAA,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACzE,SAAC,CAAC;AAEF,QAAA,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACvB,YAAA,QACEL,eAAA,CAAAQ,mBAAA,EAAA,EAAA,QAAA,EAAA,CACEd,cACE,CAAA,GAAA,EAAA,EAAA,SAAS,EAAEW,QAAE,CACX,gEAAgE,EAChE,SAAS,CACV,EACG,GAAA,KAAK,GACT,EACFX,cAAA,CAAC,KAAK,EAAA,EAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAM,GAAA,KAAK,EAAI,CAAA,CAAA,EAAA,CAC1D,EACH;SACH;AAED,QAAA,QACEA,cAAA,CAAA,GAAA,EAAA,EACE,SAAS,EAAEW,QAAE,CACX,gEAAgE,EAChE,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,EACF;KACH;IACD,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,KAAI;QACjC,OAAOX,cAAA,CAAC,KAAK,EAAC,EAAA,SAAS,EAAE,SAAS,EAAA,GAAM,KAAK,EAAA,CAAI,CAAC;KACnD;IACD,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAClCA,+BACE,SAAS,EAAEW,QAAE,CAAC,0CAA0C,EAAE,SAAS,CAAC,EAAA,GAChE,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BX,uBACE,SAAS,EAAEW,QAAE,CAAC,2CAA2C,EAAE,SAAS,CAAC,EAAA,GACjE,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BX,uBACE,SAAS,EAAEW,QAAE,CAAC,8CAA8C,EAAE,SAAS,CAAC,EAAA,GACpE,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BX,uBAAI,SAAS,EAAEW,QAAE,CAAC,yBAAyB,EAAE,SAAS,CAAC,EAAA,GAAM,KAAK,EAAA,CAAI,CACvE;IACD,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC7BX,0BACE,SAAS,EAAEW,QAAE,CACX,2EAA2E,EAC3E,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BX,uBACE,SAAS,EAAEW,QAAE,CACX,mJAAmJ,EACnJ,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BX,uBACE,SAAS,EAAEW,QAAE,CACX,yHAAyH,EACzH,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BX,uBACE,SAAS,EAAEW,QAAE,CACX,kIAAkI,EAClI,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC3BX,wBACE,SAAS,EAAEW,QAAE,CAAC,6CAA6C,EAAE,SAAS,CAAC,EAAA,GACnE,KAAK,EAAA,CACT,CACH;AACD,IAAA,iBAAiB,EAAEI,kCAAiB;IACpC,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC3Bf,wBACE,SAAS,EAAEW,QAAE,CACX,iFAAiF,EACjF,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,IAAI,EAAE,SAAS,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAA;AACzC,QAAA,MAAM,WAAW,GAAGK,kCAAsB,EAAE,CAAC;AAC7C,QAAA,QACEhB,cACE,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEW,QAAE,CACX,CAAC,WAAW;AACV,gBAAA,0DAA0D,EAC5D,SAAS,CACV,KACG,KAAK,EAAA,CACT,EACF;KACH;IACD,UAAU;IACV,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,KAAI;AAC/B,QAAA,IAAI,SAAS,EAAE,QAAQ,CAAC,yBAAyB,CAAC,EAAE;AAClD,YAAA,QACEL,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAEK,QAAE,CACX,oDAAoD,EACpD,SAAS,CACV,EAAA,QAAA,EAAA,CAIDX,cAAC,CAAAiB,oBAAO,IAAC,SAAS,EAAC,sBAAsB,EAAA,CAAG,EAC5CjB,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EACrB,QAAA,EAAA,KAAa,CAAC,cAAc,CAAC,IAAI,WAAW,EACzC,CAAA,CAAA,EAAA,CACH,EACN;SACH;AACD,QAAA,OAAOA,wBAAK,SAAS,EAAE,SAAS,EAAM,GAAA,KAAK,GAAI,CAAC;KACjD;AACF,CAAA,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"markdown-text.cjs","sources":["../../../src/components/assistant-ui/markdown-text.tsx"],"sourcesContent":["\"use client\";\n\nimport \"@assistant-ui/react-markdown/styles/dot.css\";\n\nimport {\n type CodeHeaderProps,\n MarkdownTextPrimitive,\n unstable_memoizeMarkdownComponents as memoizeMarkdownComponents,\n useIsMarkdownCodeBlock,\n} from \"@assistant-ui/react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport rehypeRaw from \"rehype-raw\";\nimport rehypeSanitize, { defaultSchema } from \"rehype-sanitize\";\nimport { type FC, memo, useState } from \"react\";\nimport { CheckIcon, CopyIcon, Loader2 } from \"lucide-react\";\nimport \"./index.less\";\nimport { TooltipIconButton } from \"@/components/assistant-ui/tooltip-icon-button\";\nimport { cn } from \"@/lib/utils\";\nimport { SyntaxHighlighter } from \"./shiki-highlighter\";\nimport { useDebounce } from \"@/hooks/useDebounce\";\nimport remarkLoadingImage from \"@/utils/imageLoadingPlugin\";\nimport { rehypeAppendCursor } from \"@/utils/markdownCursorPlugin\";\nimport { PluggableList } from \"unified\";\n\nconst schema = {\n ...defaultSchema,\n // 1. 添加标签到白名单\n tagNames: [...(defaultSchema.tagNames || []), \"video\", \"source\"],\n // 2. 添加允许的属性\n attributes: {\n ...defaultSchema.attributes,\n // 允许 video 标签使用的属性\n video: [\n \"controls\",\n \"width\",\n \"height\",\n \"poster\",\n \"preload\",\n \"src\",\n \"muted\",\n \"loop\",\n \"autoPlay\",\n \"playsInline\",\n ],\n div: [\n ...(defaultSchema.attributes?.div || []),\n \"className\", //\n \"data-content\", // 如果你在插件里用了 data-content\n ],\n // 允许 source 标签使用的属性\n source: [\"src\", \"type\"],\n },\n};\n\nconst remarkPlugins: PluggableList = [remarkGfm];\n\nconst rehypePlugins: PluggableList = [\n rehypeRaw,\n [rehypeSanitize, schema],\n // rehypeAppendCursor,\n];\nconst MarkdownTextImpl = () => {\n return (\n <MarkdownTextPrimitive\n remarkPlugins={remarkPlugins}\n rehypePlugins={rehypePlugins}\n className=\"aui-md\"\n components={defaultComponents}\n />\n );\n};\n\nexport const MarkdownText = memo(MarkdownTextImpl);\n\nconst CodeHeader: FC<CodeHeaderProps> = ({ language, code }) => {\n const { isCopied, copyToClipboard } = useCopyToClipboard();\n const processedLanguage = language == \"unknown\" ? \"text\" : language;\n const onCopy = () => {\n if (!code || isCopied) return;\n copyToClipboard(code);\n };\n\n return (\n <div className=\"aui-code-header-root mt-4 flex items-center justify-between gap-4 rounded-t-lg border bg-muted-foreground/15 px-4 py-2 text-sm font-semibold text-foreground max-w-[800px]\">\n <span className=\"aui-code-header-language lowercase [&>span]:text-xs\">\n {processedLanguage}\n </span>\n <TooltipIconButton tooltip=\"Copy\" onClick={onCopy}>\n {!isCopied && <CopyIcon />}\n {isCopied && <CheckIcon />}\n </TooltipIconButton>\n </div>\n );\n};\n\nconst Video = ({\n src,\n className,\n ...props\n}: {\n src?: string;\n className?: string;\n}) => {\n const debouncedSrc = useDebounce(src, 500);\n return (\n <video\n src={debouncedSrc}\n style={{ maxWidth: 600 }}\n className={cn(\"aui-md-video max-w-full rounded-lg\", className)}\n controls\n {...props}\n />\n );\n};\n\nconst useCopyToClipboard = ({\n copiedDuration = 3000,\n}: {\n copiedDuration?: number;\n} = {}) => {\n const [isCopied, setIsCopied] = useState<boolean>(false);\n\n const copyToClipboard = (value: string) => {\n if (!value) return;\n\n navigator.clipboard.writeText(value).then(() => {\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), copiedDuration);\n });\n };\n\n return { isCopied, copyToClipboard };\n};\n\nconst defaultComponents = memoizeMarkdownComponents({\n h1: ({ className, ...props }) => (\n <h1\n className={cn(\n \"aui-md-h1 mb-8 scroll-m-20 text-4xl font-extrabold tracking-tight last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h2: ({ className, ...props }) => (\n <h2\n className={cn(\n \"aui-md-h2 mt-8 mb-4 scroll-m-20 text-3xl font-semibold tracking-tight first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h3: ({ className, ...props }) => (\n <h3\n className={cn(\n \"aui-md-h3 mt-6 mb-4 scroll-m-20 text-2xl font-semibold tracking-tight first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h4: ({ className, ...props }) => (\n <h4\n className={cn(\n \"aui-md-h4 mt-6 mb-4 scroll-m-20 text-xl font-semibold tracking-tight first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h5: ({ className, ...props }) => (\n <h5\n className={cn(\n \"aui-md-h5 my-4 text-lg font-semibold first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h6: ({ className, ...props }) => (\n <h6\n className={cn(\n \"aui-md-h6 my-4 font-semibold first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n p: ({ className, ...props }) => (\n <p\n className={cn(\n \"aui-md-p mt-5 mb-5 leading-7 first:mt-0 last:mb-0 chatkit-md-text-p\",\n className\n )}\n {...props}\n />\n ),\n image: ({ className, ...props }) => {\n return (\n <img\n src={props.href}\n style={{ maxWidth: 400 }}\n className={cn(\"aui-md-img max-w-full rounded-lg\", className)}\n />\n );\n },\n a: ({ className, ...props }) => {\n const isVideo = (href: string | undefined) => {\n if (!href) return false;\n const videoExtensions = [\n \".mp4\",\n \".avi\",\n \".mov\",\n \".wmv\",\n \".flv\",\n \".webm\",\n \".mkv\",\n \".m4v\",\n ];\n return videoExtensions.some((ext) => href.toLowerCase().includes(ext));\n };\n\n if (isVideo(props.href)) {\n return (\n <>\n <a\n className={cn(\n \"aui-md-a font-medium text-primary underline underline-offset-4\",\n className\n )}\n {...props}\n />\n <Video src={props.href} className={className} {...props} />\n </>\n );\n }\n\n return (\n <a\n className={cn(\n \"aui-md-a font-medium text-primary underline underline-offset-4\",\n className\n )}\n {...props}\n />\n );\n },\n video: ({ className, ...props }) => {\n return <Video className={className} {...props} />;\n },\n blockquote: ({ className, ...props }) => (\n <blockquote\n className={cn(\"aui-md-blockquote border-l-2 pl-6 italic\", className)}\n {...props}\n />\n ),\n ul: ({ className, ...props }) => (\n <ul\n className={cn(\"aui-md-ul my-5 ml-6 list-disc [&>li]:mt-2\", className)}\n {...props}\n />\n ),\n ol: ({ className, ...props }) => (\n <ol\n className={cn(\"aui-md-ol my-5 ml-6 list-decimal [&>li]:mt-2\", className)}\n {...props}\n />\n ),\n hr: ({ className, ...props }) => (\n <hr className={cn(\"aui-md-hr my-5 border-b\", className)} {...props} />\n ),\n table: ({ className, ...props }) => (\n <table\n className={cn(\n \"aui-md-table my-5 w-full border-separate border-spacing-0 overflow-y-auto\",\n className\n )}\n {...props}\n />\n ),\n th: ({ className, ...props }) => (\n <th\n className={cn(\n \"aui-md-th bg-muted px-4 py-2 text-left font-bold first:rounded-tl-lg last:rounded-tr-lg [&[align=center]]:text-center [&[align=right]]:text-right\",\n className\n )}\n {...props}\n />\n ),\n td: ({ className, ...props }) => (\n <td\n className={cn(\n \"aui-md-td border-b border-l px-4 py-2 text-left last:border-r [&[align=center]]:text-center [&[align=right]]:text-right\",\n className\n )}\n {...props}\n />\n ),\n tr: ({ className, ...props }) => (\n <tr\n className={cn(\n \"aui-md-tr m-0 border-b p-0 first:border-t [&:last-child>td:first-child]:rounded-bl-lg [&:last-child>td:last-child]:rounded-br-lg\",\n className\n )}\n {...props}\n />\n ),\n sup: ({ className, ...props }) => (\n <sup\n className={cn(\"aui-md-sup [&>a]:text-xs [&>a]:no-underline\", className)}\n {...props}\n />\n ),\n SyntaxHighlighter: SyntaxHighlighter,\n pre: ({ className, ...props }) => (\n <pre\n className={cn(\n \"aui-md-pre overflow-x-auto !rounded-t-none rounded-b-lg bg-black p-4 text-white\",\n className\n )}\n {...props}\n />\n ),\n code: function Code({ className, ...props }) {\n const isCodeBlock = useIsMarkdownCodeBlock();\n return (\n <code\n className={cn(\n !isCodeBlock &&\n \"aui-md-inline-code rounded border bg-muted font-semibold\",\n className\n )}\n {...props}\n />\n );\n },\n CodeHeader,\n div: ({ className, ...props }) => {\n if (className?.includes(\"img-loading-placeholder\")) {\n return (\n <div\n className={cn(\n \"flex items-center gap-2 py-2 text-muted-foreground\",\n className\n )}\n >\n {/* 这里可以使用你的 Loading 图片,建议放在 packages/chatui/src/assets/ 下并 import */}\n {/* <img src={require(\"@/assets/loading.gif\")} alt=\"loading\" className=\"h-4 w-4\" /> */}\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n <span className=\"text-sm\">\n {(props as any)[\"data-content\"] || \"正在生成图片...\"}\n </span>\n </div>\n );\n }\n return <div className={className} {...props} />;\n },\n});\n"],"names":["defaultSchema","remarkGfm","rehypeRaw","rehypeSanitize","_jsx","MarkdownTextPrimitive","memo","_jsxs","TooltipIconButton","CopyIcon","CheckIcon","useDebounce","cn","useState","memoizeMarkdownComponents","_Fragment","SyntaxHighlighter","useIsMarkdownCodeBlock","Loader2"],"mappings":"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"}
|
|
@@ -8,10 +8,10 @@ import { cn } from '../../lib/utils.js';
|
|
|
8
8
|
import { SyntaxHighlighter } from './shiki-highlighter.js';
|
|
9
9
|
import { useDebounce } from '../../hooks/useDebounce.js';
|
|
10
10
|
import { defaultSchema } from '../../node_modules/.pnpm/hast-util-sanitize@5.0.2/node_modules/hast-util-sanitize/lib/schema.js';
|
|
11
|
+
import LoaderCircle from '../../node_modules/.pnpm/lucide-react@0.552.0_react@17.0.2/node_modules/lucide-react/dist/esm/icons/loader-circle.js';
|
|
11
12
|
import remarkGfm from '../../node_modules/.pnpm/remark-gfm@4.0.1/node_modules/remark-gfm/lib/index.js';
|
|
12
13
|
import rehypeRaw from '../../node_modules/.pnpm/rehype-raw@7.0.0/node_modules/rehype-raw/lib/index.js';
|
|
13
14
|
import rehypeSanitize from '../../node_modules/.pnpm/rehype-sanitize@6.0.0/node_modules/rehype-sanitize/lib/index.js';
|
|
14
|
-
import LoaderCircle from '../../node_modules/.pnpm/lucide-react@0.552.0_react@17.0.2/node_modules/lucide-react/dist/esm/icons/loader-circle.js';
|
|
15
15
|
import Copy from '../../node_modules/.pnpm/lucide-react@0.552.0_react@17.0.2/node_modules/lucide-react/dist/esm/icons/copy.js';
|
|
16
16
|
import Check from '../../node_modules/.pnpm/lucide-react@0.552.0_react@17.0.2/node_modules/lucide-react/dist/esm/icons/check.js';
|
|
17
17
|
|
|
@@ -44,14 +44,14 @@ const schema = {
|
|
|
44
44
|
source: ["src", "type"],
|
|
45
45
|
},
|
|
46
46
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
//
|
|
52
|
-
|
|
47
|
+
const remarkPlugins = [remarkGfm];
|
|
48
|
+
const rehypePlugins = [
|
|
49
|
+
rehypeRaw,
|
|
50
|
+
[rehypeSanitize, schema],
|
|
51
|
+
// rehypeAppendCursor,
|
|
52
|
+
];
|
|
53
53
|
const MarkdownTextImpl = () => {
|
|
54
|
-
return (jsx(MarkdownTextPrimitive, { remarkPlugins:
|
|
54
|
+
return (jsx(MarkdownTextPrimitive, { remarkPlugins: remarkPlugins, rehypePlugins: rehypePlugins, className: "aui-md", components: defaultComponents }));
|
|
55
55
|
};
|
|
56
56
|
const MarkdownText = memo(MarkdownTextImpl);
|
|
57
57
|
const CodeHeader = ({ language, code }) => {
|
|
@@ -62,7 +62,7 @@ const CodeHeader = ({ language, code }) => {
|
|
|
62
62
|
return;
|
|
63
63
|
copyToClipboard(code);
|
|
64
64
|
};
|
|
65
|
-
return (jsxs("div", { className: "aui-code-header-root mt-4 flex items-center justify-between gap-4 rounded-t-lg border bg-muted-foreground/15 px-4 py-2 text-sm font-semibold text-foreground w-
|
|
65
|
+
return (jsxs("div", { className: "aui-code-header-root mt-4 flex items-center justify-between gap-4 rounded-t-lg border bg-muted-foreground/15 px-4 py-2 text-sm font-semibold text-foreground max-w-[800px]", children: [jsx("span", { className: "aui-code-header-language lowercase [&>span]:text-xs", children: processedLanguage }), jsxs(TooltipIconButton, { tooltip: "Copy", onClick: onCopy, children: [!isCopied && jsx(Copy, {}), isCopied && jsx(Check, {})] })] }));
|
|
66
66
|
};
|
|
67
67
|
const Video = ({ src, className, ...props }) => {
|
|
68
68
|
const debouncedSrc = useDebounce(src, 500);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-text.js","sources":["../../../src/components/assistant-ui/markdown-text.tsx"],"sourcesContent":["\"use client\";\n\nimport \"@assistant-ui/react-markdown/styles/dot.css\";\n\nimport {\n type CodeHeaderProps,\n MarkdownTextPrimitive,\n unstable_memoizeMarkdownComponents as memoizeMarkdownComponents,\n useIsMarkdownCodeBlock,\n} from \"@assistant-ui/react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport rehypeRaw from \"rehype-raw\";\nimport rehypeSanitize, { defaultSchema } from \"rehype-sanitize\";\nimport { type FC, memo, useState } from \"react\";\nimport { CheckIcon, CopyIcon, Loader2 } from \"lucide-react\";\nimport \"./index.less\";\nimport { TooltipIconButton } from \"@/components/assistant-ui/tooltip-icon-button\";\nimport { cn } from \"@/lib/utils\";\nimport { SyntaxHighlighter } from \"./shiki-highlighter\";\nimport { useDebounce } from \"@/hooks/useDebounce\";\nimport remarkLoadingImage from \"@/utils/imageLoadingPlugin\";\nimport { rehypeAppendCursor } from \"@/utils/markdownCursorPlugin\";\nimport { PluggableList } from \"unified\";\n\nconst schema = {\n ...defaultSchema,\n // 1. 添加标签到白名单\n tagNames: [...(defaultSchema.tagNames || []), \"video\", \"source\"],\n // 2. 添加允许的属性\n attributes: {\n ...defaultSchema.attributes,\n // 允许 video 标签使用的属性\n video: [\n \"controls\",\n \"width\",\n \"height\",\n \"poster\",\n \"preload\",\n \"src\",\n \"muted\",\n \"loop\",\n \"autoPlay\",\n \"playsInline\",\n ],\n div: [\n ...(defaultSchema.attributes?.div || []),\n \"className\", //\n \"data-content\", // 如果你在插件里用了 data-content\n ],\n // 允许 source 标签使用的属性\n source: [\"src\", \"type\"],\n },\n};\n\n// const remarkPlugins: PluggableList = [remarkGfm, remarkLoadingImage];\n\n// const rehypePlugins: PluggableList = [\n// rehypeRaw,\n// [rehypeSanitize, schema],\n// // rehypeAppendCursor,\n// ];\nconst MarkdownTextImpl = () => {\n return (\n <MarkdownTextPrimitive\n remarkPlugins={[remarkGfm]}\n rehypePlugins={[rehypeRaw, [rehypeSanitize, schema]]}\n className=\"aui-md\"\n components={defaultComponents}\n />\n );\n};\n\nexport const MarkdownText = memo(MarkdownTextImpl);\n\nconst CodeHeader: FC<CodeHeaderProps> = ({ language, code }) => {\n const { isCopied, copyToClipboard } = useCopyToClipboard();\n const processedLanguage = language == \"unknown\" ? \"text\" : language;\n const onCopy = () => {\n if (!code || isCopied) return;\n copyToClipboard(code);\n };\n\n return (\n <div className=\"aui-code-header-root mt-4 flex items-center justify-between gap-4 rounded-t-lg border bg-muted-foreground/15 px-4 py-2 text-sm font-semibold text-foreground w-max-[800px]\">\n <span className=\"aui-code-header-language lowercase [&>span]:text-xs\">\n {processedLanguage}\n </span>\n <TooltipIconButton tooltip=\"Copy\" onClick={onCopy}>\n {!isCopied && <CopyIcon />}\n {isCopied && <CheckIcon />}\n </TooltipIconButton>\n </div>\n );\n};\n\nconst Video = ({\n src,\n className,\n ...props\n}: {\n src?: string;\n className?: string;\n}) => {\n const debouncedSrc = useDebounce(src, 500);\n return (\n <video\n src={debouncedSrc}\n style={{ maxWidth: 600 }}\n className={cn(\"aui-md-video max-w-full rounded-lg\", className)}\n controls\n {...props}\n />\n );\n};\n\nconst useCopyToClipboard = ({\n copiedDuration = 3000,\n}: {\n copiedDuration?: number;\n} = {}) => {\n const [isCopied, setIsCopied] = useState<boolean>(false);\n\n const copyToClipboard = (value: string) => {\n if (!value) return;\n\n navigator.clipboard.writeText(value).then(() => {\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), copiedDuration);\n });\n };\n\n return { isCopied, copyToClipboard };\n};\n\nconst defaultComponents = memoizeMarkdownComponents({\n h1: ({ className, ...props }) => (\n <h1\n className={cn(\n \"aui-md-h1 mb-8 scroll-m-20 text-4xl font-extrabold tracking-tight last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h2: ({ className, ...props }) => (\n <h2\n className={cn(\n \"aui-md-h2 mt-8 mb-4 scroll-m-20 text-3xl font-semibold tracking-tight first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h3: ({ className, ...props }) => (\n <h3\n className={cn(\n \"aui-md-h3 mt-6 mb-4 scroll-m-20 text-2xl font-semibold tracking-tight first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h4: ({ className, ...props }) => (\n <h4\n className={cn(\n \"aui-md-h4 mt-6 mb-4 scroll-m-20 text-xl font-semibold tracking-tight first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h5: ({ className, ...props }) => (\n <h5\n className={cn(\n \"aui-md-h5 my-4 text-lg font-semibold first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h6: ({ className, ...props }) => (\n <h6\n className={cn(\n \"aui-md-h6 my-4 font-semibold first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n p: ({ className, ...props }) => (\n <p\n className={cn(\n \"aui-md-p mt-5 mb-5 leading-7 first:mt-0 last:mb-0 chatkit-md-text-p\",\n className\n )}\n {...props}\n />\n ),\n image: ({ className, ...props }) => {\n return (\n <img\n src={props.href}\n style={{ maxWidth: 400 }}\n className={cn(\"aui-md-img max-w-full rounded-lg\", className)}\n />\n );\n },\n a: ({ className, ...props }) => {\n const isVideo = (href: string | undefined) => {\n if (!href) return false;\n const videoExtensions = [\n \".mp4\",\n \".avi\",\n \".mov\",\n \".wmv\",\n \".flv\",\n \".webm\",\n \".mkv\",\n \".m4v\",\n ];\n return videoExtensions.some((ext) => href.toLowerCase().includes(ext));\n };\n\n if (isVideo(props.href)) {\n return (\n <>\n <a\n className={cn(\n \"aui-md-a font-medium text-primary underline underline-offset-4\",\n className\n )}\n {...props}\n />\n <Video src={props.href} className={className} {...props} />\n </>\n );\n }\n\n return (\n <a\n className={cn(\n \"aui-md-a font-medium text-primary underline underline-offset-4\",\n className\n )}\n {...props}\n />\n );\n },\n video: ({ className, ...props }) => {\n return <Video className={className} {...props} />;\n },\n blockquote: ({ className, ...props }) => (\n <blockquote\n className={cn(\"aui-md-blockquote border-l-2 pl-6 italic\", className)}\n {...props}\n />\n ),\n ul: ({ className, ...props }) => (\n <ul\n className={cn(\"aui-md-ul my-5 ml-6 list-disc [&>li]:mt-2\", className)}\n {...props}\n />\n ),\n ol: ({ className, ...props }) => (\n <ol\n className={cn(\"aui-md-ol my-5 ml-6 list-decimal [&>li]:mt-2\", className)}\n {...props}\n />\n ),\n hr: ({ className, ...props }) => (\n <hr className={cn(\"aui-md-hr my-5 border-b\", className)} {...props} />\n ),\n table: ({ className, ...props }) => (\n <table\n className={cn(\n \"aui-md-table my-5 w-full border-separate border-spacing-0 overflow-y-auto\",\n className\n )}\n {...props}\n />\n ),\n th: ({ className, ...props }) => (\n <th\n className={cn(\n \"aui-md-th bg-muted px-4 py-2 text-left font-bold first:rounded-tl-lg last:rounded-tr-lg [&[align=center]]:text-center [&[align=right]]:text-right\",\n className\n )}\n {...props}\n />\n ),\n td: ({ className, ...props }) => (\n <td\n className={cn(\n \"aui-md-td border-b border-l px-4 py-2 text-left last:border-r [&[align=center]]:text-center [&[align=right]]:text-right\",\n className\n )}\n {...props}\n />\n ),\n tr: ({ className, ...props }) => (\n <tr\n className={cn(\n \"aui-md-tr m-0 border-b p-0 first:border-t [&:last-child>td:first-child]:rounded-bl-lg [&:last-child>td:last-child]:rounded-br-lg\",\n className\n )}\n {...props}\n />\n ),\n sup: ({ className, ...props }) => (\n <sup\n className={cn(\"aui-md-sup [&>a]:text-xs [&>a]:no-underline\", className)}\n {...props}\n />\n ),\n SyntaxHighlighter: SyntaxHighlighter,\n pre: ({ className, ...props }) => (\n <pre\n className={cn(\n \"aui-md-pre overflow-x-auto !rounded-t-none rounded-b-lg bg-black p-4 text-white\",\n className\n )}\n {...props}\n />\n ),\n code: function Code({ className, ...props }) {\n const isCodeBlock = useIsMarkdownCodeBlock();\n return (\n <code\n className={cn(\n !isCodeBlock &&\n \"aui-md-inline-code rounded border bg-muted font-semibold\",\n className\n )}\n {...props}\n />\n );\n },\n CodeHeader,\n div: ({ className, ...props }) => {\n if (className?.includes(\"img-loading-placeholder\")) {\n return (\n <div\n className={cn(\n \"flex items-center gap-2 py-2 text-muted-foreground\",\n className\n )}\n >\n {/* 这里可以使用你的 Loading 图片,建议放在 packages/chatui/src/assets/ 下并 import */}\n {/* <img src={require(\"@/assets/loading.gif\")} alt=\"loading\" className=\"h-4 w-4\" /> */}\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n <span className=\"text-sm\">\n {(props as any)[\"data-content\"] || \"正在生成图片...\"}\n </span>\n </div>\n );\n }\n return <div className={className} {...props} />;\n },\n});\n"],"names":["_jsx","_jsxs","CopyIcon","CheckIcon","_Fragment","Loader2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"markdown-text.js","sources":["../../../src/components/assistant-ui/markdown-text.tsx"],"sourcesContent":["\"use client\";\n\nimport \"@assistant-ui/react-markdown/styles/dot.css\";\n\nimport {\n type CodeHeaderProps,\n MarkdownTextPrimitive,\n unstable_memoizeMarkdownComponents as memoizeMarkdownComponents,\n useIsMarkdownCodeBlock,\n} from \"@assistant-ui/react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport rehypeRaw from \"rehype-raw\";\nimport rehypeSanitize, { defaultSchema } from \"rehype-sanitize\";\nimport { type FC, memo, useState } from \"react\";\nimport { CheckIcon, CopyIcon, Loader2 } from \"lucide-react\";\nimport \"./index.less\";\nimport { TooltipIconButton } from \"@/components/assistant-ui/tooltip-icon-button\";\nimport { cn } from \"@/lib/utils\";\nimport { SyntaxHighlighter } from \"./shiki-highlighter\";\nimport { useDebounce } from \"@/hooks/useDebounce\";\nimport remarkLoadingImage from \"@/utils/imageLoadingPlugin\";\nimport { rehypeAppendCursor } from \"@/utils/markdownCursorPlugin\";\nimport { PluggableList } from \"unified\";\n\nconst schema = {\n ...defaultSchema,\n // 1. 添加标签到白名单\n tagNames: [...(defaultSchema.tagNames || []), \"video\", \"source\"],\n // 2. 添加允许的属性\n attributes: {\n ...defaultSchema.attributes,\n // 允许 video 标签使用的属性\n video: [\n \"controls\",\n \"width\",\n \"height\",\n \"poster\",\n \"preload\",\n \"src\",\n \"muted\",\n \"loop\",\n \"autoPlay\",\n \"playsInline\",\n ],\n div: [\n ...(defaultSchema.attributes?.div || []),\n \"className\", //\n \"data-content\", // 如果你在插件里用了 data-content\n ],\n // 允许 source 标签使用的属性\n source: [\"src\", \"type\"],\n },\n};\n\nconst remarkPlugins: PluggableList = [remarkGfm];\n\nconst rehypePlugins: PluggableList = [\n rehypeRaw,\n [rehypeSanitize, schema],\n // rehypeAppendCursor,\n];\nconst MarkdownTextImpl = () => {\n return (\n <MarkdownTextPrimitive\n remarkPlugins={remarkPlugins}\n rehypePlugins={rehypePlugins}\n className=\"aui-md\"\n components={defaultComponents}\n />\n );\n};\n\nexport const MarkdownText = memo(MarkdownTextImpl);\n\nconst CodeHeader: FC<CodeHeaderProps> = ({ language, code }) => {\n const { isCopied, copyToClipboard } = useCopyToClipboard();\n const processedLanguage = language == \"unknown\" ? \"text\" : language;\n const onCopy = () => {\n if (!code || isCopied) return;\n copyToClipboard(code);\n };\n\n return (\n <div className=\"aui-code-header-root mt-4 flex items-center justify-between gap-4 rounded-t-lg border bg-muted-foreground/15 px-4 py-2 text-sm font-semibold text-foreground max-w-[800px]\">\n <span className=\"aui-code-header-language lowercase [&>span]:text-xs\">\n {processedLanguage}\n </span>\n <TooltipIconButton tooltip=\"Copy\" onClick={onCopy}>\n {!isCopied && <CopyIcon />}\n {isCopied && <CheckIcon />}\n </TooltipIconButton>\n </div>\n );\n};\n\nconst Video = ({\n src,\n className,\n ...props\n}: {\n src?: string;\n className?: string;\n}) => {\n const debouncedSrc = useDebounce(src, 500);\n return (\n <video\n src={debouncedSrc}\n style={{ maxWidth: 600 }}\n className={cn(\"aui-md-video max-w-full rounded-lg\", className)}\n controls\n {...props}\n />\n );\n};\n\nconst useCopyToClipboard = ({\n copiedDuration = 3000,\n}: {\n copiedDuration?: number;\n} = {}) => {\n const [isCopied, setIsCopied] = useState<boolean>(false);\n\n const copyToClipboard = (value: string) => {\n if (!value) return;\n\n navigator.clipboard.writeText(value).then(() => {\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), copiedDuration);\n });\n };\n\n return { isCopied, copyToClipboard };\n};\n\nconst defaultComponents = memoizeMarkdownComponents({\n h1: ({ className, ...props }) => (\n <h1\n className={cn(\n \"aui-md-h1 mb-8 scroll-m-20 text-4xl font-extrabold tracking-tight last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h2: ({ className, ...props }) => (\n <h2\n className={cn(\n \"aui-md-h2 mt-8 mb-4 scroll-m-20 text-3xl font-semibold tracking-tight first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h3: ({ className, ...props }) => (\n <h3\n className={cn(\n \"aui-md-h3 mt-6 mb-4 scroll-m-20 text-2xl font-semibold tracking-tight first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h4: ({ className, ...props }) => (\n <h4\n className={cn(\n \"aui-md-h4 mt-6 mb-4 scroll-m-20 text-xl font-semibold tracking-tight first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h5: ({ className, ...props }) => (\n <h5\n className={cn(\n \"aui-md-h5 my-4 text-lg font-semibold first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n h6: ({ className, ...props }) => (\n <h6\n className={cn(\n \"aui-md-h6 my-4 font-semibold first:mt-0 last:mb-0\",\n className\n )}\n {...props}\n />\n ),\n p: ({ className, ...props }) => (\n <p\n className={cn(\n \"aui-md-p mt-5 mb-5 leading-7 first:mt-0 last:mb-0 chatkit-md-text-p\",\n className\n )}\n {...props}\n />\n ),\n image: ({ className, ...props }) => {\n return (\n <img\n src={props.href}\n style={{ maxWidth: 400 }}\n className={cn(\"aui-md-img max-w-full rounded-lg\", className)}\n />\n );\n },\n a: ({ className, ...props }) => {\n const isVideo = (href: string | undefined) => {\n if (!href) return false;\n const videoExtensions = [\n \".mp4\",\n \".avi\",\n \".mov\",\n \".wmv\",\n \".flv\",\n \".webm\",\n \".mkv\",\n \".m4v\",\n ];\n return videoExtensions.some((ext) => href.toLowerCase().includes(ext));\n };\n\n if (isVideo(props.href)) {\n return (\n <>\n <a\n className={cn(\n \"aui-md-a font-medium text-primary underline underline-offset-4\",\n className\n )}\n {...props}\n />\n <Video src={props.href} className={className} {...props} />\n </>\n );\n }\n\n return (\n <a\n className={cn(\n \"aui-md-a font-medium text-primary underline underline-offset-4\",\n className\n )}\n {...props}\n />\n );\n },\n video: ({ className, ...props }) => {\n return <Video className={className} {...props} />;\n },\n blockquote: ({ className, ...props }) => (\n <blockquote\n className={cn(\"aui-md-blockquote border-l-2 pl-6 italic\", className)}\n {...props}\n />\n ),\n ul: ({ className, ...props }) => (\n <ul\n className={cn(\"aui-md-ul my-5 ml-6 list-disc [&>li]:mt-2\", className)}\n {...props}\n />\n ),\n ol: ({ className, ...props }) => (\n <ol\n className={cn(\"aui-md-ol my-5 ml-6 list-decimal [&>li]:mt-2\", className)}\n {...props}\n />\n ),\n hr: ({ className, ...props }) => (\n <hr className={cn(\"aui-md-hr my-5 border-b\", className)} {...props} />\n ),\n table: ({ className, ...props }) => (\n <table\n className={cn(\n \"aui-md-table my-5 w-full border-separate border-spacing-0 overflow-y-auto\",\n className\n )}\n {...props}\n />\n ),\n th: ({ className, ...props }) => (\n <th\n className={cn(\n \"aui-md-th bg-muted px-4 py-2 text-left font-bold first:rounded-tl-lg last:rounded-tr-lg [&[align=center]]:text-center [&[align=right]]:text-right\",\n className\n )}\n {...props}\n />\n ),\n td: ({ className, ...props }) => (\n <td\n className={cn(\n \"aui-md-td border-b border-l px-4 py-2 text-left last:border-r [&[align=center]]:text-center [&[align=right]]:text-right\",\n className\n )}\n {...props}\n />\n ),\n tr: ({ className, ...props }) => (\n <tr\n className={cn(\n \"aui-md-tr m-0 border-b p-0 first:border-t [&:last-child>td:first-child]:rounded-bl-lg [&:last-child>td:last-child]:rounded-br-lg\",\n className\n )}\n {...props}\n />\n ),\n sup: ({ className, ...props }) => (\n <sup\n className={cn(\"aui-md-sup [&>a]:text-xs [&>a]:no-underline\", className)}\n {...props}\n />\n ),\n SyntaxHighlighter: SyntaxHighlighter,\n pre: ({ className, ...props }) => (\n <pre\n className={cn(\n \"aui-md-pre overflow-x-auto !rounded-t-none rounded-b-lg bg-black p-4 text-white\",\n className\n )}\n {...props}\n />\n ),\n code: function Code({ className, ...props }) {\n const isCodeBlock = useIsMarkdownCodeBlock();\n return (\n <code\n className={cn(\n !isCodeBlock &&\n \"aui-md-inline-code rounded border bg-muted font-semibold\",\n className\n )}\n {...props}\n />\n );\n },\n CodeHeader,\n div: ({ className, ...props }) => {\n if (className?.includes(\"img-loading-placeholder\")) {\n return (\n <div\n className={cn(\n \"flex items-center gap-2 py-2 text-muted-foreground\",\n className\n )}\n >\n {/* 这里可以使用你的 Loading 图片,建议放在 packages/chatui/src/assets/ 下并 import */}\n {/* <img src={require(\"@/assets/loading.gif\")} alt=\"loading\" className=\"h-4 w-4\" /> */}\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n <span className=\"text-sm\">\n {(props as any)[\"data-content\"] || \"正在生成图片...\"}\n </span>\n </div>\n );\n }\n return <div className={className} {...props} />;\n },\n});\n"],"names":["_jsx","_jsxs","CopyIcon","CheckIcon","_Fragment","Loader2"],"mappings":";;;;;;;;;;;;;;;;;AAwBA,MAAM,MAAM,GAAG;AACb,IAAA,GAAG,aAAa;;AAEhB,IAAA,QAAQ,EAAE,CAAC,IAAI,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC;;AAEhE,IAAA,UAAU,EAAE;QACV,GAAG,aAAa,CAAC,UAAU;;AAE3B,QAAA,KAAK,EAAE;YACL,UAAU;YACV,OAAO;YACP,QAAQ;YACR,QAAQ;YACR,SAAS;YACT,KAAK;YACL,OAAO;YACP,MAAM;YACN,UAAU;YACV,aAAa;AACd,SAAA;AACD,QAAA,GAAG,EAAE;YACH,IAAI,aAAa,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC;AACxC,YAAA,WAAW;AACX,YAAA,cAAc;AACf,SAAA;;AAED,QAAA,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AACxB,KAAA;CACF,CAAC;AAEF,MAAM,aAAa,GAAkB,CAAC,SAAS,CAAC,CAAC;AAEjD,MAAM,aAAa,GAAkB;IACnC,SAAS;IACT,CAAC,cAAc,EAAE,MAAM,CAAC;;CAEzB,CAAC;AACF,MAAM,gBAAgB,GAAG,MAAK;IAC5B,QACEA,IAAC,qBAAqB,EAAA,EACpB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAC,QAAQ,EAClB,UAAU,EAAE,iBAAiB,EAC7B,CAAA,EACF;AACJ,CAAC,CAAC;MAEW,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAEnD,MAAM,UAAU,GAAwB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAI;IAC7D,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,kBAAkB,EAAE,CAAC;AAC3D,IAAA,MAAM,iBAAiB,GAAG,QAAQ,IAAI,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IACpE,MAAM,MAAM,GAAG,MAAK;QAClB,IAAI,CAAC,IAAI,IAAI,QAAQ;YAAE,OAAO;QAC9B,eAAe,CAAC,IAAI,CAAC,CAAC;AACxB,KAAC,CAAC;AAEF,IAAA,QACEC,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,4KAA4K,EAAA,QAAA,EAAA,CACzLD,cAAM,SAAS,EAAC,qDAAqD,EAAA,QAAA,EAClE,iBAAiB,EACb,CAAA,EACPC,KAAC,iBAAiB,EAAA,EAAC,OAAO,EAAC,MAAM,EAAC,OAAO,EAAE,MAAM,EAAA,QAAA,EAAA,CAC9C,CAAC,QAAQ,IAAID,IAACE,IAAQ,EAAA,EAAA,CAAG,EACzB,QAAQ,IAAIF,GAAC,CAAAG,KAAS,KAAG,CACR,EAAA,CAAA,CAAA,EAAA,CAChB,EACN;AACJ,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,EACb,GAAG,EACH,SAAS,EACT,GAAG,KAAK,EAIT,KAAI;IACH,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3C,IAAA,QACEH,GAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EACxB,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,EAC9D,QAAQ,EACJ,IAAA,EAAA,GAAA,KAAK,EACT,CAAA,EACF;AACJ,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,EAC1B,cAAc,GAAG,IAAI,GAAA,GAGnB,EAAE,KAAI;IACR,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;AAEzD,IAAA,MAAM,eAAe,GAAG,CAAC,KAAa,KAAI;AACxC,QAAA,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAK;YAC7C,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,UAAU,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;AACL,KAAC,CAAC;AAEF,IAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;IAClD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BA,YACE,SAAS,EAAE,EAAE,CACX,6EAA6E,EAC7E,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BA,YACE,SAAS,EAAE,EAAE,CACX,4FAA4F,EAC5F,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BA,YACE,SAAS,EAAE,EAAE,CACX,4FAA4F,EAC5F,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BA,YACE,SAAS,EAAE,EAAE,CACX,2FAA2F,EAC3F,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BA,YACE,SAAS,EAAE,EAAE,CACX,2DAA2D,EAC3D,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BA,YACE,SAAS,EAAE,EAAE,CACX,mDAAmD,EACnD,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MACzBA,WACE,SAAS,EAAE,EAAE,CACX,qEAAqE,EACrE,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,KAAI;QACjC,QACEA,GACE,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,KAAK,CAAC,IAAI,EACf,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EACxB,SAAS,EAAE,EAAE,CAAC,kCAAkC,EAAE,SAAS,CAAC,EAC5D,CAAA,EACF;KACH;IACD,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,KAAI;AAC7B,QAAA,MAAM,OAAO,GAAG,CAAC,IAAwB,KAAI;AAC3C,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,KAAK,CAAC;AACxB,YAAA,MAAM,eAAe,GAAG;gBACtB,MAAM;gBACN,MAAM;gBACN,MAAM;gBACN,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,MAAM;aACP,CAAC;AACF,YAAA,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACzE,SAAC,CAAC;AAEF,QAAA,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACvB,YAAA,QACEC,IAAA,CAAAG,QAAA,EAAA,EAAA,QAAA,EAAA,CACEJ,GACE,CAAA,GAAA,EAAA,EAAA,SAAS,EAAE,EAAE,CACX,gEAAgE,EAChE,SAAS,CACV,EACG,GAAA,KAAK,GACT,EACFA,GAAA,CAAC,KAAK,EAAA,EAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAM,GAAA,KAAK,EAAI,CAAA,CAAA,EAAA,CAC1D,EACH;SACH;AAED,QAAA,QACEA,GAAA,CAAA,GAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,gEAAgE,EAChE,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,EACF;KACH;IACD,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,KAAI;QACjC,OAAOA,GAAA,CAAC,KAAK,EAAC,EAAA,SAAS,EAAE,SAAS,EAAA,GAAM,KAAK,EAAA,CAAI,CAAC;KACnD;IACD,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAClCA,oBACE,SAAS,EAAE,EAAE,CAAC,0CAA0C,EAAE,SAAS,CAAC,EAAA,GAChE,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BA,YACE,SAAS,EAAE,EAAE,CAAC,2CAA2C,EAAE,SAAS,CAAC,EAAA,GACjE,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BA,YACE,SAAS,EAAE,EAAE,CAAC,8CAA8C,EAAE,SAAS,CAAC,EAAA,GACpE,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BA,YAAI,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,SAAS,CAAC,EAAA,GAAM,KAAK,EAAA,CAAI,CACvE;IACD,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC7BA,eACE,SAAS,EAAE,EAAE,CACX,2EAA2E,EAC3E,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BA,YACE,SAAS,EAAE,EAAE,CACX,mJAAmJ,EACnJ,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BA,YACE,SAAS,EAAE,EAAE,CACX,yHAAyH,EACzH,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC1BA,YACE,SAAS,EAAE,EAAE,CACX,kIAAkI,EAClI,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC3BA,aACE,SAAS,EAAE,EAAE,CAAC,6CAA6C,EAAE,SAAS,CAAC,EAAA,GACnE,KAAK,EAAA,CACT,CACH;AACD,IAAA,iBAAiB,EAAE,iBAAiB;IACpC,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,MAC3BA,aACE,SAAS,EAAE,EAAE,CACX,iFAAiF,EACjF,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;IACD,IAAI,EAAE,SAAS,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAA;AACzC,QAAA,MAAM,WAAW,GAAG,sBAAsB,EAAE,CAAC;AAC7C,QAAA,QACEA,GACE,CAAA,MAAA,EAAA,EAAA,SAAS,EAAE,EAAE,CACX,CAAC,WAAW;AACV,gBAAA,0DAA0D,EAC5D,SAAS,CACV,KACG,KAAK,EAAA,CACT,EACF;KACH;IACD,UAAU;IACV,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,KAAI;AAC/B,QAAA,IAAI,SAAS,EAAE,QAAQ,CAAC,yBAAyB,CAAC,EAAE;AAClD,YAAA,QACEC,IAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,SAAS,CACV,EAAA,QAAA,EAAA,CAIDD,GAAC,CAAAK,YAAO,IAAC,SAAS,EAAC,sBAAsB,EAAA,CAAG,EAC5CL,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EACrB,QAAA,EAAA,KAAa,CAAC,cAAc,CAAC,IAAI,WAAW,EACzC,CAAA,CAAA,EAAA,CACH,EACN;SACH;AACD,QAAA,OAAOA,aAAK,SAAS,EAAE,SAAS,EAAM,GAAA,KAAK,GAAI,CAAC;KACjD;AACF,CAAA,CAAC;;;;"}
|
|
@@ -311,6 +311,7 @@ var BetterEventSource = class {
|
|
|
311
311
|
new SSEError("ConnectionError" /* ConnectionError */, "Fail to connect")
|
|
312
312
|
);
|
|
313
313
|
}
|
|
314
|
+
return;
|
|
314
315
|
}
|
|
315
316
|
this.headersReceived = response.headers;
|
|
316
317
|
this.emit("headerReceived", this.headersReceived);
|
|
@@ -338,6 +339,7 @@ var BetterEventSource = class {
|
|
|
338
339
|
);
|
|
339
340
|
try {
|
|
340
341
|
while (true) {
|
|
342
|
+
console.log("reading");
|
|
341
343
|
const { done, value } = await reader.read();
|
|
342
344
|
if (done) {
|
|
343
345
|
this.emit("end");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../../core/dist/index.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/Thread.ts\nimport { v4 as uuidv4 } from \"uuid\";\n\n// src/stores/index.ts\nimport { v4 as uuid } from \"uuid\";\nimport { proxy, useSnapshot } from \"valtio\";\nimport dayjs from \"dayjs\";\nvar defaultThreadManagerState = {\n currentThreadId: null,\n threadMap: {}\n};\nvar threadManagerState = proxy(defaultThreadManagerState);\nasync function initThreadManagerStore(state) {\n try {\n threadManagerState.currentThreadId = state?.currentThreadId || null;\n threadManagerState.threadMap = state?.threadMap || {};\n } catch (error) {\n console.error(\"initThreadManagerStore error\", error);\n }\n}\nvar generateThread = () => {\n const threadId = uuid();\n const thread = {\n id: threadId,\n name: \"\\u9ED8\\u8BA4\\u5BF9\\u8BDD\",\n metadata: {},\n sending: false,\n messages: [],\n createdAt: dayjs().unix()\n };\n return { currentThreadId: threadId, threadMap: { [threadId]: thread } };\n};\ninitThreadManagerStore(generateThread());\nvar useThreadManagerStore = () => useSnapshot(threadManagerState);\n\n// src/utils/CheckThreadExist.ts\nvar checkThreadExist = (threadId, throwError = true) => {\n if (!threadManagerState.threadMap[threadId]) {\n if (throwError) {\n throw new Error(`thread id ${threadId} not exists`);\n }\n return null;\n }\n return threadManagerState.threadMap[threadId];\n};\nvar CheckThreadExist_default = checkThreadExist;\n\n// src/Thread.ts\nimport dayjs2 from \"dayjs\";\nvar threadActions = {\n createThread: ({\n name = \"\",\n metadata = {},\n switchToNewThread = true\n }) => {\n const id = uuidv4();\n const thread = {\n id,\n name: name || `\\u9ED8\\u8BA4\\u5BF9\\u8BDD${id.slice(0, 4)}`,\n metadata,\n createdAt: dayjs2().unix(),\n updatedAt: dayjs2().unix(),\n messages: [],\n sending: false\n };\n threadActions.addThread(thread);\n if (switchToNewThread) {\n threadActions.setCurrentThread(thread.id);\n }\n },\n addThread: (thread) => {\n if (CheckThreadExist_default(thread.id, false)) {\n return;\n }\n threadManagerState.threadMap[thread.id] = thread;\n },\n getThread: (threadId, throwError = true) => {\n const thread = CheckThreadExist_default(threadId, throwError);\n if (!thread) {\n return null;\n }\n return threadManagerState.threadMap[threadId];\n },\n setCurrentThread: (threadId) => {\n CheckThreadExist_default(threadId);\n threadManagerState.currentThreadId = threadId;\n },\n updateThread: (threadId, thread) => {\n CheckThreadExist_default(threadId);\n threadManagerState.threadMap[threadId] = {\n ...threadManagerState.threadMap[threadId],\n ...thread,\n updatedAt: dayjs2().unix()\n };\n },\n deleteThread: (threadId) => {\n CheckThreadExist_default(threadId);\n delete threadManagerState.threadMap[threadId];\n },\n setSending: (threadId, sending) => {\n CheckThreadExist_default(threadId);\n threadActions.updateThread(threadId, { sending });\n },\n setLoading: (threadId, loading, throwError = true) => {\n const thread = CheckThreadExist_default(threadId, throwError);\n if (!thread) {\n return;\n }\n threadActions.updateThread(threadId, { loading });\n },\n getCurrentThread: () => {\n const threadId = threadManagerState.currentThreadId;\n if (!threadId) {\n return null;\n }\n return threadManagerState.threadMap[threadId];\n }\n};\n\n// src/utils/CheckMessageExist.ts\nvar checkMessageExist = (threadId, messageId, throwError = true) => {\n const thread = CheckThreadExist_default(threadId, throwError);\n if (!thread) {\n return null;\n }\n const message = thread.messages.find(\n (msg) => msg.id === messageId\n );\n if (!message) {\n if (throwError) {\n throw new Error(`message id ${messageId} not exists`);\n }\n return null;\n }\n return message;\n};\nvar CheckMessageExist_default = checkMessageExist;\n\n// src/Message.ts\nimport { cloneDeep } from \"lodash-es\";\nvar messageActions = {\n getMessage: (threadId, messageId) => {\n return CheckMessageExist_default(threadId, messageId);\n },\n addMessage: (threadId, message) => {\n const isExist = CheckThreadExist_default(threadId, false);\n if (!isExist) {\n return;\n }\n threadManagerState.threadMap[threadId].messages.push(message);\n },\n updateMessage: (threadId, messageId, updateOptions) => {\n const message = CheckMessageExist_default(threadId, messageId);\n if (!message) {\n return;\n }\n const messageIndex = threadManagerState.threadMap[threadId].messages.findIndex((msg) => msg.id === messageId);\n const { updatedMessage, partial } = updateOptions;\n if (partial) {\n threadManagerState.threadMap[threadId].messages[messageIndex] = cloneDeep(\n {\n ...threadManagerState.threadMap[threadId].messages[messageIndex],\n ...updatedMessage\n }\n );\n } else {\n threadManagerState.threadMap[threadId].messages[messageIndex] = cloneDeep(\n {\n ...updatedMessage,\n id: messageId\n }\n );\n }\n },\n updateMessages: (threadId, messages) => {\n CheckThreadExist_default(threadId);\n threadManagerState.threadMap[threadId].messages = messages;\n },\n removeMessage: (threadId, messageId) => {\n CheckMessageExist_default(threadId, messageId);\n threadManagerState.threadMap[threadId].messages = threadManagerState.threadMap[threadId].messages.filter(\n (msg) => msg.id !== messageId\n );\n }\n};\n\n// src/types/Message.ts\nvar MessageStatusEnum = /* @__PURE__ */ ((MessageStatusEnum2) => {\n MessageStatusEnum2[\"SENDING\"] = \"sending\";\n MessageStatusEnum2[\"PENDING\"] = \"pending\";\n MessageStatusEnum2[\"SUCCESS\"] = \"success\";\n MessageStatusEnum2[\"ERROR\"] = \"error\";\n MessageStatusEnum2[\"PAUSED\"] = \"paused\";\n MessageStatusEnum2[\"ABORTED\"] = \"aborted\";\n return MessageStatusEnum2;\n})(MessageStatusEnum || {});\n\n// src/utils/Message.ts\nimport { v4 as uuid2 } from \"uuid\";\nfunction generateModelMessage(message) {\n return {\n id: uuid2(),\n role: \"assistant\",\n status: \"sending\",\n content: [],\n createdAt: Date.now(),\n metadata: {},\n ...message\n };\n}\nvar isTextMessage = (message) => message.type === \"text\";\nvar isReasoningMessage = (message) => message.type === \"reasoning\";\n\n// src/sse/SseError.ts\nvar SSEError = class {\n constructor(code, message, logid) {\n this.code = code;\n this.logid = logid;\n this.message = message;\n }\n};\n\n// src/sse/JsonParser.ts\nvar removePrefix = (text) => {\n if (text.startsWith(\"data:\")) {\n return text.slice(5);\n }\n return text;\n};\nvar JsonStreamParser = class {\n constructor(jsonParseCallback, finishCallback) {\n this.buffer = \"\";\n /**\n * Event Stream 的换行格式包括三种:CRLF(回车加换行)、LF(换行)和 CR(回车)\n * 默认支持 CRLF 换行格式\n * https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream\n */\n this.endOfLine = \"\\r\\n\\r\\n\";\n this.jsonParseCallback = jsonParseCallback;\n this.finishCallback = finishCallback;\n }\n receiveChunk(chunk) {\n this.buffer += chunk;\n this.findEndOfLine();\n let jsonBoundary = this.findJsonBoundary();\n while (jsonBoundary !== -1) {\n const rawJson = removePrefix(this.buffer.substring(0, jsonBoundary));\n this.buffer = this.buffer.substring(jsonBoundary + this.endOfLine.length);\n if (rawJson.trim() === \"[DONE]\") {\n this.finishCallback();\n return;\n }\n try {\n const json = JSON.parse(rawJson);\n this.jsonParseCallback(json);\n } catch (error) {\n console.error(\"[JsonStreamParser] Failed to parse JSON\", error);\n }\n jsonBoundary = this.findJsonBoundary();\n }\n }\n findEndOfLine() {\n if (this.buffer.indexOf(\"\\r\\n\\r\\n\") !== -1) {\n this.endOfLine = \"\\r\\n\\r\\n\";\n } else if (this.buffer.indexOf(\"\\n\\n\") !== -1) {\n this.endOfLine = \"\\n\\n\";\n }\n }\n findJsonBoundary() {\n return this.buffer.indexOf(this.endOfLine);\n }\n};\n\n// src/sse/BetterEventSource.ts\nvar BetterEventSource = class {\n constructor(url, options) {\n this.headersReceived = null;\n this.isNormalFinished = false;\n this.url = url;\n this.options = options || {};\n this.eventListeners = /* @__PURE__ */ new Map();\n }\n fetchStream() {\n fetch(this.url, {\n method: \"POST\",\n headers: {\n ...this.options.headers,\n \"content-type\": \"application/json\"\n },\n body: this.options.body,\n credentials: \"include\",\n signal: this.options.abortSignal\n }).then(async (response) => {\n try {\n if (!response.ok) {\n const text = await response.text();\n this.emit(\"error\", new SSEError(\"ConnectionError\" /* ConnectionError */, text));\n return;\n }\n } catch (error) {\n try {\n response.json().then((resp) => {\n this.emit(\n \"error\",\n new SSEError(\"ConnectionError\" /* ConnectionError */, \"Fail to connect\")\n );\n });\n } catch (err) {\n this.emit(\n \"error\",\n new SSEError(\"ConnectionError\" /* ConnectionError */, \"Fail to connect\")\n );\n }\n }\n this.headersReceived = response.headers;\n this.emit(\"headerReceived\", this.headersReceived);\n const reader = response.body?.getReader();\n return this.readStream(reader);\n }).catch((error) => {\n this.emit(\n \"error\",\n new SSEError(\n error?.name || \"Error\" /* Error */,\n error?.message || \"Failed to response\"\n )\n );\n });\n }\n async readStream(reader) {\n if (!reader) {\n return;\n }\n const jsonStreamParser = new JsonStreamParser(\n (json) => {\n this.emit(\"message\", json);\n },\n () => this.isNormalFinished = true\n );\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n this.emit(\"end\");\n if (this.isNormalFinished) {\n } else {\n this.emit(\n \"error\",\n new SSEError(\n \"InterruptError\" /* InterruptError */,\n \"Request abnormal termination\"\n )\n );\n }\n break;\n }\n const text = new TextDecoder().decode(value);\n let response = null;\n if (text.startsWith(\"data:\")) {\n response = text.slice(5);\n } else {\n response = text;\n }\n jsonStreamParser.receiveChunk(response);\n }\n } catch (error) {\n this.emit(\n \"error\",\n new SSEError(\n error?.name || \"ReadableStreamError\" /* ReadableStreamError */,\n error?.message || \"Failed to read stream\"\n )\n );\n } finally {\n try {\n reader.releaseLock();\n } catch (e) {\n console.warn(\n \"Failed to release reader lock, might be already released:\",\n e\n );\n }\n }\n }\n addEventListener(event, listener) {\n if (!this.eventListeners.has(event)) {\n this.eventListeners.set(event, []);\n }\n this.eventListeners.get(event)?.push(listener);\n if (event === \"message\" && this.eventListeners.get(event)?.length === 1) {\n this.fetchStream();\n }\n }\n removeEventListener(event, listener) {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n }\n }\n emit(event, data) {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n listeners.forEach((listener) => listener(data));\n }\n }\n getHeader(name) {\n return this.headersReceived?.get(name) || null;\n }\n};\n\n// src/Chat.ts\nimport dayjs3 from \"dayjs\";\nasync function fetchChatCompletion({\n message,\n requestOptions,\n abortController,\n completions = completion,\n protocolAdaptor,\n onResponse\n}) {\n try {\n const onChunk = ({\n response\n }) => {\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n const updatedMessage = protocolAdaptor.parseChunk({\n message: _message,\n response\n });\n if (updatedMessage.status === \"error\" /* ERROR */) {\n onResponse({ ...updatedMessage, status: \"error\" /* ERROR */ });\n return;\n }\n onResponse({ ...updatedMessage, status: \"pending\" /* PENDING */ });\n };\n try {\n if (abortController?.signal) {\n abortController.signal.addEventListener(\"abort\", () => {\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n onResponse({\n ..._message,\n sending: false,\n status: \"aborted\" /* ABORTED */,\n endedAt: dayjs3().unix()\n });\n });\n }\n await completions({\n abortController,\n requestOptions,\n onChunk\n });\n } catch (error) {\n console.log(error);\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n _message.status = \"error\" /* ERROR */;\n _message.sending = false;\n _message.endedAt = Date.now();\n _message.error = {\n message: error.message || \"\\u672A\\u77E5\\u9519\\u8BEF\",\n extra: error.stack\n };\n onResponse(_message);\n return;\n }\n onResponse({\n id: message.id,\n threadId: message.threadId,\n status: message.status !== \"error\" /* ERROR */ ? \"success\" /* SUCCESS */ : \"error\" /* ERROR */,\n endedAt: Date.now()\n });\n } catch (error) {\n console.log(error);\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n _message.status = \"error\" /* ERROR */;\n _message.sending = false;\n _message.endedAt = Date.now();\n _message.error = {\n message: error.message || \"\\u672A\\u77E5\\u9519\\u8BEF\",\n extra: error.stack\n };\n onResponse(_message);\n }\n}\nasync function sendMessage({\n requestOptions,\n completions = completion,\n userMessage,\n threadId,\n allMessages = [],\n protocolAdaptor,\n abortController,\n onError: onErrorFromProps,\n override = false\n}) {\n const thread = CheckThreadExist_default(threadId);\n if (!thread) {\n onErrorFromProps?.(new Error(`\\u5BF9\\u8BDD ${threadId} \\u4E0D\\u5B58\\u5728`));\n return;\n }\n let assistantMessage = void 0;\n const beforeRequest = requestOptions.beforeRequest || (async () => ({\n dynamicParams: {},\n requestOptions: {}\n }));\n threadActions.setLoading(threadId, true);\n const onError = (error) => {\n threadActions.setLoading(threadId, false);\n onErrorFromProps?.(error);\n };\n const shouldSend = await beforeRequest({\n requestOptions,\n userMessage,\n contextMessages: allMessages,\n thread,\n onError\n });\n if (shouldSend === false) {\n threadActions.setLoading(threadId, false, false);\n return;\n }\n try {\n const requestBody = protocolAdaptor.generateRequestBody({\n dynamicParams: shouldSend.dynamicParams,\n defaultParams: requestOptions.defaultParams || {},\n userMessage,\n thread,\n contextMessages: allMessages\n });\n messageActions.addMessage(threadId, userMessage);\n assistantMessage = generateModelMessage({\n threadId\n });\n assistantMessage.threadId = threadId;\n if (override) {\n messageActions.updateMessages(threadId, [\n ...allMessages,\n assistantMessage\n ]);\n } else messageActions.addMessage(threadId, assistantMessage);\n threadActions.setSending(threadId, true);\n await fetchChatCompletion({\n abortController,\n message: assistantMessage,\n requestOptions: {\n ...requestOptions || {},\n ...shouldSend?.requestOptions || {},\n data: requestBody\n },\n completions,\n protocolAdaptor,\n onResponse: (updatedMessage) => {\n if (updatedMessage.status === \"pending\" && !updatedMessage.createdAt) {\n updatedMessage.createdAt = Date.now();\n }\n messageActions.updateMessage(threadId, updatedMessage.id, {\n updatedMessage,\n partial: true\n });\n }\n });\n } catch (error) {\n console.error(\"\\u53D1\\u9001\\u6D88\\u606F\\u5931\\u8D25:\", error);\n onErrorFromProps?.(error);\n } finally {\n threadActions.setSending(threadId, false);\n threadActions.setLoading(threadId, false);\n return;\n }\n}\nvar completion = async (params) => {\n const {\n requestOptions: { api, headers = {}, data },\n abortController,\n onChunk\n } = params;\n try {\n const eventSource = new BetterEventSource(api, {\n body: JSON.stringify(data),\n headers,\n abortSignal: abortController?.signal\n });\n return new Promise((resolve, reject) => {\n eventSource.addEventListener(\"error\", (error) => {\n if (error.code === \"AbortError\") {\n console.log(error);\n return;\n }\n reject(error);\n });\n eventSource.addEventListener(\"message\", (data2) => {\n onChunk({ response: data2, stop });\n });\n eventSource.addEventListener(\"end\", () => {\n resolve();\n });\n }).catch((err) => {\n if (err.code === \"AbortError\") {\n return;\n } else {\n throw err;\n }\n });\n } catch (error) {\n console.error(\"\\u8BF7\\u6C42\\u5931\\u8D25:\", error.message);\n throw error;\n }\n};\n\n// src/protocols/BaseProtocols.ts\nvar BaseProtocols_exports = {};\n__export(BaseProtocols_exports, {\n default: () => BaseProtocols_default\n});\nvar BaseProtocol = class {\n constructor(options) {\n this.protocol = options.protocol;\n this.protocolName = options.protocolName || options.protocol;\n }\n getProtocolName() {\n return this.protocolName;\n }\n};\nvar BaseProtocols_default = BaseProtocol;\n\n// src/protocols/constants.ts\nvar ProtocolEnum = {\n AG_UI: \"AG_UI\",\n ADK: \"ADK\",\n OPEN_AI: \"OPEN_AI\",\n ARK: \"ARK\",\n // 以上直接提供支持\n CUSTOM: \"CUSTOM\"\n};\nvar SUPPORT_PROTOCOL = [\n ProtocolEnum.ADK,\n ProtocolEnum.OPEN_AI,\n ProtocolEnum.AG_UI,\n ProtocolEnum.ARK\n];\n\n// src/protocols/Adk.ts\nimport { compact, findIndex, last } from \"lodash-es\";\nimport { v4 as uuid3 } from \"uuid\";\n\n// src/utils/getDataType.ts\nvar supportTypes = [\"image\", \"video\"];\nvar supportMimeTypes = [\"application/pdf\"];\nvar getDataType = (mimeType) => {\n const type = mimeType.split(\"/\")[0];\n if (supportTypes.includes(type)) {\n return type;\n }\n if (supportMimeTypes.includes(mimeType)) {\n return \"pdf\";\n }\n return \"unknown\";\n};\n\n// src/protocols/Adk.ts\nvar isTextPart = (part) => {\n return \"text\" in part && !(\"thought\" in part);\n};\nvar isReasoningPart = (part) => {\n return \"text\" in part && !!part.thought;\n};\nvar isFunctionCallPart = (part) => {\n return \"functionCall\" in part;\n};\nvar isFunctionResponsePart = (part) => {\n return \"functionResponse\" in part;\n};\nvar isInlineResponsePart = (part) => {\n return \"inlineData\" in part;\n};\nvar isFileDataResponsePart = (part) => {\n return \"fileData\" in part;\n};\nvar formatInlinePart = (part) => {\n const dataType = getDataType(part.inlineData?.mimeType || \"\");\n if (dataType === \"unknown\") {\n console.log(\n `[chatkit:error]: encount unknow mime type ${part.inlineData.mimeType}`\n );\n return;\n }\n if (dataType === \"image\") {\n return {\n type: dataType,\n imageUrl: {\n url: `data:${part.inlineData?.mimeType};base64,${part.inlineData.data}`\n }\n };\n }\n const id = uuid3();\n return {\n type: \"file\",\n fileId: id,\n mimeType: part.inlineData.mimeType,\n fileData: part.inlineData.data,\n // 无 data 前缀\n name: `${part.inlineData.mimeType.split(\"/\")[1]}-${id}`\n };\n};\nvar formatFilePart = (part) => {\n const id = uuid3();\n return {\n type: \"file\",\n fileId: id,\n mimeType: part.fileData.mimeType,\n fileUrl: part.fileData.fileUri,\n name: part.fileData.displayName\n };\n};\nvar AdkProtocol = class extends BaseProtocols_default {\n constructor(options) {\n super(options);\n this.protocol = ProtocolEnum.ADK;\n this.omitCompleteText = options.omitCompleteText == true;\n this.protocolName = options.protocolName || options.protocol;\n }\n // 修改parseChunk方法,使其符合父类抽象方法的定义\n parseChunk(chunk) {\n let { message, response } = chunk;\n let parsedJson = response;\n if (parsedJson.error) {\n return {\n ...message,\n error: parsedJson.error\n };\n }\n if (parsedJson.partial) {\n for (const part of parsedJson.content.parts) {\n const lastMessageContent = last(message.content);\n if (lastMessageContent && isTextMessage(lastMessageContent) && isTextPart(part)) {\n if (part.thought) {\n const thoughtMessage = findIndex(\n message.content,\n (item) => isReasoningMessage(item)\n );\n if (thoughtMessage !== -1) {\n message.content[thoughtMessage].text += part.text;\n }\n }\n message = {\n ...message,\n content: [\n ...message.content.slice(0, -1),\n {\n text: lastMessageContent.text + part.text,\n type: \"text\"\n }\n ]\n };\n } else if (isTextPart(part)) {\n message = {\n ...message,\n content: [\n ...message.content,\n {\n text: part.text,\n type: \"text\"\n }\n ]\n };\n } else if (isReasoningPart(part) && lastMessageContent && isReasoningMessage(lastMessageContent)) {\n message = {\n ...message,\n content: [\n ...message.content.slice(0, -1),\n { text: lastMessageContent.text + part.text, type: \"reasoning\" }\n ]\n };\n } else if (isReasoningPart(part)) {\n message = {\n ...message,\n content: [\n ...message.content,\n { text: part.text, type: \"reasoning\" }\n ]\n };\n }\n }\n return message;\n }\n for (const part of parsedJson.content.parts) {\n if (isFunctionCallPart(part)) {\n message = {\n ...message,\n content: [\n ...message.content,\n {\n content: null,\n toolCallId: part.functionCall.id,\n toolCallArgs: part.functionCall.args,\n toolCallName: part.functionCall.name,\n type: \"tool_call\"\n }\n ]\n };\n } else if (isFunctionResponsePart(part)) {\n message = {\n ...message,\n content: message.content.map((item) => {\n if (item.type === \"tool_call\" && item.toolCallId === part.functionResponse.id) {\n return {\n ...item,\n content: part.functionResponse.response\n };\n }\n return item;\n })\n };\n } else if (isInlineResponsePart(part)) {\n message = {\n ...message,\n content: compact([...message.content, formatInlinePart(part)])\n };\n } else if (isFileDataResponsePart(part)) {\n message = {\n ...message,\n content: compact([...message.content, formatFilePart(part)])\n };\n } else if (isTextPart(part) && part.thought) {\n message = {\n ...message,\n content: [...message.content, { text: part.text, type: \"reasoning\" }]\n };\n } else if (isTextPart(part)) {\n if (this.omitCompleteText) {\n continue;\n }\n message = {\n ...message,\n content: [...message.content, { text: part.text, type: \"text\" }]\n };\n }\n }\n return message;\n }\n // 修改generateRequestBody方法,使其符合父类抽象方法的定义\n generateRequestBody(request) {\n const { userMessage, defaultParams, dynamicParams } = request;\n const attachParts = userMessage.attaches?.map((item) => {\n const base64Data = item.url.startsWith(\"data:\") ? item.url.split(\",\")[1] : item.url;\n return {\n inlineData: {\n mimeType: item.mimeType,\n data: base64Data\n }\n };\n }) || [];\n return {\n ...defaultParams || {},\n ...dynamicParams || {},\n newMessage: {\n role: \"user\",\n parts: compact([\n ...userMessage.content?.map((item) => {\n if (item.type === \"text\") {\n return {\n text: item.text\n };\n }\n }) || [],\n ...attachParts\n ])\n }\n };\n }\n};\nvar Adk_default = AdkProtocol;\n\n// src/protocols/ark.ts\nvar ArkProtocol = class extends BaseProtocols_default {\n constructor(options) {\n super(options);\n this.protocol = ProtocolEnum.ARK;\n this.protocolName = options.protocolName || options.protocol;\n this.stream = options.stream;\n }\n // 修改parseChunk方法的签名,使其符合BaseProtocol接口定义\n parseChunk(chunk) {\n const arkResponse = chunk.response;\n const text = arkResponse.choices?.[0]?.message?.content || \"\";\n const reasoningText = arkResponse?.choices?.[0]?.message?.reasoningContent || \"\";\n return {\n ...chunk.message,\n content: [\n ...chunk.message.content,\n {\n type: \"reasoning\",\n content: reasoningText\n },\n {\n type: \"text\",\n text\n }\n ]\n };\n }\n // 修改generateRequestBody方法,确保包含defaultParams参数\n generateRequestBody(request) {\n const { userMessage, contextMessages } = request;\n return {\n model: \"doubao-seed-1-6-251015\",\n max_completion_tokens: 65535,\n messages: [\n ...contextMessages.map((item) => ({\n role: item.role,\n content: item.content.map((content) => ({\n text: content.text,\n type: \"text\"\n }))\n })),\n {\n content: [\n {\n text: userMessage.content[0].text,\n type: \"text\"\n }\n ],\n role: \"user\"\n }\n ],\n reasoning_effort: \"medium\"\n };\n }\n};\nvar ark_default = ArkProtocol;\n\n// src/protocols/getProtocol.ts\nvar getSupportProtocolAdaptor = (protocol) => {\n switch (protocol) {\n case ProtocolEnum.ARK:\n return new ark_default({\n protocolName: \"ark stream\",\n protocol: ProtocolEnum.ARK\n });\n case ProtocolEnum.ADK:\n return new Adk_default({\n protocolName: \"adk stream\",\n protocol: ProtocolEnum.ADK,\n omitCompleteText: true\n });\n default:\n return new ark_default({\n protocolName: \"ark stream\",\n protocol: ProtocolEnum.ARK\n });\n }\n};\nvar getProtocolAdaptor = (protocolOptions) => {\n if (protocolOptions.protocol === ProtocolEnum.CUSTOM) {\n return protocolOptions.protocolAdaptor;\n }\n return getSupportProtocolAdaptor(protocolOptions.protocol);\n};\nexport {\n BaseProtocols_exports as BaseProtocol,\n MessageStatusEnum,\n ProtocolEnum,\n getProtocolAdaptor,\n messageActions,\n sendMessage,\n threadActions,\n threadManagerState,\n useThreadManagerStore\n};\n//# sourceMappingURL=index.js.map"],"names":["proxy","uuid","dayjs","useSnapshot","uuidv4","dayjs2","uuid2","dayjs3","uuid3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../core/dist/index.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/Thread.ts\nimport { v4 as uuidv4 } from \"uuid\";\n\n// src/stores/index.ts\nimport { v4 as uuid } from \"uuid\";\nimport { proxy, useSnapshot } from \"valtio\";\nimport dayjs from \"dayjs\";\nvar defaultThreadManagerState = {\n currentThreadId: null,\n threadMap: {}\n};\nvar threadManagerState = proxy(defaultThreadManagerState);\nasync function initThreadManagerStore(state) {\n try {\n threadManagerState.currentThreadId = state?.currentThreadId || null;\n threadManagerState.threadMap = state?.threadMap || {};\n } catch (error) {\n console.error(\"initThreadManagerStore error\", error);\n }\n}\nvar generateThread = () => {\n const threadId = uuid();\n const thread = {\n id: threadId,\n name: \"\\u9ED8\\u8BA4\\u5BF9\\u8BDD\",\n metadata: {},\n sending: false,\n messages: [],\n createdAt: dayjs().unix()\n };\n return { currentThreadId: threadId, threadMap: { [threadId]: thread } };\n};\ninitThreadManagerStore(generateThread());\nvar useThreadManagerStore = () => useSnapshot(threadManagerState);\n\n// src/utils/CheckThreadExist.ts\nvar checkThreadExist = (threadId, throwError = true) => {\n if (!threadManagerState.threadMap[threadId]) {\n if (throwError) {\n throw new Error(`thread id ${threadId} not exists`);\n }\n return null;\n }\n return threadManagerState.threadMap[threadId];\n};\nvar CheckThreadExist_default = checkThreadExist;\n\n// src/Thread.ts\nimport dayjs2 from \"dayjs\";\nvar threadActions = {\n createThread: ({\n name = \"\",\n metadata = {},\n switchToNewThread = true\n }) => {\n const id = uuidv4();\n const thread = {\n id,\n name: name || `\\u9ED8\\u8BA4\\u5BF9\\u8BDD${id.slice(0, 4)}`,\n metadata,\n createdAt: dayjs2().unix(),\n updatedAt: dayjs2().unix(),\n messages: [],\n sending: false\n };\n threadActions.addThread(thread);\n if (switchToNewThread) {\n threadActions.setCurrentThread(thread.id);\n }\n },\n addThread: (thread) => {\n if (CheckThreadExist_default(thread.id, false)) {\n return;\n }\n threadManagerState.threadMap[thread.id] = thread;\n },\n getThread: (threadId, throwError = true) => {\n const thread = CheckThreadExist_default(threadId, throwError);\n if (!thread) {\n return null;\n }\n return threadManagerState.threadMap[threadId];\n },\n setCurrentThread: (threadId) => {\n CheckThreadExist_default(threadId);\n threadManagerState.currentThreadId = threadId;\n },\n updateThread: (threadId, thread) => {\n CheckThreadExist_default(threadId);\n threadManagerState.threadMap[threadId] = {\n ...threadManagerState.threadMap[threadId],\n ...thread,\n updatedAt: dayjs2().unix()\n };\n },\n deleteThread: (threadId) => {\n CheckThreadExist_default(threadId);\n delete threadManagerState.threadMap[threadId];\n },\n setSending: (threadId, sending) => {\n CheckThreadExist_default(threadId);\n threadActions.updateThread(threadId, { sending });\n },\n setLoading: (threadId, loading, throwError = true) => {\n const thread = CheckThreadExist_default(threadId, throwError);\n if (!thread) {\n return;\n }\n threadActions.updateThread(threadId, { loading });\n },\n getCurrentThread: () => {\n const threadId = threadManagerState.currentThreadId;\n if (!threadId) {\n return null;\n }\n return threadManagerState.threadMap[threadId];\n }\n};\n\n// src/utils/CheckMessageExist.ts\nvar checkMessageExist = (threadId, messageId, throwError = true) => {\n const thread = CheckThreadExist_default(threadId, throwError);\n if (!thread) {\n return null;\n }\n const message = thread.messages.find(\n (msg) => msg.id === messageId\n );\n if (!message) {\n if (throwError) {\n throw new Error(`message id ${messageId} not exists`);\n }\n return null;\n }\n return message;\n};\nvar CheckMessageExist_default = checkMessageExist;\n\n// src/Message.ts\nimport { cloneDeep } from \"lodash-es\";\nvar messageActions = {\n getMessage: (threadId, messageId) => {\n return CheckMessageExist_default(threadId, messageId);\n },\n addMessage: (threadId, message) => {\n const isExist = CheckThreadExist_default(threadId, false);\n if (!isExist) {\n return;\n }\n threadManagerState.threadMap[threadId].messages.push(message);\n },\n updateMessage: (threadId, messageId, updateOptions) => {\n const message = CheckMessageExist_default(threadId, messageId);\n if (!message) {\n return;\n }\n const messageIndex = threadManagerState.threadMap[threadId].messages.findIndex((msg) => msg.id === messageId);\n const { updatedMessage, partial } = updateOptions;\n if (partial) {\n threadManagerState.threadMap[threadId].messages[messageIndex] = cloneDeep(\n {\n ...threadManagerState.threadMap[threadId].messages[messageIndex],\n ...updatedMessage\n }\n );\n } else {\n threadManagerState.threadMap[threadId].messages[messageIndex] = cloneDeep(\n {\n ...updatedMessage,\n id: messageId\n }\n );\n }\n },\n updateMessages: (threadId, messages) => {\n CheckThreadExist_default(threadId);\n threadManagerState.threadMap[threadId].messages = messages;\n },\n removeMessage: (threadId, messageId) => {\n CheckMessageExist_default(threadId, messageId);\n threadManagerState.threadMap[threadId].messages = threadManagerState.threadMap[threadId].messages.filter(\n (msg) => msg.id !== messageId\n );\n }\n};\n\n// src/types/Message.ts\nvar MessageStatusEnum = /* @__PURE__ */ ((MessageStatusEnum2) => {\n MessageStatusEnum2[\"SENDING\"] = \"sending\";\n MessageStatusEnum2[\"PENDING\"] = \"pending\";\n MessageStatusEnum2[\"SUCCESS\"] = \"success\";\n MessageStatusEnum2[\"ERROR\"] = \"error\";\n MessageStatusEnum2[\"PAUSED\"] = \"paused\";\n MessageStatusEnum2[\"ABORTED\"] = \"aborted\";\n return MessageStatusEnum2;\n})(MessageStatusEnum || {});\n\n// src/utils/Message.ts\nimport { v4 as uuid2 } from \"uuid\";\nfunction generateModelMessage(message) {\n return {\n id: uuid2(),\n role: \"assistant\",\n status: \"sending\",\n content: [],\n createdAt: Date.now(),\n metadata: {},\n ...message\n };\n}\nvar isTextMessage = (message) => message.type === \"text\";\nvar isReasoningMessage = (message) => message.type === \"reasoning\";\n\n// src/sse/SseError.ts\nvar SSEError = class {\n constructor(code, message, logid) {\n this.code = code;\n this.logid = logid;\n this.message = message;\n }\n};\n\n// src/sse/JsonParser.ts\nvar removePrefix = (text) => {\n if (text.startsWith(\"data:\")) {\n return text.slice(5);\n }\n return text;\n};\nvar JsonStreamParser = class {\n constructor(jsonParseCallback, finishCallback) {\n this.buffer = \"\";\n /**\n * Event Stream 的换行格式包括三种:CRLF(回车加换行)、LF(换行)和 CR(回车)\n * 默认支持 CRLF 换行格式\n * https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream\n */\n this.endOfLine = \"\\r\\n\\r\\n\";\n this.jsonParseCallback = jsonParseCallback;\n this.finishCallback = finishCallback;\n }\n receiveChunk(chunk) {\n this.buffer += chunk;\n this.findEndOfLine();\n let jsonBoundary = this.findJsonBoundary();\n while (jsonBoundary !== -1) {\n const rawJson = removePrefix(this.buffer.substring(0, jsonBoundary));\n this.buffer = this.buffer.substring(jsonBoundary + this.endOfLine.length);\n if (rawJson.trim() === \"[DONE]\") {\n this.finishCallback();\n return;\n }\n try {\n const json = JSON.parse(rawJson);\n this.jsonParseCallback(json);\n } catch (error) {\n console.error(\"[JsonStreamParser] Failed to parse JSON\", error);\n }\n jsonBoundary = this.findJsonBoundary();\n }\n }\n findEndOfLine() {\n if (this.buffer.indexOf(\"\\r\\n\\r\\n\") !== -1) {\n this.endOfLine = \"\\r\\n\\r\\n\";\n } else if (this.buffer.indexOf(\"\\n\\n\") !== -1) {\n this.endOfLine = \"\\n\\n\";\n }\n }\n findJsonBoundary() {\n return this.buffer.indexOf(this.endOfLine);\n }\n};\n\n// src/sse/BetterEventSource.ts\nvar BetterEventSource = class {\n constructor(url, options) {\n this.headersReceived = null;\n this.isNormalFinished = false;\n this.url = url;\n this.options = options || {};\n this.eventListeners = /* @__PURE__ */ new Map();\n }\n fetchStream() {\n fetch(this.url, {\n method: \"POST\",\n headers: {\n ...this.options.headers,\n \"content-type\": \"application/json\"\n },\n body: this.options.body,\n credentials: \"include\",\n signal: this.options.abortSignal\n }).then(async (response) => {\n try {\n if (!response.ok) {\n const text = await response.text();\n this.emit(\"error\", new SSEError(\"ConnectionError\" /* ConnectionError */, text));\n return;\n }\n } catch (error) {\n try {\n response.json().then((resp) => {\n this.emit(\n \"error\",\n new SSEError(\"ConnectionError\" /* ConnectionError */, \"Fail to connect\")\n );\n });\n } catch (err) {\n this.emit(\n \"error\",\n new SSEError(\"ConnectionError\" /* ConnectionError */, \"Fail to connect\")\n );\n }\n return;\n }\n this.headersReceived = response.headers;\n this.emit(\"headerReceived\", this.headersReceived);\n const reader = response.body?.getReader();\n return this.readStream(reader);\n }).catch((error) => {\n this.emit(\n \"error\",\n new SSEError(\n error?.name || \"Error\" /* Error */,\n error?.message || \"Failed to response\"\n )\n );\n });\n }\n async readStream(reader) {\n if (!reader) {\n return;\n }\n const jsonStreamParser = new JsonStreamParser(\n (json) => {\n this.emit(\"message\", json);\n },\n () => this.isNormalFinished = true\n );\n try {\n while (true) {\n console.log(\"reading\");\n const { done, value } = await reader.read();\n if (done) {\n this.emit(\"end\");\n if (this.isNormalFinished) {\n } else {\n this.emit(\n \"error\",\n new SSEError(\n \"InterruptError\" /* InterruptError */,\n \"Request abnormal termination\"\n )\n );\n }\n break;\n }\n const text = new TextDecoder().decode(value);\n let response = null;\n if (text.startsWith(\"data:\")) {\n response = text.slice(5);\n } else {\n response = text;\n }\n jsonStreamParser.receiveChunk(response);\n }\n } catch (error) {\n this.emit(\n \"error\",\n new SSEError(\n error?.name || \"ReadableStreamError\" /* ReadableStreamError */,\n error?.message || \"Failed to read stream\"\n )\n );\n } finally {\n try {\n reader.releaseLock();\n } catch (e) {\n console.warn(\n \"Failed to release reader lock, might be already released:\",\n e\n );\n }\n }\n }\n addEventListener(event, listener) {\n if (!this.eventListeners.has(event)) {\n this.eventListeners.set(event, []);\n }\n this.eventListeners.get(event)?.push(listener);\n if (event === \"message\" && this.eventListeners.get(event)?.length === 1) {\n this.fetchStream();\n }\n }\n removeEventListener(event, listener) {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n }\n }\n emit(event, data) {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n listeners.forEach((listener) => listener(data));\n }\n }\n getHeader(name) {\n return this.headersReceived?.get(name) || null;\n }\n};\n\n// src/Chat.ts\nimport dayjs3 from \"dayjs\";\nasync function fetchChatCompletion({\n message,\n requestOptions,\n abortController,\n completions = completion,\n protocolAdaptor,\n onResponse\n}) {\n try {\n const onChunk = ({\n response\n }) => {\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n const updatedMessage = protocolAdaptor.parseChunk({\n message: _message,\n response\n });\n if (updatedMessage.status === \"error\" /* ERROR */) {\n onResponse({ ...updatedMessage, status: \"error\" /* ERROR */ });\n return;\n }\n onResponse({ ...updatedMessage, status: \"pending\" /* PENDING */ });\n };\n try {\n if (abortController?.signal) {\n abortController.signal.addEventListener(\"abort\", () => {\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n onResponse({\n ..._message,\n sending: false,\n status: \"aborted\" /* ABORTED */,\n endedAt: dayjs3().unix()\n });\n });\n }\n await completions({\n abortController,\n requestOptions,\n onChunk\n });\n } catch (error) {\n console.log(error);\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n _message.status = \"error\" /* ERROR */;\n _message.sending = false;\n _message.endedAt = Date.now();\n _message.error = {\n message: error.message || \"\\u672A\\u77E5\\u9519\\u8BEF\",\n extra: error.stack\n };\n onResponse(_message);\n return;\n }\n onResponse({\n id: message.id,\n threadId: message.threadId,\n status: message.status !== \"error\" /* ERROR */ ? \"success\" /* SUCCESS */ : \"error\" /* ERROR */,\n endedAt: Date.now()\n });\n } catch (error) {\n console.log(error);\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n _message.status = \"error\" /* ERROR */;\n _message.sending = false;\n _message.endedAt = Date.now();\n _message.error = {\n message: error.message || \"\\u672A\\u77E5\\u9519\\u8BEF\",\n extra: error.stack\n };\n onResponse(_message);\n }\n}\nasync function sendMessage({\n requestOptions,\n completions = completion,\n userMessage,\n threadId,\n allMessages = [],\n protocolAdaptor,\n abortController,\n onError: onErrorFromProps,\n override = false\n}) {\n const thread = CheckThreadExist_default(threadId);\n if (!thread) {\n onErrorFromProps?.(new Error(`\\u5BF9\\u8BDD ${threadId} \\u4E0D\\u5B58\\u5728`));\n return;\n }\n let assistantMessage = void 0;\n const beforeRequest = requestOptions.beforeRequest || (async () => ({\n dynamicParams: {},\n requestOptions: {}\n }));\n threadActions.setLoading(threadId, true);\n const onError = (error) => {\n threadActions.setLoading(threadId, false);\n onErrorFromProps?.(error);\n };\n const shouldSend = await beforeRequest({\n requestOptions,\n userMessage,\n contextMessages: allMessages,\n thread,\n onError\n });\n if (shouldSend === false) {\n threadActions.setLoading(threadId, false, false);\n return;\n }\n try {\n const requestBody = protocolAdaptor.generateRequestBody({\n dynamicParams: shouldSend.dynamicParams,\n defaultParams: requestOptions.defaultParams || {},\n userMessage,\n thread,\n contextMessages: allMessages\n });\n messageActions.addMessage(threadId, userMessage);\n assistantMessage = generateModelMessage({\n threadId\n });\n assistantMessage.threadId = threadId;\n if (override) {\n messageActions.updateMessages(threadId, [\n ...allMessages,\n assistantMessage\n ]);\n } else messageActions.addMessage(threadId, assistantMessage);\n threadActions.setSending(threadId, true);\n await fetchChatCompletion({\n abortController,\n message: assistantMessage,\n requestOptions: {\n ...requestOptions || {},\n ...shouldSend?.requestOptions || {},\n data: requestBody\n },\n completions,\n protocolAdaptor,\n onResponse: (updatedMessage) => {\n if (updatedMessage.status === \"pending\" && !updatedMessage.createdAt) {\n updatedMessage.createdAt = Date.now();\n }\n messageActions.updateMessage(threadId, updatedMessage.id, {\n updatedMessage,\n partial: true\n });\n }\n });\n } catch (error) {\n console.error(\"\\u53D1\\u9001\\u6D88\\u606F\\u5931\\u8D25:\", error);\n onErrorFromProps?.(error);\n } finally {\n threadActions.setSending(threadId, false);\n threadActions.setLoading(threadId, false);\n return;\n }\n}\nvar completion = async (params) => {\n const {\n requestOptions: { api, headers = {}, data },\n abortController,\n onChunk\n } = params;\n try {\n const eventSource = new BetterEventSource(api, {\n body: JSON.stringify(data),\n headers,\n abortSignal: abortController?.signal\n });\n return new Promise((resolve, reject) => {\n eventSource.addEventListener(\"error\", (error) => {\n if (error.code === \"AbortError\") {\n console.log(error);\n return;\n }\n reject(error);\n });\n eventSource.addEventListener(\"message\", (data2) => {\n onChunk({ response: data2, stop });\n });\n eventSource.addEventListener(\"end\", () => {\n resolve();\n });\n }).catch((err) => {\n if (err.code === \"AbortError\") {\n return;\n } else {\n throw err;\n }\n });\n } catch (error) {\n console.error(\"\\u8BF7\\u6C42\\u5931\\u8D25:\", error.message);\n throw error;\n }\n};\n\n// src/protocols/BaseProtocols.ts\nvar BaseProtocols_exports = {};\n__export(BaseProtocols_exports, {\n default: () => BaseProtocols_default\n});\nvar BaseProtocol = class {\n constructor(options) {\n this.protocol = options.protocol;\n this.protocolName = options.protocolName || options.protocol;\n }\n getProtocolName() {\n return this.protocolName;\n }\n};\nvar BaseProtocols_default = BaseProtocol;\n\n// src/protocols/constants.ts\nvar ProtocolEnum = {\n AG_UI: \"AG_UI\",\n ADK: \"ADK\",\n OPEN_AI: \"OPEN_AI\",\n ARK: \"ARK\",\n // 以上直接提供支持\n CUSTOM: \"CUSTOM\"\n};\nvar SUPPORT_PROTOCOL = [\n ProtocolEnum.ADK,\n ProtocolEnum.OPEN_AI,\n ProtocolEnum.AG_UI,\n ProtocolEnum.ARK\n];\n\n// src/protocols/Adk.ts\nimport { compact, findIndex, last } from \"lodash-es\";\nimport { v4 as uuid3 } from \"uuid\";\n\n// src/utils/getDataType.ts\nvar supportTypes = [\"image\", \"video\"];\nvar supportMimeTypes = [\"application/pdf\"];\nvar getDataType = (mimeType) => {\n const type = mimeType.split(\"/\")[0];\n if (supportTypes.includes(type)) {\n return type;\n }\n if (supportMimeTypes.includes(mimeType)) {\n return \"pdf\";\n }\n return \"unknown\";\n};\n\n// src/protocols/Adk.ts\nvar isTextPart = (part) => {\n return \"text\" in part && !(\"thought\" in part);\n};\nvar isReasoningPart = (part) => {\n return \"text\" in part && !!part.thought;\n};\nvar isFunctionCallPart = (part) => {\n return \"functionCall\" in part;\n};\nvar isFunctionResponsePart = (part) => {\n return \"functionResponse\" in part;\n};\nvar isInlineResponsePart = (part) => {\n return \"inlineData\" in part;\n};\nvar isFileDataResponsePart = (part) => {\n return \"fileData\" in part;\n};\nvar formatInlinePart = (part) => {\n const dataType = getDataType(part.inlineData?.mimeType || \"\");\n if (dataType === \"unknown\") {\n console.log(\n `[chatkit:error]: encount unknow mime type ${part.inlineData.mimeType}`\n );\n return;\n }\n if (dataType === \"image\") {\n return {\n type: dataType,\n imageUrl: {\n url: `data:${part.inlineData?.mimeType};base64,${part.inlineData.data}`\n }\n };\n }\n const id = uuid3();\n return {\n type: \"file\",\n fileId: id,\n mimeType: part.inlineData.mimeType,\n fileData: part.inlineData.data,\n // 无 data 前缀\n name: `${part.inlineData.mimeType.split(\"/\")[1]}-${id}`\n };\n};\nvar formatFilePart = (part) => {\n const id = uuid3();\n return {\n type: \"file\",\n fileId: id,\n mimeType: part.fileData.mimeType,\n fileUrl: part.fileData.fileUri,\n name: part.fileData.displayName\n };\n};\nvar AdkProtocol = class extends BaseProtocols_default {\n constructor(options) {\n super(options);\n this.protocol = ProtocolEnum.ADK;\n this.omitCompleteText = options.omitCompleteText == true;\n this.protocolName = options.protocolName || options.protocol;\n }\n // 修改parseChunk方法,使其符合父类抽象方法的定义\n parseChunk(chunk) {\n let { message, response } = chunk;\n let parsedJson = response;\n if (parsedJson.error) {\n return {\n ...message,\n error: parsedJson.error\n };\n }\n if (parsedJson.partial) {\n for (const part of parsedJson.content.parts) {\n const lastMessageContent = last(message.content);\n if (lastMessageContent && isTextMessage(lastMessageContent) && isTextPart(part)) {\n if (part.thought) {\n const thoughtMessage = findIndex(\n message.content,\n (item) => isReasoningMessage(item)\n );\n if (thoughtMessage !== -1) {\n message.content[thoughtMessage].text += part.text;\n }\n }\n message = {\n ...message,\n content: [\n ...message.content.slice(0, -1),\n {\n text: lastMessageContent.text + part.text,\n type: \"text\"\n }\n ]\n };\n } else if (isTextPart(part)) {\n message = {\n ...message,\n content: [\n ...message.content,\n {\n text: part.text,\n type: \"text\"\n }\n ]\n };\n } else if (isReasoningPart(part) && lastMessageContent && isReasoningMessage(lastMessageContent)) {\n message = {\n ...message,\n content: [\n ...message.content.slice(0, -1),\n { text: lastMessageContent.text + part.text, type: \"reasoning\" }\n ]\n };\n } else if (isReasoningPart(part)) {\n message = {\n ...message,\n content: [\n ...message.content,\n { text: part.text, type: \"reasoning\" }\n ]\n };\n }\n }\n return message;\n }\n for (const part of parsedJson.content.parts) {\n if (isFunctionCallPart(part)) {\n message = {\n ...message,\n content: [\n ...message.content,\n {\n content: null,\n toolCallId: part.functionCall.id,\n toolCallArgs: part.functionCall.args,\n toolCallName: part.functionCall.name,\n type: \"tool_call\"\n }\n ]\n };\n } else if (isFunctionResponsePart(part)) {\n message = {\n ...message,\n content: message.content.map((item) => {\n if (item.type === \"tool_call\" && item.toolCallId === part.functionResponse.id) {\n return {\n ...item,\n content: part.functionResponse.response\n };\n }\n return item;\n })\n };\n } else if (isInlineResponsePart(part)) {\n message = {\n ...message,\n content: compact([...message.content, formatInlinePart(part)])\n };\n } else if (isFileDataResponsePart(part)) {\n message = {\n ...message,\n content: compact([...message.content, formatFilePart(part)])\n };\n } else if (isTextPart(part) && part.thought) {\n message = {\n ...message,\n content: [...message.content, { text: part.text, type: \"reasoning\" }]\n };\n } else if (isTextPart(part)) {\n if (this.omitCompleteText) {\n continue;\n }\n message = {\n ...message,\n content: [...message.content, { text: part.text, type: \"text\" }]\n };\n }\n }\n return message;\n }\n // 修改generateRequestBody方法,使其符合父类抽象方法的定义\n generateRequestBody(request) {\n const { userMessage, defaultParams, dynamicParams } = request;\n const attachParts = userMessage.attaches?.map((item) => {\n const base64Data = item.url.startsWith(\"data:\") ? item.url.split(\",\")[1] : item.url;\n return {\n inlineData: {\n mimeType: item.mimeType,\n data: base64Data\n }\n };\n }) || [];\n return {\n ...defaultParams || {},\n ...dynamicParams || {},\n newMessage: {\n role: \"user\",\n parts: compact([\n ...userMessage.content?.map((item) => {\n if (item.type === \"text\") {\n return {\n text: item.text\n };\n }\n }) || [],\n ...attachParts\n ])\n }\n };\n }\n};\nvar Adk_default = AdkProtocol;\n\n// src/protocols/ark.ts\nvar ArkProtocol = class extends BaseProtocols_default {\n constructor(options) {\n super(options);\n this.protocol = ProtocolEnum.ARK;\n this.protocolName = options.protocolName || options.protocol;\n this.stream = options.stream;\n }\n // 修改parseChunk方法的签名,使其符合BaseProtocol接口定义\n parseChunk(chunk) {\n const arkResponse = chunk.response;\n const text = arkResponse.choices?.[0]?.message?.content || \"\";\n const reasoningText = arkResponse?.choices?.[0]?.message?.reasoningContent || \"\";\n return {\n ...chunk.message,\n content: [\n ...chunk.message.content,\n {\n type: \"reasoning\",\n content: reasoningText\n },\n {\n type: \"text\",\n text\n }\n ]\n };\n }\n // 修改generateRequestBody方法,确保包含defaultParams参数\n generateRequestBody(request) {\n const { userMessage, contextMessages } = request;\n return {\n model: \"doubao-seed-1-6-251015\",\n max_completion_tokens: 65535,\n messages: [\n ...contextMessages.map((item) => ({\n role: item.role,\n content: item.content.map((content) => ({\n text: content.text,\n type: \"text\"\n }))\n })),\n {\n content: [\n {\n text: userMessage.content[0].text,\n type: \"text\"\n }\n ],\n role: \"user\"\n }\n ],\n reasoning_effort: \"medium\"\n };\n }\n};\nvar ark_default = ArkProtocol;\n\n// src/protocols/getProtocol.ts\nvar getSupportProtocolAdaptor = (protocol) => {\n switch (protocol) {\n case ProtocolEnum.ARK:\n return new ark_default({\n protocolName: \"ark stream\",\n protocol: ProtocolEnum.ARK\n });\n case ProtocolEnum.ADK:\n return new Adk_default({\n protocolName: \"adk stream\",\n protocol: ProtocolEnum.ADK,\n omitCompleteText: true\n });\n default:\n return new ark_default({\n protocolName: \"ark stream\",\n protocol: ProtocolEnum.ARK\n });\n }\n};\nvar getProtocolAdaptor = (protocolOptions) => {\n if (protocolOptions.protocol === ProtocolEnum.CUSTOM) {\n return protocolOptions.protocolAdaptor;\n }\n return getSupportProtocolAdaptor(protocolOptions.protocol);\n};\nexport {\n BaseProtocols_exports as BaseProtocol,\n MessageStatusEnum,\n ProtocolEnum,\n getProtocolAdaptor,\n messageActions,\n sendMessage,\n threadActions,\n threadManagerState,\n useThreadManagerStore\n};\n//# sourceMappingURL=index.js.map"],"names":["proxy","uuid","dayjs","useSnapshot","uuidv4","dayjs2","uuid2","dayjs3","uuid3"],"mappings":"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"}
|
|
@@ -309,6 +309,7 @@ var BetterEventSource = class {
|
|
|
309
309
|
new SSEError("ConnectionError" /* ConnectionError */, "Fail to connect")
|
|
310
310
|
);
|
|
311
311
|
}
|
|
312
|
+
return;
|
|
312
313
|
}
|
|
313
314
|
this.headersReceived = response.headers;
|
|
314
315
|
this.emit("headerReceived", this.headersReceived);
|
|
@@ -336,6 +337,7 @@ var BetterEventSource = class {
|
|
|
336
337
|
);
|
|
337
338
|
try {
|
|
338
339
|
while (true) {
|
|
340
|
+
console.log("reading");
|
|
339
341
|
const { done, value } = await reader.read();
|
|
340
342
|
if (done) {
|
|
341
343
|
this.emit("end");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../core/dist/index.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/Thread.ts\nimport { v4 as uuidv4 } from \"uuid\";\n\n// src/stores/index.ts\nimport { v4 as uuid } from \"uuid\";\nimport { proxy, useSnapshot } from \"valtio\";\nimport dayjs from \"dayjs\";\nvar defaultThreadManagerState = {\n currentThreadId: null,\n threadMap: {}\n};\nvar threadManagerState = proxy(defaultThreadManagerState);\nasync function initThreadManagerStore(state) {\n try {\n threadManagerState.currentThreadId = state?.currentThreadId || null;\n threadManagerState.threadMap = state?.threadMap || {};\n } catch (error) {\n console.error(\"initThreadManagerStore error\", error);\n }\n}\nvar generateThread = () => {\n const threadId = uuid();\n const thread = {\n id: threadId,\n name: \"\\u9ED8\\u8BA4\\u5BF9\\u8BDD\",\n metadata: {},\n sending: false,\n messages: [],\n createdAt: dayjs().unix()\n };\n return { currentThreadId: threadId, threadMap: { [threadId]: thread } };\n};\ninitThreadManagerStore(generateThread());\nvar useThreadManagerStore = () => useSnapshot(threadManagerState);\n\n// src/utils/CheckThreadExist.ts\nvar checkThreadExist = (threadId, throwError = true) => {\n if (!threadManagerState.threadMap[threadId]) {\n if (throwError) {\n throw new Error(`thread id ${threadId} not exists`);\n }\n return null;\n }\n return threadManagerState.threadMap[threadId];\n};\nvar CheckThreadExist_default = checkThreadExist;\n\n// src/Thread.ts\nimport dayjs2 from \"dayjs\";\nvar threadActions = {\n createThread: ({\n name = \"\",\n metadata = {},\n switchToNewThread = true\n }) => {\n const id = uuidv4();\n const thread = {\n id,\n name: name || `\\u9ED8\\u8BA4\\u5BF9\\u8BDD${id.slice(0, 4)}`,\n metadata,\n createdAt: dayjs2().unix(),\n updatedAt: dayjs2().unix(),\n messages: [],\n sending: false\n };\n threadActions.addThread(thread);\n if (switchToNewThread) {\n threadActions.setCurrentThread(thread.id);\n }\n },\n addThread: (thread) => {\n if (CheckThreadExist_default(thread.id, false)) {\n return;\n }\n threadManagerState.threadMap[thread.id] = thread;\n },\n getThread: (threadId, throwError = true) => {\n const thread = CheckThreadExist_default(threadId, throwError);\n if (!thread) {\n return null;\n }\n return threadManagerState.threadMap[threadId];\n },\n setCurrentThread: (threadId) => {\n CheckThreadExist_default(threadId);\n threadManagerState.currentThreadId = threadId;\n },\n updateThread: (threadId, thread) => {\n CheckThreadExist_default(threadId);\n threadManagerState.threadMap[threadId] = {\n ...threadManagerState.threadMap[threadId],\n ...thread,\n updatedAt: dayjs2().unix()\n };\n },\n deleteThread: (threadId) => {\n CheckThreadExist_default(threadId);\n delete threadManagerState.threadMap[threadId];\n },\n setSending: (threadId, sending) => {\n CheckThreadExist_default(threadId);\n threadActions.updateThread(threadId, { sending });\n },\n setLoading: (threadId, loading, throwError = true) => {\n const thread = CheckThreadExist_default(threadId, throwError);\n if (!thread) {\n return;\n }\n threadActions.updateThread(threadId, { loading });\n },\n getCurrentThread: () => {\n const threadId = threadManagerState.currentThreadId;\n if (!threadId) {\n return null;\n }\n return threadManagerState.threadMap[threadId];\n }\n};\n\n// src/utils/CheckMessageExist.ts\nvar checkMessageExist = (threadId, messageId, throwError = true) => {\n const thread = CheckThreadExist_default(threadId, throwError);\n if (!thread) {\n return null;\n }\n const message = thread.messages.find(\n (msg) => msg.id === messageId\n );\n if (!message) {\n if (throwError) {\n throw new Error(`message id ${messageId} not exists`);\n }\n return null;\n }\n return message;\n};\nvar CheckMessageExist_default = checkMessageExist;\n\n// src/Message.ts\nimport { cloneDeep } from \"lodash-es\";\nvar messageActions = {\n getMessage: (threadId, messageId) => {\n return CheckMessageExist_default(threadId, messageId);\n },\n addMessage: (threadId, message) => {\n const isExist = CheckThreadExist_default(threadId, false);\n if (!isExist) {\n return;\n }\n threadManagerState.threadMap[threadId].messages.push(message);\n },\n updateMessage: (threadId, messageId, updateOptions) => {\n const message = CheckMessageExist_default(threadId, messageId);\n if (!message) {\n return;\n }\n const messageIndex = threadManagerState.threadMap[threadId].messages.findIndex((msg) => msg.id === messageId);\n const { updatedMessage, partial } = updateOptions;\n if (partial) {\n threadManagerState.threadMap[threadId].messages[messageIndex] = cloneDeep(\n {\n ...threadManagerState.threadMap[threadId].messages[messageIndex],\n ...updatedMessage\n }\n );\n } else {\n threadManagerState.threadMap[threadId].messages[messageIndex] = cloneDeep(\n {\n ...updatedMessage,\n id: messageId\n }\n );\n }\n },\n updateMessages: (threadId, messages) => {\n CheckThreadExist_default(threadId);\n threadManagerState.threadMap[threadId].messages = messages;\n },\n removeMessage: (threadId, messageId) => {\n CheckMessageExist_default(threadId, messageId);\n threadManagerState.threadMap[threadId].messages = threadManagerState.threadMap[threadId].messages.filter(\n (msg) => msg.id !== messageId\n );\n }\n};\n\n// src/types/Message.ts\nvar MessageStatusEnum = /* @__PURE__ */ ((MessageStatusEnum2) => {\n MessageStatusEnum2[\"SENDING\"] = \"sending\";\n MessageStatusEnum2[\"PENDING\"] = \"pending\";\n MessageStatusEnum2[\"SUCCESS\"] = \"success\";\n MessageStatusEnum2[\"ERROR\"] = \"error\";\n MessageStatusEnum2[\"PAUSED\"] = \"paused\";\n MessageStatusEnum2[\"ABORTED\"] = \"aborted\";\n return MessageStatusEnum2;\n})(MessageStatusEnum || {});\n\n// src/utils/Message.ts\nimport { v4 as uuid2 } from \"uuid\";\nfunction generateModelMessage(message) {\n return {\n id: uuid2(),\n role: \"assistant\",\n status: \"sending\",\n content: [],\n createdAt: Date.now(),\n metadata: {},\n ...message\n };\n}\nvar isTextMessage = (message) => message.type === \"text\";\nvar isReasoningMessage = (message) => message.type === \"reasoning\";\n\n// src/sse/SseError.ts\nvar SSEError = class {\n constructor(code, message, logid) {\n this.code = code;\n this.logid = logid;\n this.message = message;\n }\n};\n\n// src/sse/JsonParser.ts\nvar removePrefix = (text) => {\n if (text.startsWith(\"data:\")) {\n return text.slice(5);\n }\n return text;\n};\nvar JsonStreamParser = class {\n constructor(jsonParseCallback, finishCallback) {\n this.buffer = \"\";\n /**\n * Event Stream 的换行格式包括三种:CRLF(回车加换行)、LF(换行)和 CR(回车)\n * 默认支持 CRLF 换行格式\n * https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream\n */\n this.endOfLine = \"\\r\\n\\r\\n\";\n this.jsonParseCallback = jsonParseCallback;\n this.finishCallback = finishCallback;\n }\n receiveChunk(chunk) {\n this.buffer += chunk;\n this.findEndOfLine();\n let jsonBoundary = this.findJsonBoundary();\n while (jsonBoundary !== -1) {\n const rawJson = removePrefix(this.buffer.substring(0, jsonBoundary));\n this.buffer = this.buffer.substring(jsonBoundary + this.endOfLine.length);\n if (rawJson.trim() === \"[DONE]\") {\n this.finishCallback();\n return;\n }\n try {\n const json = JSON.parse(rawJson);\n this.jsonParseCallback(json);\n } catch (error) {\n console.error(\"[JsonStreamParser] Failed to parse JSON\", error);\n }\n jsonBoundary = this.findJsonBoundary();\n }\n }\n findEndOfLine() {\n if (this.buffer.indexOf(\"\\r\\n\\r\\n\") !== -1) {\n this.endOfLine = \"\\r\\n\\r\\n\";\n } else if (this.buffer.indexOf(\"\\n\\n\") !== -1) {\n this.endOfLine = \"\\n\\n\";\n }\n }\n findJsonBoundary() {\n return this.buffer.indexOf(this.endOfLine);\n }\n};\n\n// src/sse/BetterEventSource.ts\nvar BetterEventSource = class {\n constructor(url, options) {\n this.headersReceived = null;\n this.isNormalFinished = false;\n this.url = url;\n this.options = options || {};\n this.eventListeners = /* @__PURE__ */ new Map();\n }\n fetchStream() {\n fetch(this.url, {\n method: \"POST\",\n headers: {\n ...this.options.headers,\n \"content-type\": \"application/json\"\n },\n body: this.options.body,\n credentials: \"include\",\n signal: this.options.abortSignal\n }).then(async (response) => {\n try {\n if (!response.ok) {\n const text = await response.text();\n this.emit(\"error\", new SSEError(\"ConnectionError\" /* ConnectionError */, text));\n return;\n }\n } catch (error) {\n try {\n response.json().then((resp) => {\n this.emit(\n \"error\",\n new SSEError(\"ConnectionError\" /* ConnectionError */, \"Fail to connect\")\n );\n });\n } catch (err) {\n this.emit(\n \"error\",\n new SSEError(\"ConnectionError\" /* ConnectionError */, \"Fail to connect\")\n );\n }\n }\n this.headersReceived = response.headers;\n this.emit(\"headerReceived\", this.headersReceived);\n const reader = response.body?.getReader();\n return this.readStream(reader);\n }).catch((error) => {\n this.emit(\n \"error\",\n new SSEError(\n error?.name || \"Error\" /* Error */,\n error?.message || \"Failed to response\"\n )\n );\n });\n }\n async readStream(reader) {\n if (!reader) {\n return;\n }\n const jsonStreamParser = new JsonStreamParser(\n (json) => {\n this.emit(\"message\", json);\n },\n () => this.isNormalFinished = true\n );\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n this.emit(\"end\");\n if (this.isNormalFinished) {\n } else {\n this.emit(\n \"error\",\n new SSEError(\n \"InterruptError\" /* InterruptError */,\n \"Request abnormal termination\"\n )\n );\n }\n break;\n }\n const text = new TextDecoder().decode(value);\n let response = null;\n if (text.startsWith(\"data:\")) {\n response = text.slice(5);\n } else {\n response = text;\n }\n jsonStreamParser.receiveChunk(response);\n }\n } catch (error) {\n this.emit(\n \"error\",\n new SSEError(\n error?.name || \"ReadableStreamError\" /* ReadableStreamError */,\n error?.message || \"Failed to read stream\"\n )\n );\n } finally {\n try {\n reader.releaseLock();\n } catch (e) {\n console.warn(\n \"Failed to release reader lock, might be already released:\",\n e\n );\n }\n }\n }\n addEventListener(event, listener) {\n if (!this.eventListeners.has(event)) {\n this.eventListeners.set(event, []);\n }\n this.eventListeners.get(event)?.push(listener);\n if (event === \"message\" && this.eventListeners.get(event)?.length === 1) {\n this.fetchStream();\n }\n }\n removeEventListener(event, listener) {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n }\n }\n emit(event, data) {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n listeners.forEach((listener) => listener(data));\n }\n }\n getHeader(name) {\n return this.headersReceived?.get(name) || null;\n }\n};\n\n// src/Chat.ts\nimport dayjs3 from \"dayjs\";\nasync function fetchChatCompletion({\n message,\n requestOptions,\n abortController,\n completions = completion,\n protocolAdaptor,\n onResponse\n}) {\n try {\n const onChunk = ({\n response\n }) => {\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n const updatedMessage = protocolAdaptor.parseChunk({\n message: _message,\n response\n });\n if (updatedMessage.status === \"error\" /* ERROR */) {\n onResponse({ ...updatedMessage, status: \"error\" /* ERROR */ });\n return;\n }\n onResponse({ ...updatedMessage, status: \"pending\" /* PENDING */ });\n };\n try {\n if (abortController?.signal) {\n abortController.signal.addEventListener(\"abort\", () => {\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n onResponse({\n ..._message,\n sending: false,\n status: \"aborted\" /* ABORTED */,\n endedAt: dayjs3().unix()\n });\n });\n }\n await completions({\n abortController,\n requestOptions,\n onChunk\n });\n } catch (error) {\n console.log(error);\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n _message.status = \"error\" /* ERROR */;\n _message.sending = false;\n _message.endedAt = Date.now();\n _message.error = {\n message: error.message || \"\\u672A\\u77E5\\u9519\\u8BEF\",\n extra: error.stack\n };\n onResponse(_message);\n return;\n }\n onResponse({\n id: message.id,\n threadId: message.threadId,\n status: message.status !== \"error\" /* ERROR */ ? \"success\" /* SUCCESS */ : \"error\" /* ERROR */,\n endedAt: Date.now()\n });\n } catch (error) {\n console.log(error);\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n _message.status = \"error\" /* ERROR */;\n _message.sending = false;\n _message.endedAt = Date.now();\n _message.error = {\n message: error.message || \"\\u672A\\u77E5\\u9519\\u8BEF\",\n extra: error.stack\n };\n onResponse(_message);\n }\n}\nasync function sendMessage({\n requestOptions,\n completions = completion,\n userMessage,\n threadId,\n allMessages = [],\n protocolAdaptor,\n abortController,\n onError: onErrorFromProps,\n override = false\n}) {\n const thread = CheckThreadExist_default(threadId);\n if (!thread) {\n onErrorFromProps?.(new Error(`\\u5BF9\\u8BDD ${threadId} \\u4E0D\\u5B58\\u5728`));\n return;\n }\n let assistantMessage = void 0;\n const beforeRequest = requestOptions.beforeRequest || (async () => ({\n dynamicParams: {},\n requestOptions: {}\n }));\n threadActions.setLoading(threadId, true);\n const onError = (error) => {\n threadActions.setLoading(threadId, false);\n onErrorFromProps?.(error);\n };\n const shouldSend = await beforeRequest({\n requestOptions,\n userMessage,\n contextMessages: allMessages,\n thread,\n onError\n });\n if (shouldSend === false) {\n threadActions.setLoading(threadId, false, false);\n return;\n }\n try {\n const requestBody = protocolAdaptor.generateRequestBody({\n dynamicParams: shouldSend.dynamicParams,\n defaultParams: requestOptions.defaultParams || {},\n userMessage,\n thread,\n contextMessages: allMessages\n });\n messageActions.addMessage(threadId, userMessage);\n assistantMessage = generateModelMessage({\n threadId\n });\n assistantMessage.threadId = threadId;\n if (override) {\n messageActions.updateMessages(threadId, [\n ...allMessages,\n assistantMessage\n ]);\n } else messageActions.addMessage(threadId, assistantMessage);\n threadActions.setSending(threadId, true);\n await fetchChatCompletion({\n abortController,\n message: assistantMessage,\n requestOptions: {\n ...requestOptions || {},\n ...shouldSend?.requestOptions || {},\n data: requestBody\n },\n completions,\n protocolAdaptor,\n onResponse: (updatedMessage) => {\n if (updatedMessage.status === \"pending\" && !updatedMessage.createdAt) {\n updatedMessage.createdAt = Date.now();\n }\n messageActions.updateMessage(threadId, updatedMessage.id, {\n updatedMessage,\n partial: true\n });\n }\n });\n } catch (error) {\n console.error(\"\\u53D1\\u9001\\u6D88\\u606F\\u5931\\u8D25:\", error);\n onErrorFromProps?.(error);\n } finally {\n threadActions.setSending(threadId, false);\n threadActions.setLoading(threadId, false);\n return;\n }\n}\nvar completion = async (params) => {\n const {\n requestOptions: { api, headers = {}, data },\n abortController,\n onChunk\n } = params;\n try {\n const eventSource = new BetterEventSource(api, {\n body: JSON.stringify(data),\n headers,\n abortSignal: abortController?.signal\n });\n return new Promise((resolve, reject) => {\n eventSource.addEventListener(\"error\", (error) => {\n if (error.code === \"AbortError\") {\n console.log(error);\n return;\n }\n reject(error);\n });\n eventSource.addEventListener(\"message\", (data2) => {\n onChunk({ response: data2, stop });\n });\n eventSource.addEventListener(\"end\", () => {\n resolve();\n });\n }).catch((err) => {\n if (err.code === \"AbortError\") {\n return;\n } else {\n throw err;\n }\n });\n } catch (error) {\n console.error(\"\\u8BF7\\u6C42\\u5931\\u8D25:\", error.message);\n throw error;\n }\n};\n\n// src/protocols/BaseProtocols.ts\nvar BaseProtocols_exports = {};\n__export(BaseProtocols_exports, {\n default: () => BaseProtocols_default\n});\nvar BaseProtocol = class {\n constructor(options) {\n this.protocol = options.protocol;\n this.protocolName = options.protocolName || options.protocol;\n }\n getProtocolName() {\n return this.protocolName;\n }\n};\nvar BaseProtocols_default = BaseProtocol;\n\n// src/protocols/constants.ts\nvar ProtocolEnum = {\n AG_UI: \"AG_UI\",\n ADK: \"ADK\",\n OPEN_AI: \"OPEN_AI\",\n ARK: \"ARK\",\n // 以上直接提供支持\n CUSTOM: \"CUSTOM\"\n};\nvar SUPPORT_PROTOCOL = [\n ProtocolEnum.ADK,\n ProtocolEnum.OPEN_AI,\n ProtocolEnum.AG_UI,\n ProtocolEnum.ARK\n];\n\n// src/protocols/Adk.ts\nimport { compact, findIndex, last } from \"lodash-es\";\nimport { v4 as uuid3 } from \"uuid\";\n\n// src/utils/getDataType.ts\nvar supportTypes = [\"image\", \"video\"];\nvar supportMimeTypes = [\"application/pdf\"];\nvar getDataType = (mimeType) => {\n const type = mimeType.split(\"/\")[0];\n if (supportTypes.includes(type)) {\n return type;\n }\n if (supportMimeTypes.includes(mimeType)) {\n return \"pdf\";\n }\n return \"unknown\";\n};\n\n// src/protocols/Adk.ts\nvar isTextPart = (part) => {\n return \"text\" in part && !(\"thought\" in part);\n};\nvar isReasoningPart = (part) => {\n return \"text\" in part && !!part.thought;\n};\nvar isFunctionCallPart = (part) => {\n return \"functionCall\" in part;\n};\nvar isFunctionResponsePart = (part) => {\n return \"functionResponse\" in part;\n};\nvar isInlineResponsePart = (part) => {\n return \"inlineData\" in part;\n};\nvar isFileDataResponsePart = (part) => {\n return \"fileData\" in part;\n};\nvar formatInlinePart = (part) => {\n const dataType = getDataType(part.inlineData?.mimeType || \"\");\n if (dataType === \"unknown\") {\n console.log(\n `[chatkit:error]: encount unknow mime type ${part.inlineData.mimeType}`\n );\n return;\n }\n if (dataType === \"image\") {\n return {\n type: dataType,\n imageUrl: {\n url: `data:${part.inlineData?.mimeType};base64,${part.inlineData.data}`\n }\n };\n }\n const id = uuid3();\n return {\n type: \"file\",\n fileId: id,\n mimeType: part.inlineData.mimeType,\n fileData: part.inlineData.data,\n // 无 data 前缀\n name: `${part.inlineData.mimeType.split(\"/\")[1]}-${id}`\n };\n};\nvar formatFilePart = (part) => {\n const id = uuid3();\n return {\n type: \"file\",\n fileId: id,\n mimeType: part.fileData.mimeType,\n fileUrl: part.fileData.fileUri,\n name: part.fileData.displayName\n };\n};\nvar AdkProtocol = class extends BaseProtocols_default {\n constructor(options) {\n super(options);\n this.protocol = ProtocolEnum.ADK;\n this.omitCompleteText = options.omitCompleteText == true;\n this.protocolName = options.protocolName || options.protocol;\n }\n // 修改parseChunk方法,使其符合父类抽象方法的定义\n parseChunk(chunk) {\n let { message, response } = chunk;\n let parsedJson = response;\n if (parsedJson.error) {\n return {\n ...message,\n error: parsedJson.error\n };\n }\n if (parsedJson.partial) {\n for (const part of parsedJson.content.parts) {\n const lastMessageContent = last(message.content);\n if (lastMessageContent && isTextMessage(lastMessageContent) && isTextPart(part)) {\n if (part.thought) {\n const thoughtMessage = findIndex(\n message.content,\n (item) => isReasoningMessage(item)\n );\n if (thoughtMessage !== -1) {\n message.content[thoughtMessage].text += part.text;\n }\n }\n message = {\n ...message,\n content: [\n ...message.content.slice(0, -1),\n {\n text: lastMessageContent.text + part.text,\n type: \"text\"\n }\n ]\n };\n } else if (isTextPart(part)) {\n message = {\n ...message,\n content: [\n ...message.content,\n {\n text: part.text,\n type: \"text\"\n }\n ]\n };\n } else if (isReasoningPart(part) && lastMessageContent && isReasoningMessage(lastMessageContent)) {\n message = {\n ...message,\n content: [\n ...message.content.slice(0, -1),\n { text: lastMessageContent.text + part.text, type: \"reasoning\" }\n ]\n };\n } else if (isReasoningPart(part)) {\n message = {\n ...message,\n content: [\n ...message.content,\n { text: part.text, type: \"reasoning\" }\n ]\n };\n }\n }\n return message;\n }\n for (const part of parsedJson.content.parts) {\n if (isFunctionCallPart(part)) {\n message = {\n ...message,\n content: [\n ...message.content,\n {\n content: null,\n toolCallId: part.functionCall.id,\n toolCallArgs: part.functionCall.args,\n toolCallName: part.functionCall.name,\n type: \"tool_call\"\n }\n ]\n };\n } else if (isFunctionResponsePart(part)) {\n message = {\n ...message,\n content: message.content.map((item) => {\n if (item.type === \"tool_call\" && item.toolCallId === part.functionResponse.id) {\n return {\n ...item,\n content: part.functionResponse.response\n };\n }\n return item;\n })\n };\n } else if (isInlineResponsePart(part)) {\n message = {\n ...message,\n content: compact([...message.content, formatInlinePart(part)])\n };\n } else if (isFileDataResponsePart(part)) {\n message = {\n ...message,\n content: compact([...message.content, formatFilePart(part)])\n };\n } else if (isTextPart(part) && part.thought) {\n message = {\n ...message,\n content: [...message.content, { text: part.text, type: \"reasoning\" }]\n };\n } else if (isTextPart(part)) {\n if (this.omitCompleteText) {\n continue;\n }\n message = {\n ...message,\n content: [...message.content, { text: part.text, type: \"text\" }]\n };\n }\n }\n return message;\n }\n // 修改generateRequestBody方法,使其符合父类抽象方法的定义\n generateRequestBody(request) {\n const { userMessage, defaultParams, dynamicParams } = request;\n const attachParts = userMessage.attaches?.map((item) => {\n const base64Data = item.url.startsWith(\"data:\") ? item.url.split(\",\")[1] : item.url;\n return {\n inlineData: {\n mimeType: item.mimeType,\n data: base64Data\n }\n };\n }) || [];\n return {\n ...defaultParams || {},\n ...dynamicParams || {},\n newMessage: {\n role: \"user\",\n parts: compact([\n ...userMessage.content?.map((item) => {\n if (item.type === \"text\") {\n return {\n text: item.text\n };\n }\n }) || [],\n ...attachParts\n ])\n }\n };\n }\n};\nvar Adk_default = AdkProtocol;\n\n// src/protocols/ark.ts\nvar ArkProtocol = class extends BaseProtocols_default {\n constructor(options) {\n super(options);\n this.protocol = ProtocolEnum.ARK;\n this.protocolName = options.protocolName || options.protocol;\n this.stream = options.stream;\n }\n // 修改parseChunk方法的签名,使其符合BaseProtocol接口定义\n parseChunk(chunk) {\n const arkResponse = chunk.response;\n const text = arkResponse.choices?.[0]?.message?.content || \"\";\n const reasoningText = arkResponse?.choices?.[0]?.message?.reasoningContent || \"\";\n return {\n ...chunk.message,\n content: [\n ...chunk.message.content,\n {\n type: \"reasoning\",\n content: reasoningText\n },\n {\n type: \"text\",\n text\n }\n ]\n };\n }\n // 修改generateRequestBody方法,确保包含defaultParams参数\n generateRequestBody(request) {\n const { userMessage, contextMessages } = request;\n return {\n model: \"doubao-seed-1-6-251015\",\n max_completion_tokens: 65535,\n messages: [\n ...contextMessages.map((item) => ({\n role: item.role,\n content: item.content.map((content) => ({\n text: content.text,\n type: \"text\"\n }))\n })),\n {\n content: [\n {\n text: userMessage.content[0].text,\n type: \"text\"\n }\n ],\n role: \"user\"\n }\n ],\n reasoning_effort: \"medium\"\n };\n }\n};\nvar ark_default = ArkProtocol;\n\n// src/protocols/getProtocol.ts\nvar getSupportProtocolAdaptor = (protocol) => {\n switch (protocol) {\n case ProtocolEnum.ARK:\n return new ark_default({\n protocolName: \"ark stream\",\n protocol: ProtocolEnum.ARK\n });\n case ProtocolEnum.ADK:\n return new Adk_default({\n protocolName: \"adk stream\",\n protocol: ProtocolEnum.ADK,\n omitCompleteText: true\n });\n default:\n return new ark_default({\n protocolName: \"ark stream\",\n protocol: ProtocolEnum.ARK\n });\n }\n};\nvar getProtocolAdaptor = (protocolOptions) => {\n if (protocolOptions.protocol === ProtocolEnum.CUSTOM) {\n return protocolOptions.protocolAdaptor;\n }\n return getSupportProtocolAdaptor(protocolOptions.protocol);\n};\nexport {\n BaseProtocols_exports as BaseProtocol,\n MessageStatusEnum,\n ProtocolEnum,\n getProtocolAdaptor,\n messageActions,\n sendMessage,\n threadActions,\n threadManagerState,\n useThreadManagerStore\n};\n//# sourceMappingURL=index.js.map"],"names":["uuid","uuidv4","dayjs2","uuid2","dayjs3","uuid3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../core/dist/index.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/Thread.ts\nimport { v4 as uuidv4 } from \"uuid\";\n\n// src/stores/index.ts\nimport { v4 as uuid } from \"uuid\";\nimport { proxy, useSnapshot } from \"valtio\";\nimport dayjs from \"dayjs\";\nvar defaultThreadManagerState = {\n currentThreadId: null,\n threadMap: {}\n};\nvar threadManagerState = proxy(defaultThreadManagerState);\nasync function initThreadManagerStore(state) {\n try {\n threadManagerState.currentThreadId = state?.currentThreadId || null;\n threadManagerState.threadMap = state?.threadMap || {};\n } catch (error) {\n console.error(\"initThreadManagerStore error\", error);\n }\n}\nvar generateThread = () => {\n const threadId = uuid();\n const thread = {\n id: threadId,\n name: \"\\u9ED8\\u8BA4\\u5BF9\\u8BDD\",\n metadata: {},\n sending: false,\n messages: [],\n createdAt: dayjs().unix()\n };\n return { currentThreadId: threadId, threadMap: { [threadId]: thread } };\n};\ninitThreadManagerStore(generateThread());\nvar useThreadManagerStore = () => useSnapshot(threadManagerState);\n\n// src/utils/CheckThreadExist.ts\nvar checkThreadExist = (threadId, throwError = true) => {\n if (!threadManagerState.threadMap[threadId]) {\n if (throwError) {\n throw new Error(`thread id ${threadId} not exists`);\n }\n return null;\n }\n return threadManagerState.threadMap[threadId];\n};\nvar CheckThreadExist_default = checkThreadExist;\n\n// src/Thread.ts\nimport dayjs2 from \"dayjs\";\nvar threadActions = {\n createThread: ({\n name = \"\",\n metadata = {},\n switchToNewThread = true\n }) => {\n const id = uuidv4();\n const thread = {\n id,\n name: name || `\\u9ED8\\u8BA4\\u5BF9\\u8BDD${id.slice(0, 4)}`,\n metadata,\n createdAt: dayjs2().unix(),\n updatedAt: dayjs2().unix(),\n messages: [],\n sending: false\n };\n threadActions.addThread(thread);\n if (switchToNewThread) {\n threadActions.setCurrentThread(thread.id);\n }\n },\n addThread: (thread) => {\n if (CheckThreadExist_default(thread.id, false)) {\n return;\n }\n threadManagerState.threadMap[thread.id] = thread;\n },\n getThread: (threadId, throwError = true) => {\n const thread = CheckThreadExist_default(threadId, throwError);\n if (!thread) {\n return null;\n }\n return threadManagerState.threadMap[threadId];\n },\n setCurrentThread: (threadId) => {\n CheckThreadExist_default(threadId);\n threadManagerState.currentThreadId = threadId;\n },\n updateThread: (threadId, thread) => {\n CheckThreadExist_default(threadId);\n threadManagerState.threadMap[threadId] = {\n ...threadManagerState.threadMap[threadId],\n ...thread,\n updatedAt: dayjs2().unix()\n };\n },\n deleteThread: (threadId) => {\n CheckThreadExist_default(threadId);\n delete threadManagerState.threadMap[threadId];\n },\n setSending: (threadId, sending) => {\n CheckThreadExist_default(threadId);\n threadActions.updateThread(threadId, { sending });\n },\n setLoading: (threadId, loading, throwError = true) => {\n const thread = CheckThreadExist_default(threadId, throwError);\n if (!thread) {\n return;\n }\n threadActions.updateThread(threadId, { loading });\n },\n getCurrentThread: () => {\n const threadId = threadManagerState.currentThreadId;\n if (!threadId) {\n return null;\n }\n return threadManagerState.threadMap[threadId];\n }\n};\n\n// src/utils/CheckMessageExist.ts\nvar checkMessageExist = (threadId, messageId, throwError = true) => {\n const thread = CheckThreadExist_default(threadId, throwError);\n if (!thread) {\n return null;\n }\n const message = thread.messages.find(\n (msg) => msg.id === messageId\n );\n if (!message) {\n if (throwError) {\n throw new Error(`message id ${messageId} not exists`);\n }\n return null;\n }\n return message;\n};\nvar CheckMessageExist_default = checkMessageExist;\n\n// src/Message.ts\nimport { cloneDeep } from \"lodash-es\";\nvar messageActions = {\n getMessage: (threadId, messageId) => {\n return CheckMessageExist_default(threadId, messageId);\n },\n addMessage: (threadId, message) => {\n const isExist = CheckThreadExist_default(threadId, false);\n if (!isExist) {\n return;\n }\n threadManagerState.threadMap[threadId].messages.push(message);\n },\n updateMessage: (threadId, messageId, updateOptions) => {\n const message = CheckMessageExist_default(threadId, messageId);\n if (!message) {\n return;\n }\n const messageIndex = threadManagerState.threadMap[threadId].messages.findIndex((msg) => msg.id === messageId);\n const { updatedMessage, partial } = updateOptions;\n if (partial) {\n threadManagerState.threadMap[threadId].messages[messageIndex] = cloneDeep(\n {\n ...threadManagerState.threadMap[threadId].messages[messageIndex],\n ...updatedMessage\n }\n );\n } else {\n threadManagerState.threadMap[threadId].messages[messageIndex] = cloneDeep(\n {\n ...updatedMessage,\n id: messageId\n }\n );\n }\n },\n updateMessages: (threadId, messages) => {\n CheckThreadExist_default(threadId);\n threadManagerState.threadMap[threadId].messages = messages;\n },\n removeMessage: (threadId, messageId) => {\n CheckMessageExist_default(threadId, messageId);\n threadManagerState.threadMap[threadId].messages = threadManagerState.threadMap[threadId].messages.filter(\n (msg) => msg.id !== messageId\n );\n }\n};\n\n// src/types/Message.ts\nvar MessageStatusEnum = /* @__PURE__ */ ((MessageStatusEnum2) => {\n MessageStatusEnum2[\"SENDING\"] = \"sending\";\n MessageStatusEnum2[\"PENDING\"] = \"pending\";\n MessageStatusEnum2[\"SUCCESS\"] = \"success\";\n MessageStatusEnum2[\"ERROR\"] = \"error\";\n MessageStatusEnum2[\"PAUSED\"] = \"paused\";\n MessageStatusEnum2[\"ABORTED\"] = \"aborted\";\n return MessageStatusEnum2;\n})(MessageStatusEnum || {});\n\n// src/utils/Message.ts\nimport { v4 as uuid2 } from \"uuid\";\nfunction generateModelMessage(message) {\n return {\n id: uuid2(),\n role: \"assistant\",\n status: \"sending\",\n content: [],\n createdAt: Date.now(),\n metadata: {},\n ...message\n };\n}\nvar isTextMessage = (message) => message.type === \"text\";\nvar isReasoningMessage = (message) => message.type === \"reasoning\";\n\n// src/sse/SseError.ts\nvar SSEError = class {\n constructor(code, message, logid) {\n this.code = code;\n this.logid = logid;\n this.message = message;\n }\n};\n\n// src/sse/JsonParser.ts\nvar removePrefix = (text) => {\n if (text.startsWith(\"data:\")) {\n return text.slice(5);\n }\n return text;\n};\nvar JsonStreamParser = class {\n constructor(jsonParseCallback, finishCallback) {\n this.buffer = \"\";\n /**\n * Event Stream 的换行格式包括三种:CRLF(回车加换行)、LF(换行)和 CR(回车)\n * 默认支持 CRLF 换行格式\n * https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream\n */\n this.endOfLine = \"\\r\\n\\r\\n\";\n this.jsonParseCallback = jsonParseCallback;\n this.finishCallback = finishCallback;\n }\n receiveChunk(chunk) {\n this.buffer += chunk;\n this.findEndOfLine();\n let jsonBoundary = this.findJsonBoundary();\n while (jsonBoundary !== -1) {\n const rawJson = removePrefix(this.buffer.substring(0, jsonBoundary));\n this.buffer = this.buffer.substring(jsonBoundary + this.endOfLine.length);\n if (rawJson.trim() === \"[DONE]\") {\n this.finishCallback();\n return;\n }\n try {\n const json = JSON.parse(rawJson);\n this.jsonParseCallback(json);\n } catch (error) {\n console.error(\"[JsonStreamParser] Failed to parse JSON\", error);\n }\n jsonBoundary = this.findJsonBoundary();\n }\n }\n findEndOfLine() {\n if (this.buffer.indexOf(\"\\r\\n\\r\\n\") !== -1) {\n this.endOfLine = \"\\r\\n\\r\\n\";\n } else if (this.buffer.indexOf(\"\\n\\n\") !== -1) {\n this.endOfLine = \"\\n\\n\";\n }\n }\n findJsonBoundary() {\n return this.buffer.indexOf(this.endOfLine);\n }\n};\n\n// src/sse/BetterEventSource.ts\nvar BetterEventSource = class {\n constructor(url, options) {\n this.headersReceived = null;\n this.isNormalFinished = false;\n this.url = url;\n this.options = options || {};\n this.eventListeners = /* @__PURE__ */ new Map();\n }\n fetchStream() {\n fetch(this.url, {\n method: \"POST\",\n headers: {\n ...this.options.headers,\n \"content-type\": \"application/json\"\n },\n body: this.options.body,\n credentials: \"include\",\n signal: this.options.abortSignal\n }).then(async (response) => {\n try {\n if (!response.ok) {\n const text = await response.text();\n this.emit(\"error\", new SSEError(\"ConnectionError\" /* ConnectionError */, text));\n return;\n }\n } catch (error) {\n try {\n response.json().then((resp) => {\n this.emit(\n \"error\",\n new SSEError(\"ConnectionError\" /* ConnectionError */, \"Fail to connect\")\n );\n });\n } catch (err) {\n this.emit(\n \"error\",\n new SSEError(\"ConnectionError\" /* ConnectionError */, \"Fail to connect\")\n );\n }\n return;\n }\n this.headersReceived = response.headers;\n this.emit(\"headerReceived\", this.headersReceived);\n const reader = response.body?.getReader();\n return this.readStream(reader);\n }).catch((error) => {\n this.emit(\n \"error\",\n new SSEError(\n error?.name || \"Error\" /* Error */,\n error?.message || \"Failed to response\"\n )\n );\n });\n }\n async readStream(reader) {\n if (!reader) {\n return;\n }\n const jsonStreamParser = new JsonStreamParser(\n (json) => {\n this.emit(\"message\", json);\n },\n () => this.isNormalFinished = true\n );\n try {\n while (true) {\n console.log(\"reading\");\n const { done, value } = await reader.read();\n if (done) {\n this.emit(\"end\");\n if (this.isNormalFinished) {\n } else {\n this.emit(\n \"error\",\n new SSEError(\n \"InterruptError\" /* InterruptError */,\n \"Request abnormal termination\"\n )\n );\n }\n break;\n }\n const text = new TextDecoder().decode(value);\n let response = null;\n if (text.startsWith(\"data:\")) {\n response = text.slice(5);\n } else {\n response = text;\n }\n jsonStreamParser.receiveChunk(response);\n }\n } catch (error) {\n this.emit(\n \"error\",\n new SSEError(\n error?.name || \"ReadableStreamError\" /* ReadableStreamError */,\n error?.message || \"Failed to read stream\"\n )\n );\n } finally {\n try {\n reader.releaseLock();\n } catch (e) {\n console.warn(\n \"Failed to release reader lock, might be already released:\",\n e\n );\n }\n }\n }\n addEventListener(event, listener) {\n if (!this.eventListeners.has(event)) {\n this.eventListeners.set(event, []);\n }\n this.eventListeners.get(event)?.push(listener);\n if (event === \"message\" && this.eventListeners.get(event)?.length === 1) {\n this.fetchStream();\n }\n }\n removeEventListener(event, listener) {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n }\n }\n emit(event, data) {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n listeners.forEach((listener) => listener(data));\n }\n }\n getHeader(name) {\n return this.headersReceived?.get(name) || null;\n }\n};\n\n// src/Chat.ts\nimport dayjs3 from \"dayjs\";\nasync function fetchChatCompletion({\n message,\n requestOptions,\n abortController,\n completions = completion,\n protocolAdaptor,\n onResponse\n}) {\n try {\n const onChunk = ({\n response\n }) => {\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n const updatedMessage = protocolAdaptor.parseChunk({\n message: _message,\n response\n });\n if (updatedMessage.status === \"error\" /* ERROR */) {\n onResponse({ ...updatedMessage, status: \"error\" /* ERROR */ });\n return;\n }\n onResponse({ ...updatedMessage, status: \"pending\" /* PENDING */ });\n };\n try {\n if (abortController?.signal) {\n abortController.signal.addEventListener(\"abort\", () => {\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n onResponse({\n ..._message,\n sending: false,\n status: \"aborted\" /* ABORTED */,\n endedAt: dayjs3().unix()\n });\n });\n }\n await completions({\n abortController,\n requestOptions,\n onChunk\n });\n } catch (error) {\n console.log(error);\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n _message.status = \"error\" /* ERROR */;\n _message.sending = false;\n _message.endedAt = Date.now();\n _message.error = {\n message: error.message || \"\\u672A\\u77E5\\u9519\\u8BEF\",\n extra: error.stack\n };\n onResponse(_message);\n return;\n }\n onResponse({\n id: message.id,\n threadId: message.threadId,\n status: message.status !== \"error\" /* ERROR */ ? \"success\" /* SUCCESS */ : \"error\" /* ERROR */,\n endedAt: Date.now()\n });\n } catch (error) {\n console.log(error);\n const _message = messageActions.getMessage(\n message.threadId,\n message.id\n );\n _message.status = \"error\" /* ERROR */;\n _message.sending = false;\n _message.endedAt = Date.now();\n _message.error = {\n message: error.message || \"\\u672A\\u77E5\\u9519\\u8BEF\",\n extra: error.stack\n };\n onResponse(_message);\n }\n}\nasync function sendMessage({\n requestOptions,\n completions = completion,\n userMessage,\n threadId,\n allMessages = [],\n protocolAdaptor,\n abortController,\n onError: onErrorFromProps,\n override = false\n}) {\n const thread = CheckThreadExist_default(threadId);\n if (!thread) {\n onErrorFromProps?.(new Error(`\\u5BF9\\u8BDD ${threadId} \\u4E0D\\u5B58\\u5728`));\n return;\n }\n let assistantMessage = void 0;\n const beforeRequest = requestOptions.beforeRequest || (async () => ({\n dynamicParams: {},\n requestOptions: {}\n }));\n threadActions.setLoading(threadId, true);\n const onError = (error) => {\n threadActions.setLoading(threadId, false);\n onErrorFromProps?.(error);\n };\n const shouldSend = await beforeRequest({\n requestOptions,\n userMessage,\n contextMessages: allMessages,\n thread,\n onError\n });\n if (shouldSend === false) {\n threadActions.setLoading(threadId, false, false);\n return;\n }\n try {\n const requestBody = protocolAdaptor.generateRequestBody({\n dynamicParams: shouldSend.dynamicParams,\n defaultParams: requestOptions.defaultParams || {},\n userMessage,\n thread,\n contextMessages: allMessages\n });\n messageActions.addMessage(threadId, userMessage);\n assistantMessage = generateModelMessage({\n threadId\n });\n assistantMessage.threadId = threadId;\n if (override) {\n messageActions.updateMessages(threadId, [\n ...allMessages,\n assistantMessage\n ]);\n } else messageActions.addMessage(threadId, assistantMessage);\n threadActions.setSending(threadId, true);\n await fetchChatCompletion({\n abortController,\n message: assistantMessage,\n requestOptions: {\n ...requestOptions || {},\n ...shouldSend?.requestOptions || {},\n data: requestBody\n },\n completions,\n protocolAdaptor,\n onResponse: (updatedMessage) => {\n if (updatedMessage.status === \"pending\" && !updatedMessage.createdAt) {\n updatedMessage.createdAt = Date.now();\n }\n messageActions.updateMessage(threadId, updatedMessage.id, {\n updatedMessage,\n partial: true\n });\n }\n });\n } catch (error) {\n console.error(\"\\u53D1\\u9001\\u6D88\\u606F\\u5931\\u8D25:\", error);\n onErrorFromProps?.(error);\n } finally {\n threadActions.setSending(threadId, false);\n threadActions.setLoading(threadId, false);\n return;\n }\n}\nvar completion = async (params) => {\n const {\n requestOptions: { api, headers = {}, data },\n abortController,\n onChunk\n } = params;\n try {\n const eventSource = new BetterEventSource(api, {\n body: JSON.stringify(data),\n headers,\n abortSignal: abortController?.signal\n });\n return new Promise((resolve, reject) => {\n eventSource.addEventListener(\"error\", (error) => {\n if (error.code === \"AbortError\") {\n console.log(error);\n return;\n }\n reject(error);\n });\n eventSource.addEventListener(\"message\", (data2) => {\n onChunk({ response: data2, stop });\n });\n eventSource.addEventListener(\"end\", () => {\n resolve();\n });\n }).catch((err) => {\n if (err.code === \"AbortError\") {\n return;\n } else {\n throw err;\n }\n });\n } catch (error) {\n console.error(\"\\u8BF7\\u6C42\\u5931\\u8D25:\", error.message);\n throw error;\n }\n};\n\n// src/protocols/BaseProtocols.ts\nvar BaseProtocols_exports = {};\n__export(BaseProtocols_exports, {\n default: () => BaseProtocols_default\n});\nvar BaseProtocol = class {\n constructor(options) {\n this.protocol = options.protocol;\n this.protocolName = options.protocolName || options.protocol;\n }\n getProtocolName() {\n return this.protocolName;\n }\n};\nvar BaseProtocols_default = BaseProtocol;\n\n// src/protocols/constants.ts\nvar ProtocolEnum = {\n AG_UI: \"AG_UI\",\n ADK: \"ADK\",\n OPEN_AI: \"OPEN_AI\",\n ARK: \"ARK\",\n // 以上直接提供支持\n CUSTOM: \"CUSTOM\"\n};\nvar SUPPORT_PROTOCOL = [\n ProtocolEnum.ADK,\n ProtocolEnum.OPEN_AI,\n ProtocolEnum.AG_UI,\n ProtocolEnum.ARK\n];\n\n// src/protocols/Adk.ts\nimport { compact, findIndex, last } from \"lodash-es\";\nimport { v4 as uuid3 } from \"uuid\";\n\n// src/utils/getDataType.ts\nvar supportTypes = [\"image\", \"video\"];\nvar supportMimeTypes = [\"application/pdf\"];\nvar getDataType = (mimeType) => {\n const type = mimeType.split(\"/\")[0];\n if (supportTypes.includes(type)) {\n return type;\n }\n if (supportMimeTypes.includes(mimeType)) {\n return \"pdf\";\n }\n return \"unknown\";\n};\n\n// src/protocols/Adk.ts\nvar isTextPart = (part) => {\n return \"text\" in part && !(\"thought\" in part);\n};\nvar isReasoningPart = (part) => {\n return \"text\" in part && !!part.thought;\n};\nvar isFunctionCallPart = (part) => {\n return \"functionCall\" in part;\n};\nvar isFunctionResponsePart = (part) => {\n return \"functionResponse\" in part;\n};\nvar isInlineResponsePart = (part) => {\n return \"inlineData\" in part;\n};\nvar isFileDataResponsePart = (part) => {\n return \"fileData\" in part;\n};\nvar formatInlinePart = (part) => {\n const dataType = getDataType(part.inlineData?.mimeType || \"\");\n if (dataType === \"unknown\") {\n console.log(\n `[chatkit:error]: encount unknow mime type ${part.inlineData.mimeType}`\n );\n return;\n }\n if (dataType === \"image\") {\n return {\n type: dataType,\n imageUrl: {\n url: `data:${part.inlineData?.mimeType};base64,${part.inlineData.data}`\n }\n };\n }\n const id = uuid3();\n return {\n type: \"file\",\n fileId: id,\n mimeType: part.inlineData.mimeType,\n fileData: part.inlineData.data,\n // 无 data 前缀\n name: `${part.inlineData.mimeType.split(\"/\")[1]}-${id}`\n };\n};\nvar formatFilePart = (part) => {\n const id = uuid3();\n return {\n type: \"file\",\n fileId: id,\n mimeType: part.fileData.mimeType,\n fileUrl: part.fileData.fileUri,\n name: part.fileData.displayName\n };\n};\nvar AdkProtocol = class extends BaseProtocols_default {\n constructor(options) {\n super(options);\n this.protocol = ProtocolEnum.ADK;\n this.omitCompleteText = options.omitCompleteText == true;\n this.protocolName = options.protocolName || options.protocol;\n }\n // 修改parseChunk方法,使其符合父类抽象方法的定义\n parseChunk(chunk) {\n let { message, response } = chunk;\n let parsedJson = response;\n if (parsedJson.error) {\n return {\n ...message,\n error: parsedJson.error\n };\n }\n if (parsedJson.partial) {\n for (const part of parsedJson.content.parts) {\n const lastMessageContent = last(message.content);\n if (lastMessageContent && isTextMessage(lastMessageContent) && isTextPart(part)) {\n if (part.thought) {\n const thoughtMessage = findIndex(\n message.content,\n (item) => isReasoningMessage(item)\n );\n if (thoughtMessage !== -1) {\n message.content[thoughtMessage].text += part.text;\n }\n }\n message = {\n ...message,\n content: [\n ...message.content.slice(0, -1),\n {\n text: lastMessageContent.text + part.text,\n type: \"text\"\n }\n ]\n };\n } else if (isTextPart(part)) {\n message = {\n ...message,\n content: [\n ...message.content,\n {\n text: part.text,\n type: \"text\"\n }\n ]\n };\n } else if (isReasoningPart(part) && lastMessageContent && isReasoningMessage(lastMessageContent)) {\n message = {\n ...message,\n content: [\n ...message.content.slice(0, -1),\n { text: lastMessageContent.text + part.text, type: \"reasoning\" }\n ]\n };\n } else if (isReasoningPart(part)) {\n message = {\n ...message,\n content: [\n ...message.content,\n { text: part.text, type: \"reasoning\" }\n ]\n };\n }\n }\n return message;\n }\n for (const part of parsedJson.content.parts) {\n if (isFunctionCallPart(part)) {\n message = {\n ...message,\n content: [\n ...message.content,\n {\n content: null,\n toolCallId: part.functionCall.id,\n toolCallArgs: part.functionCall.args,\n toolCallName: part.functionCall.name,\n type: \"tool_call\"\n }\n ]\n };\n } else if (isFunctionResponsePart(part)) {\n message = {\n ...message,\n content: message.content.map((item) => {\n if (item.type === \"tool_call\" && item.toolCallId === part.functionResponse.id) {\n return {\n ...item,\n content: part.functionResponse.response\n };\n }\n return item;\n })\n };\n } else if (isInlineResponsePart(part)) {\n message = {\n ...message,\n content: compact([...message.content, formatInlinePart(part)])\n };\n } else if (isFileDataResponsePart(part)) {\n message = {\n ...message,\n content: compact([...message.content, formatFilePart(part)])\n };\n } else if (isTextPart(part) && part.thought) {\n message = {\n ...message,\n content: [...message.content, { text: part.text, type: \"reasoning\" }]\n };\n } else if (isTextPart(part)) {\n if (this.omitCompleteText) {\n continue;\n }\n message = {\n ...message,\n content: [...message.content, { text: part.text, type: \"text\" }]\n };\n }\n }\n return message;\n }\n // 修改generateRequestBody方法,使其符合父类抽象方法的定义\n generateRequestBody(request) {\n const { userMessage, defaultParams, dynamicParams } = request;\n const attachParts = userMessage.attaches?.map((item) => {\n const base64Data = item.url.startsWith(\"data:\") ? item.url.split(\",\")[1] : item.url;\n return {\n inlineData: {\n mimeType: item.mimeType,\n data: base64Data\n }\n };\n }) || [];\n return {\n ...defaultParams || {},\n ...dynamicParams || {},\n newMessage: {\n role: \"user\",\n parts: compact([\n ...userMessage.content?.map((item) => {\n if (item.type === \"text\") {\n return {\n text: item.text\n };\n }\n }) || [],\n ...attachParts\n ])\n }\n };\n }\n};\nvar Adk_default = AdkProtocol;\n\n// src/protocols/ark.ts\nvar ArkProtocol = class extends BaseProtocols_default {\n constructor(options) {\n super(options);\n this.protocol = ProtocolEnum.ARK;\n this.protocolName = options.protocolName || options.protocol;\n this.stream = options.stream;\n }\n // 修改parseChunk方法的签名,使其符合BaseProtocol接口定义\n parseChunk(chunk) {\n const arkResponse = chunk.response;\n const text = arkResponse.choices?.[0]?.message?.content || \"\";\n const reasoningText = arkResponse?.choices?.[0]?.message?.reasoningContent || \"\";\n return {\n ...chunk.message,\n content: [\n ...chunk.message.content,\n {\n type: \"reasoning\",\n content: reasoningText\n },\n {\n type: \"text\",\n text\n }\n ]\n };\n }\n // 修改generateRequestBody方法,确保包含defaultParams参数\n generateRequestBody(request) {\n const { userMessage, contextMessages } = request;\n return {\n model: \"doubao-seed-1-6-251015\",\n max_completion_tokens: 65535,\n messages: [\n ...contextMessages.map((item) => ({\n role: item.role,\n content: item.content.map((content) => ({\n text: content.text,\n type: \"text\"\n }))\n })),\n {\n content: [\n {\n text: userMessage.content[0].text,\n type: \"text\"\n }\n ],\n role: \"user\"\n }\n ],\n reasoning_effort: \"medium\"\n };\n }\n};\nvar ark_default = ArkProtocol;\n\n// src/protocols/getProtocol.ts\nvar getSupportProtocolAdaptor = (protocol) => {\n switch (protocol) {\n case ProtocolEnum.ARK:\n return new ark_default({\n protocolName: \"ark stream\",\n protocol: ProtocolEnum.ARK\n });\n case ProtocolEnum.ADK:\n return new Adk_default({\n protocolName: \"adk stream\",\n protocol: ProtocolEnum.ADK,\n omitCompleteText: true\n });\n default:\n return new ark_default({\n protocolName: \"ark stream\",\n protocol: ProtocolEnum.ARK\n });\n }\n};\nvar getProtocolAdaptor = (protocolOptions) => {\n if (protocolOptions.protocol === ProtocolEnum.CUSTOM) {\n return protocolOptions.protocolAdaptor;\n }\n return getSupportProtocolAdaptor(protocolOptions.protocol);\n};\nexport {\n BaseProtocols_exports as BaseProtocol,\n MessageStatusEnum,\n ProtocolEnum,\n getProtocolAdaptor,\n messageActions,\n sendMessage,\n threadActions,\n threadManagerState,\n useThreadManagerStore\n};\n//# sourceMappingURL=index.js.map"],"names":["uuid","uuidv4","dayjs2","uuid2","dayjs3","uuid3"],"mappings":"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"}
|