@aigentyc/chat-sdk 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/AGENTS.md +187 -0
  2. package/dist/ai-elements.cjs +119 -162
  3. package/dist/ai-elements.cjs.map +1 -1
  4. package/dist/ai-elements.js +5 -60
  5. package/dist/ai-elements.js.map +1 -1
  6. package/dist/{chunk-PKGD6CTD.js → chunk-2677FDTG.js} +107 -59
  7. package/dist/chunk-2677FDTG.js.map +1 -0
  8. package/dist/{chunk-42ARGQXE.js → chunk-7L4FS6G7.js} +7 -3
  9. package/dist/chunk-7L4FS6G7.js.map +1 -0
  10. package/dist/{chunk-VS3NZ7FX.js → chunk-A7PCSWIK.js} +60 -5
  11. package/dist/chunk-A7PCSWIK.js.map +1 -0
  12. package/dist/{chunk-WZLWAVSS.cjs → chunk-C24QG43M.cjs} +10 -2
  13. package/dist/chunk-C24QG43M.cjs.map +1 -0
  14. package/dist/{chunk-NW2ESHRV.js → chunk-KVEJAPWA.js} +4 -8
  15. package/dist/chunk-KVEJAPWA.js.map +1 -0
  16. package/dist/{chunk-X5YEOOPK.cjs → chunk-QDFPJJ5Y.cjs} +5 -13
  17. package/dist/chunk-QDFPJJ5Y.cjs.map +1 -0
  18. package/dist/{chunk-FQN6OBGN.cjs → chunk-RTVEBPAJ.cjs} +63 -4
  19. package/dist/chunk-RTVEBPAJ.cjs.map +1 -0
  20. package/dist/{chunk-IWIGM3RY.cjs → chunk-WQARQ2FJ.cjs} +109 -61
  21. package/dist/chunk-WQARQ2FJ.cjs.map +1 -0
  22. package/dist/components.cjs +14 -14
  23. package/dist/components.d.cts +5 -0
  24. package/dist/components.d.ts +5 -0
  25. package/dist/components.js +4 -4
  26. package/dist/index.cjs +14 -12
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +8 -1
  29. package/dist/index.d.ts +8 -1
  30. package/dist/index.js +8 -6
  31. package/dist/index.js.map +1 -1
  32. package/dist/ui.cjs +51 -51
  33. package/dist/ui.js +2 -2
  34. package/llms.txt +128 -0
  35. package/package.json +4 -1
  36. package/dist/chunk-42ARGQXE.js.map +0 -1
  37. package/dist/chunk-FQN6OBGN.cjs.map +0 -1
  38. package/dist/chunk-IWIGM3RY.cjs.map +0 -1
  39. package/dist/chunk-NW2ESHRV.js.map +0 -1
  40. package/dist/chunk-PKGD6CTD.js.map +0 -1
  41. package/dist/chunk-VS3NZ7FX.js.map +0 -1
  42. package/dist/chunk-WZLWAVSS.cjs.map +0 -1
  43. package/dist/chunk-X5YEOOPK.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ai-elements/conversation.tsx","../src/ai-elements/loader.tsx","../src/ai-elements/sources.tsx"],"names":["jsx","StickToBottom","cn","jsxs","Fragment","useStickToBottomContext","useCallback","Button","ArrowDownIcon","Collapsible","CollapsibleTrigger","ChevronDownIcon","CollapsibleContent","BookIcon"],"mappings":"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","file":"chunk-RTVEBPAJ.cjs","sourcesContent":["\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport { cn } from \"../core/utils\";\nimport { ArrowDownIcon } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\nimport { useCallback } from \"react\";\nimport { StickToBottom, useStickToBottomContext } from \"use-stick-to-bottom\";\n\nexport type ConversationProps = ComponentProps<typeof StickToBottom>;\n\nexport const Conversation = ({ className, ...props }: ConversationProps) => (\n <StickToBottom\n className={cn(\"relative flex-1 overflow-y-hidden\", className)}\n initial=\"smooth\"\n resize=\"smooth\"\n role=\"log\"\n {...props}\n />\n);\n\nexport type ConversationContentProps = ComponentProps<\n typeof StickToBottom.Content\n>;\n\nexport const ConversationContent = ({\n className,\n ...props\n}: ConversationContentProps) => (\n <StickToBottom.Content\n className={cn(\"flex flex-col gap-8\", className)}\n {...props}\n />\n);\n\nexport type ConversationEmptyStateProps = ComponentProps<\"div\"> & {\n title?: string;\n description?: string;\n icon?: React.ReactNode;\n};\n\nexport const ConversationEmptyState = ({\n className,\n title = \"No messages yet\",\n description = \"Start a conversation to see messages here\",\n icon,\n children,\n ...props\n}: ConversationEmptyStateProps) => (\n <div\n className={cn(\n \"flex size-full flex-col items-center justify-center gap-3 p-8 text-center\",\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n {icon && <div className=\"text-muted-foreground\">{icon}</div>}\n <div className=\"space-y-1\">\n <h3 className=\"font-medium text-sm\">{title}</h3>\n {description && (\n <p className=\"text-muted-foreground text-sm\">{description}</p>\n )}\n </div>\n </>\n )}\n </div>\n);\n\nexport type ConversationScrollButtonProps = ComponentProps<typeof Button>;\n\nexport const ConversationScrollButton = ({\n className,\n ...props\n}: ConversationScrollButtonProps) => {\n const { isAtBottom, scrollToBottom } = useStickToBottomContext();\n\n const handleScrollToBottom = useCallback(() => {\n scrollToBottom();\n }, [scrollToBottom]);\n\n return (\n !isAtBottom && (\n <Button\n className={cn(\n \"absolute bottom-4 left-[50%] translate-x-[-50%] rounded-full\",\n className\n )}\n onClick={handleScrollToBottom}\n size=\"icon\"\n type=\"button\"\n variant=\"outline\"\n {...props}\n >\n <ArrowDownIcon className=\"size-4\" />\n </Button>\n )\n );\n};\n","\"use client\";\n\nimport { cn } from \"../core/utils\";\nimport type { HTMLAttributes } from \"react\";\n\nexport type LoaderProps = HTMLAttributes<HTMLDivElement> & {\n text?: string;\n};\n\nexport const Loader = ({ className, text = \"Thinking...\", ...props }: LoaderProps) => (\n <div\n className={cn(\n \"flex items-center gap-2 w-full py-3\",\n className\n )}\n style={{ color: \"var(--ac-loader-color, var(--ac-primary, #2f80ed))\" }}\n {...props}\n >\n {/* Circular spinner */}\n <svg\n className=\"animate-spin\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n stroke=\"#E5E5E5\"\n strokeWidth=\"2\"\n fill=\"none\"\n />\n <path\n d=\"M10 2C14.4183 2 18 5.58172 18 10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n fill=\"none\"\n />\n </svg>\n <span className=\"text-sm text-foreground\">{text}</span>\n </div>\n);\n\n// Spinner loader for other use cases\nexport type SpinnerLoaderProps = HTMLAttributes<HTMLDivElement> & {\n size?: number;\n};\n\nexport const SpinnerLoader = ({ className, size = 16, ...props }: SpinnerLoaderProps) => (\n <div\n className={cn(\n \"inline-flex animate-spin items-center justify-center\",\n className\n )}\n {...props}\n >\n <svg\n height={size}\n strokeLinejoin=\"round\"\n style={{ color: \"currentcolor\" }}\n viewBox=\"0 0 16 16\"\n width={size}\n >\n <title>Loader</title>\n <g clipPath=\"url(#clip0_2393_1490)\">\n <path d=\"M8 0V4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 16V12\" opacity=\"0.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M3.29773 1.52783L5.64887 4.7639\" opacity=\"0.9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M12.7023 1.52783L10.3511 4.7639\" opacity=\"0.1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M12.7023 14.472L10.3511 11.236\" opacity=\"0.4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M3.29773 14.472L5.64887 11.236\" opacity=\"0.6\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M15.6085 5.52783L11.8043 6.7639\" opacity=\"0.2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M0.391602 10.472L4.19583 9.23598\" opacity=\"0.7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M15.6085 10.4722L11.8043 9.2361\" opacity=\"0.3\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M0.391602 5.52783L4.19583 6.7639\" opacity=\"0.8\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2393_1490\">\n <rect fill=\"white\" height=\"16\" width=\"16\" />\n </clipPath>\n </defs>\n </svg>\n </div>\n);\n","\"use client\";\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { cn } from \"../core/utils\";\nimport { BookIcon, ChevronDownIcon } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\n\nexport type SourcesProps = ComponentProps<\"div\">;\n\nexport const Sources = ({ className, ...props }: SourcesProps) => (\n <Collapsible\n className={cn(\"not-prose mb-4 text-primary text-xs\", className)}\n {...props}\n />\n);\n\nexport type SourcesTriggerProps = ComponentProps<typeof CollapsibleTrigger> & {\n count: number;\n};\n\nexport const SourcesTrigger = ({\n className,\n count,\n children,\n ...props\n}: SourcesTriggerProps) => (\n <CollapsibleTrigger\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n >\n {children ?? (\n <>\n <p className=\"font-medium\">Used {count} sources</p>\n <ChevronDownIcon className=\"h-4 w-4\" />\n </>\n )}\n </CollapsibleTrigger>\n);\n\nexport type SourcesContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const SourcesContent = ({\n className,\n ...props\n}: SourcesContentProps) => (\n <CollapsibleContent\n className={cn(\n \"mt-3 flex w-fit flex-col gap-2\",\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n />\n);\n\nexport type SourceProps = ComponentProps<\"a\">;\n\nexport const Source = ({ href, title, children, ...props }: SourceProps) => (\n <a\n className=\"flex items-center gap-2\"\n href={href}\n rel=\"noreferrer\"\n target=\"_blank\"\n {...props}\n >\n {children ?? (\n <>\n <BookIcon className=\"h-4 w-4\" />\n <span className=\"block font-medium\">{title}</span>\n </>\n )}\n </a>\n);\n"]}
@@ -3,7 +3,7 @@
3
3
 
4
4
  var chunkNYQSM3EB_cjs = require('./chunk-NYQSM3EB.cjs');
5
5
  var chunk7BNYTOTE_cjs = require('./chunk-7BNYTOTE.cjs');
6
- var chunkFQN6OBGN_cjs = require('./chunk-FQN6OBGN.cjs');
6
+ var chunkRTVEBPAJ_cjs = require('./chunk-RTVEBPAJ.cjs');
7
7
  var chunk3MP2EGEJ_cjs = require('./chunk-3MP2EGEJ.cjs');
8
8
  var chunkDMGYQ6NN_cjs = require('./chunk-DMGYQ6NN.cjs');
9
9
  var chunkJ2K7EJYP_cjs = require('./chunk-J2K7EJYP.cjs');
@@ -761,7 +761,38 @@ function CartDrawer({ storeOrigin, isOpen, onClose, onCartUpdate }) {
761
761
  ] })
762
762
  ] }) });
763
763
  }
764
+ function extractKbSources(parts) {
765
+ if (!Array.isArray(parts)) return [];
766
+ const out = [];
767
+ for (const part of parts) {
768
+ const p = part;
769
+ if (typeof p?.type !== "string" || !p.type.startsWith("tool-")) continue;
770
+ const name = p.toolName ?? p.type.replace(/^tool-/, "");
771
+ if (name !== "searchKnowledgeBase") continue;
772
+ let output = p.output;
773
+ if (typeof output === "string") {
774
+ try {
775
+ output = JSON.parse(output);
776
+ } catch {
777
+ }
778
+ }
779
+ const sources = output?.sources;
780
+ if (Array.isArray(sources)) {
781
+ for (const s of sources) if (s) out.push(s);
782
+ }
783
+ }
784
+ const seen = /* @__PURE__ */ new Set();
785
+ const deduped = [];
786
+ for (const s of out) {
787
+ const key = s.sourceUrl || `${s.documentName ?? ""}::${s.id ?? ""}`;
788
+ if (seen.has(key)) continue;
789
+ seen.add(key);
790
+ deduped.push(s);
791
+ }
792
+ return deduped;
793
+ }
764
794
  function ChatInterface(props) {
795
+ const { showSources = false } = props;
765
796
  const { messages, status, sendMessage, sessionId, config, clearMessages } = chunkJ2K7EJYP_cjs.useChatContext();
766
797
  const { t, direction } = chunk3MP2EGEJ_cjs.useI18n();
767
798
  chunk7BNYTOTE_cjs.useTheme();
@@ -879,75 +910,92 @@ function ChatInterface(props) {
879
910
  onCartUpdate: (count) => setCartCount(count)
880
911
  }
881
912
  ),
882
- /* @__PURE__ */ jsxRuntime.jsx(chunkFQN6OBGN_cjs.Conversation, { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkFQN6OBGN_cjs.ConversationContent, { className: "px-[15px] md:px-[40px] py-6 sm:py-8 w-full space-y-6", children: [
913
+ /* @__PURE__ */ jsxRuntime.jsx(chunkRTVEBPAJ_cjs.Conversation, { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkRTVEBPAJ_cjs.ConversationContent, { className: "px-[15px] md:px-[40px] py-6 sm:py-8 w-full space-y-6", children: [
883
914
  messages.map((message, messageIndex) => {
884
915
  if (hideFirstUserMessage && messageIndex === 0 && message.role === "user") return null;
885
- return /* @__PURE__ */ jsxRuntime.jsx(
916
+ return /* @__PURE__ */ jsxRuntime.jsxs(
886
917
  "div",
887
918
  {
888
919
  className: `group ${message.role === "assistant" ? "is-assistant" : "is-user"}`,
889
- children: [...message.parts || []].sort((a, b) => {
890
- if (a.type === "text" && b.type !== "text") return -1;
891
- if (a.type !== "text" && b.type === "text") return 1;
892
- return 0;
893
- }).map((part, i) => {
894
- if (part.type === "text") {
895
- if (message.role === "assistant") {
896
- return /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(
920
+ children: [
921
+ [...message.parts || []].sort((a, b) => {
922
+ if (a.type === "text" && b.type !== "text") return -1;
923
+ if (a.type !== "text" && b.type === "text") return 1;
924
+ return 0;
925
+ }).map((part, i) => {
926
+ if (part.type === "text") {
927
+ if (message.role === "assistant") {
928
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(
929
+ "div",
930
+ {
931
+ className: "flex gap-[10px] items-start rounded-2xl",
932
+ style: {
933
+ backgroundColor: "var(--ac-assistant-bubble-bg, transparent)",
934
+ padding: "var(--ac-assistant-bubble-padding, 0)",
935
+ color: "var(--ac-assistant-bubble-text, var(--ac-text))"
936
+ },
937
+ children: [
938
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SparklesIcon, { className: "mt-[2px] w-4 h-4 shrink-0", style: { color: "var(--ac-primary)" } }),
939
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 min-w-0 whitespace-pre-wrap", children: part.text })
940
+ ]
941
+ }
942
+ ) }, `${message.id}-${i}`);
943
+ }
944
+ return /* @__PURE__ */ jsxRuntime.jsx(
897
945
  "div",
898
946
  {
899
- className: "flex gap-[10px] items-start rounded-2xl",
947
+ className: "inline-block rounded-2xl px-3 py-2 max-w-[85%]",
900
948
  style: {
901
- backgroundColor: "var(--ac-assistant-bubble-bg, transparent)",
902
- padding: "var(--ac-assistant-bubble-padding, 0)",
903
- color: "var(--ac-assistant-bubble-text, var(--ac-text))"
949
+ backgroundColor: "var(--ac-user-bubble-bg, var(--ac-primary))",
950
+ color: "var(--ac-primary-foreground, #fff)"
904
951
  },
905
- children: [
906
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SparklesIcon, { className: "mt-[2px] w-4 h-4 shrink-0", style: { color: "var(--ac-primary)" } }),
907
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 min-w-0 whitespace-pre-wrap", children: part.text })
908
- ]
909
- }
910
- ) }, `${message.id}-${i}`);
911
- }
912
- return /* @__PURE__ */ jsxRuntime.jsx(
913
- "div",
914
- {
915
- className: "inline-block rounded-2xl px-3 py-2 max-w-[85%]",
916
- style: {
917
- backgroundColor: "var(--ac-user-bubble-bg, var(--ac-primary))",
918
- color: "var(--ac-primary-foreground, #fff)"
952
+ children: part.text
919
953
  },
920
- children: part.text
921
- },
922
- `${message.id}-${i}`
923
- );
924
- }
925
- if (part.type.startsWith("tool-")) {
926
- const toolName = part.type.replace("tool-", "");
927
- if (toolName === "requestHumanChat") return null;
928
- let output = part.output;
929
- if (typeof output === "string") {
930
- try {
931
- output = JSON.parse(output);
932
- } catch {
954
+ `${message.id}-${i}`
955
+ );
956
+ }
957
+ if (part.type.startsWith("tool-")) {
958
+ const toolName = part.type.replace("tool-", "");
959
+ if (toolName === "requestHumanChat") return null;
960
+ let output = part.output;
961
+ if (typeof output === "string") {
962
+ try {
963
+ output = JSON.parse(output);
964
+ } catch {
965
+ }
933
966
  }
967
+ const result = output && typeof output === "object" && !Array.isArray(output) && ("data" in output || "uiRenderMode" in output) ? output : { data: output };
968
+ return /* @__PURE__ */ jsxRuntime.jsx(
969
+ chunkDMGYQ6NN_cjs.ToolRenderer,
970
+ {
971
+ toolName,
972
+ state: part.state ?? "output-available",
973
+ args: part.input ?? {},
974
+ result,
975
+ onSendMessage: handleSubmit,
976
+ isProcessing
977
+ },
978
+ `${message.id}-tool-${i}`
979
+ );
934
980
  }
935
- const result = output && typeof output === "object" && !Array.isArray(output) && ("data" in output || "uiRenderMode" in output) ? output : { data: output };
936
- return /* @__PURE__ */ jsxRuntime.jsx(
937
- chunkDMGYQ6NN_cjs.ToolRenderer,
938
- {
939
- toolName,
940
- state: part.state ?? "output-available",
941
- args: part.input ?? {},
942
- result,
943
- onSendMessage: handleSubmit,
944
- isProcessing
945
- },
946
- `${message.id}-tool-${i}`
947
- );
948
- }
949
- return null;
950
- })
981
+ return null;
982
+ }),
983
+ showSources && message.role === "assistant" && (() => {
984
+ const kbSources = extractKbSources(message.parts);
985
+ if (kbSources.length === 0) return null;
986
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkRTVEBPAJ_cjs.Sources, { children: [
987
+ /* @__PURE__ */ jsxRuntime.jsx(chunkRTVEBPAJ_cjs.SourcesTrigger, { count: kbSources.length }),
988
+ /* @__PURE__ */ jsxRuntime.jsx(chunkRTVEBPAJ_cjs.SourcesContent, { children: kbSources.map((s, idx) => /* @__PURE__ */ jsxRuntime.jsx(
989
+ chunkRTVEBPAJ_cjs.Source,
990
+ {
991
+ href: s.sourceUrl ?? "#",
992
+ title: s.documentName || s.pageTitle || `Source ${idx + 1}`
993
+ },
994
+ `${message.id}-src-${idx}`
995
+ )) })
996
+ ] });
997
+ })()
998
+ ]
951
999
  },
952
1000
  message.id
953
1001
  );
@@ -960,7 +1008,7 @@ function ChatInterface(props) {
960
1008
  );
961
1009
  const allToolsComplete = (lastMessage.parts || []).filter((p) => p.type.startsWith("tool-")).every((p) => p.state === "output-available");
962
1010
  return allToolsComplete && !hasText;
963
- })() && /* @__PURE__ */ jsxRuntime.jsx(chunkFQN6OBGN_cjs.Loader, { text: t("thinking") })
1011
+ })() && /* @__PURE__ */ jsxRuntime.jsx(chunkRTVEBPAJ_cjs.Loader, { text: t("thinking") })
964
1012
  ] }) }),
965
1013
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "shrink-0 px-[15px] md:px-[40px] pb-2", style: { backgroundColor: "var(--ac-background)" }, children: [
966
1014
  props.pageQuestions && props.pageQuestions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
@@ -1639,5 +1687,5 @@ exports.MobileLiveChatDrawer = MobileLiveChatDrawer;
1639
1687
  exports.PreviewEmbedPanel = PreviewEmbedPanel;
1640
1688
  exports.QuickQuestions = QuickQuestions;
1641
1689
  exports.WelcomePage = WelcomePage;
1642
- //# sourceMappingURL=chunk-IWIGM3RY.cjs.map
1643
- //# sourceMappingURL=chunk-IWIGM3RY.cjs.map
1690
+ //# sourceMappingURL=chunk-WQARQ2FJ.cjs.map
1691
+ //# sourceMappingURL=chunk-WQARQ2FJ.cjs.map