@chat-lab/ui 0.1.0-beta.43 → 0.1.0-beta.45

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 (60) hide show
  1. package/dist/_virtual/index4.cjs +2 -5
  2. package/dist/_virtual/index4.cjs.map +1 -1
  3. package/dist/_virtual/index4.js +2 -5
  4. package/dist/_virtual/index4.js.map +1 -1
  5. package/dist/_virtual/index5.cjs +5 -2
  6. package/dist/_virtual/index5.cjs.map +1 -1
  7. package/dist/_virtual/index5.js +5 -2
  8. package/dist/_virtual/index5.js.map +1 -1
  9. package/dist/assets/ThumbDownIcon.cjs +1 -1
  10. package/dist/assets/ThumbDownIcon.cjs.map +1 -1
  11. package/dist/assets/ThumbDownIcon.js +1 -1
  12. package/dist/assets/ThumbDownIcon.js.map +1 -1
  13. package/dist/components/Chatkit/index.cjs +2 -2
  14. package/dist/components/Chatkit/index.cjs.map +1 -1
  15. package/dist/components/Chatkit/index.js +2 -2
  16. package/dist/components/Chatkit/index.js.map +1 -1
  17. package/dist/components/Chatkit/types.d.ts +3 -1
  18. package/dist/components/Chatkit/types.d.ts.map +1 -1
  19. package/dist/components/thread-list.cjs +1 -1
  20. package/dist/components/thread-list.cjs.map +1 -1
  21. package/dist/components/thread-list.js +1 -1
  22. package/dist/components/thread-list.js.map +1 -1
  23. package/dist/hooks/useADKChat.cjs +49 -4
  24. package/dist/hooks/useADKChat.cjs.map +1 -1
  25. package/dist/hooks/useADKChat.d.ts +6 -1
  26. package/dist/hooks/useADKChat.d.ts.map +1 -1
  27. package/dist/hooks/useADKChat.js +50 -5
  28. package/dist/hooks/useADKChat.js.map +1 -1
  29. package/dist/node_modules/.pnpm/@a2a-js_sdk@0.3.7_express@5.1.0/node_modules/@a2a-js/sdk/dist/chunk-3QDLXHKS.cjs +7 -0
  30. package/dist/node_modules/.pnpm/@a2a-js_sdk@0.3.7_express@5.1.0/node_modules/@a2a-js/sdk/dist/chunk-3QDLXHKS.cjs.map +1 -0
  31. package/dist/node_modules/.pnpm/@a2a-js_sdk@0.3.7_express@5.1.0/node_modules/@a2a-js/sdk/dist/chunk-3QDLXHKS.js +5 -0
  32. package/dist/node_modules/.pnpm/@a2a-js_sdk@0.3.7_express@5.1.0/node_modules/@a2a-js/sdk/dist/chunk-3QDLXHKS.js.map +1 -0
  33. package/dist/node_modules/.pnpm/@a2a-js_sdk@0.3.7_express@5.1.0/node_modules/@a2a-js/sdk/dist/chunk-SJNAG4AL.cjs +100 -0
  34. package/dist/node_modules/.pnpm/@a2a-js_sdk@0.3.7_express@5.1.0/node_modules/@a2a-js/sdk/dist/chunk-SJNAG4AL.cjs.map +1 -0
  35. package/dist/node_modules/.pnpm/@a2a-js_sdk@0.3.7_express@5.1.0/node_modules/@a2a-js/sdk/dist/chunk-SJNAG4AL.js +90 -0
  36. package/dist/node_modules/.pnpm/@a2a-js_sdk@0.3.7_express@5.1.0/node_modules/@a2a-js/sdk/dist/chunk-SJNAG4AL.js.map +1 -0
  37. package/dist/node_modules/.pnpm/@a2a-js_sdk@0.3.7_express@5.1.0/node_modules/@a2a-js/sdk/dist/client/index.cjs +975 -0
  38. package/dist/node_modules/.pnpm/@a2a-js_sdk@0.3.7_express@5.1.0/node_modules/@a2a-js/sdk/dist/client/index.cjs.map +1 -0
  39. package/dist/node_modules/.pnpm/@a2a-js_sdk@0.3.7_express@5.1.0/node_modules/@a2a-js/sdk/dist/client/index.js +958 -0
  40. package/dist/node_modules/.pnpm/@a2a-js_sdk@0.3.7_express@5.1.0/node_modules/@a2a-js/sdk/dist/client/index.js.map +1 -0
  41. package/dist/node_modules/.pnpm/@assistant-ui_react@0.11.37_patch_hash_wncib234fzw2z5h67nrdhchb2a_@types_react-dom@17.0.2_@ty_c64hu5rigivj2gtpzfqjqatr5y/node_modules/@assistant-ui/react/dist/primitives/messagePart/useMessagePartText.cjs.map +1 -1
  42. package/dist/node_modules/.pnpm/@assistant-ui_react@0.11.37_patch_hash_wncib234fzw2z5h67nrdhchb2a_@types_react-dom@17.0.2_@ty_c64hu5rigivj2gtpzfqjqatr5y/node_modules/@assistant-ui/react/dist/primitives/messagePart/useMessagePartText.js.map +1 -1
  43. package/dist/node_modules/.pnpm/@cloudfun_web-sdk@3.1.7_@volcengine_console-web-sdk@6.2.0/node_modules/@cloudfun/web-sdk/lib/util.cjs +1 -1
  44. package/dist/node_modules/.pnpm/@cloudfun_web-sdk@3.1.7_@volcengine_console-web-sdk@6.2.0/node_modules/@cloudfun/web-sdk/lib/util.js +1 -1
  45. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.cjs +1 -1
  46. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.js +1 -1
  47. package/dist/node_modules/.pnpm/valtio@2.1.8_patch_hash_boxi3qpsg2dztwe4vz7tsjpr3m_@types_react@17.0.2_react@17.0.2/node_modules/valtio/esm/vanilla.cjs +0 -1
  48. package/dist/node_modules/.pnpm/valtio@2.1.8_patch_hash_boxi3qpsg2dztwe4vz7tsjpr3m_@types_react@17.0.2_react@17.0.2/node_modules/valtio/esm/vanilla.cjs.map +1 -1
  49. package/dist/node_modules/.pnpm/valtio@2.1.8_patch_hash_boxi3qpsg2dztwe4vz7tsjpr3m_@types_react@17.0.2_react@17.0.2/node_modules/valtio/esm/vanilla.js +0 -1
  50. package/dist/node_modules/.pnpm/valtio@2.1.8_patch_hash_boxi3qpsg2dztwe4vz7tsjpr3m_@types_react@17.0.2_react@17.0.2/node_modules/valtio/esm/vanilla.js.map +1 -1
  51. package/dist/packages/chatui/node_modules/@cloudfun/top-proxy-sdk/lib/client.cjs +1 -1
  52. package/dist/packages/chatui/node_modules/@cloudfun/top-proxy-sdk/lib/client.cjs.map +1 -1
  53. package/dist/packages/chatui/node_modules/@cloudfun/top-proxy-sdk/lib/client.js +1 -1
  54. package/dist/packages/chatui/node_modules/@cloudfun/top-proxy-sdk/lib/client.js.map +1 -1
  55. package/dist/packages/core/dist/index.cjs +186 -20
  56. package/dist/packages/core/dist/index.cjs.map +1 -1
  57. package/dist/packages/core/dist/index.js +185 -21
  58. package/dist/packages/core/dist/index.js.map +1 -1
  59. package/dist/plugins/adkPlugin.d.ts.map +1 -1
  60. package/package.json +1 -3
@@ -1,9 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var _commonjsHelpers = require('./_commonjsHelpers.cjs');
4
- var index = require('../node_modules/.pnpm/@volcengine_console-web-sdk@6.2.0/node_modules/@volcengine/console-web-sdk/dist/js/treeshaking/index.cjs');
3
+ var cryptoJs = {exports: {}};
5
4
 
6
- var require$$0 = /*@__PURE__*/_commonjsHelpers.getAugmentedNamespace(index);
7
-
8
- module.exports = require$$0;
5
+ exports.__module = cryptoJs;
9
6
  //# sourceMappingURL=index4.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index4.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
1
+ {"version":3,"file":"index4.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,7 +1,4 @@
1
- import { getAugmentedNamespace } from './_commonjsHelpers.js';
2
- import * as index from '../node_modules/.pnpm/@volcengine_console-web-sdk@6.2.0/node_modules/@volcengine/console-web-sdk/dist/js/treeshaking/index.js';
1
+ var cryptoJs = {exports: {}};
3
2
 
4
- var require$$0 = /*@__PURE__*/getAugmentedNamespace(index);
5
-
6
- export { require$$0 as default };
3
+ export { cryptoJs as __module };
7
4
  //# sourceMappingURL=index4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
1
+ {"version":3,"file":"index4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,6 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var cryptoJs = {exports: {}};
3
+ var _commonjsHelpers = require('./_commonjsHelpers.cjs');
4
+ var index = require('../node_modules/.pnpm/@volcengine_console-web-sdk@6.2.0/node_modules/@volcengine/console-web-sdk/dist/js/treeshaking/index.cjs');
4
5
 
5
- exports.__module = cryptoJs;
6
+ var require$$0 = /*@__PURE__*/_commonjsHelpers.getAugmentedNamespace(index);
7
+
8
+ module.exports = require$$0;
6
9
  //# sourceMappingURL=index5.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index5.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
1
+ {"version":3,"file":"index5.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -1,4 +1,7 @@
1
- var cryptoJs = {exports: {}};
1
+ import { getAugmentedNamespace } from './_commonjsHelpers.js';
2
+ import * as index from '../node_modules/.pnpm/@volcengine_console-web-sdk@6.2.0/node_modules/@volcengine/console-web-sdk/dist/js/treeshaking/index.js';
2
3
 
3
- export { cryptoJs as __module };
4
+ var require$$0 = /*@__PURE__*/getAugmentedNamespace(index);
5
+
6
+ export { require$$0 as default };
4
7
  //# sourceMappingURL=index5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index5.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index5.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
 
5
- const ThumbDownIcon = ({ className, fill = "#737A87", }) => (jsxRuntime.jsxs("svg", { className: className, width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntime.jsx("g", { "clip-path": "url(#clip0_154_4247)", children: jsxRuntime.jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M7.11877 15.1695L6.99716 15.1125C6.18652 14.7217 5.00927 13.9328 5.00927 12.6662C5.00927 12.164 5.23222 11.498 5.67812 10.6681H3.15198C1.16272 10.6681 0.705836 8.91222 1.16272 7.5965L3.15198 2.35976C3.32008 1.75067 3.87989 1.32812 4.51873 1.32813L12.3487 1.32813C12.5328 1.32813 12.6821 1.47736 12.6821 1.66146L12.6821 10.3348C12.6821 10.5189 12.5328 10.6681 12.3487 10.6681H11.3174L8.3507 14.8884C8.16337 15.1865 7.65771 15.415 7.11877 15.1695ZM14.0105 10.6671C13.8264 10.6671 13.6771 10.5179 13.6771 10.3338V1.6671C13.6771 1.48301 13.8264 1.33377 14.0105 1.33377L14.6771 1.33377C14.8612 1.33377 15.0105 1.48301 15.0105 1.6671V10.3338C15.0105 10.5179 14.8612 10.6671 14.6771 10.6671H14.0105ZM7.45133 13.8494L10.6249 9.33479H11.3487L11.3487 2.66146L4.51873 2.66146C4.47739 2.66146 4.44519 2.68576 4.43727 2.71447L4.42063 2.77476L2.4167 8.05009C2.15324 8.82618 2.41603 9.33479 3.15198 9.33479H7.90818L6.85264 11.2992C6.50163 11.9525 6.3426 12.4275 6.3426 12.6662C6.3426 13.053 6.75709 13.4906 7.45133 13.8494Z", fill: fill }) }), jsxRuntime.jsx("defs", { children: jsxRuntime.jsx("clipPath", { id: "clip0_154_4247", children: jsxRuntime.jsx("rect", { width: "16", height: "16", fill: "white" }) }) })] }));
5
+ const ThumbDownIcon = ({ className, fill = "#737A87", }) => (jsxRuntime.jsxs("svg", { className: className, width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntime.jsx("g", { clipPath: "url(#clip0_154_4247)", children: jsxRuntime.jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M7.11877 15.1695L6.99716 15.1125C6.18652 14.7217 5.00927 13.9328 5.00927 12.6662C5.00927 12.164 5.23222 11.498 5.67812 10.6681H3.15198C1.16272 10.6681 0.705836 8.91222 1.16272 7.5965L3.15198 2.35976C3.32008 1.75067 3.87989 1.32812 4.51873 1.32813L12.3487 1.32813C12.5328 1.32813 12.6821 1.47736 12.6821 1.66146L12.6821 10.3348C12.6821 10.5189 12.5328 10.6681 12.3487 10.6681H11.3174L8.3507 14.8884C8.16337 15.1865 7.65771 15.415 7.11877 15.1695ZM14.0105 10.6671C13.8264 10.6671 13.6771 10.5179 13.6771 10.3338V1.6671C13.6771 1.48301 13.8264 1.33377 14.0105 1.33377L14.6771 1.33377C14.8612 1.33377 15.0105 1.48301 15.0105 1.6671V10.3338C15.0105 10.5179 14.8612 10.6671 14.6771 10.6671H14.0105ZM7.45133 13.8494L10.6249 9.33479H11.3487L11.3487 2.66146L4.51873 2.66146C4.47739 2.66146 4.44519 2.68576 4.43727 2.71447L4.42063 2.77476L2.4167 8.05009C2.15324 8.82618 2.41603 9.33479 3.15198 9.33479H7.90818L6.85264 11.2992C6.50163 11.9525 6.3426 12.4275 6.3426 12.6662C6.3426 13.053 6.75709 13.4906 7.45133 13.8494Z", fill: fill }) }), jsxRuntime.jsx("defs", { children: jsxRuntime.jsx("clipPath", { id: "clip0_154_4247", children: jsxRuntime.jsx("rect", { width: "16", height: "16", fill: "white" }) }) })] }));
6
6
 
7
7
  module.exports = ThumbDownIcon;
8
8
  //# sourceMappingURL=ThumbDownIcon.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThumbDownIcon.cjs","sources":["../../src/assets/ThumbDownIcon.tsx"],"sourcesContent":["const ThumbDownIcon = ({\n className,\n fill = \"#737A87\",\n}: {\n className?: string;\n fill?: string;\n}) => (\n <svg\n className={className}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_154_4247)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.11877 15.1695L6.99716 15.1125C6.18652 14.7217 5.00927 13.9328 5.00927 12.6662C5.00927 12.164 5.23222 11.498 5.67812 10.6681H3.15198C1.16272 10.6681 0.705836 8.91222 1.16272 7.5965L3.15198 2.35976C3.32008 1.75067 3.87989 1.32812 4.51873 1.32813L12.3487 1.32813C12.5328 1.32813 12.6821 1.47736 12.6821 1.66146L12.6821 10.3348C12.6821 10.5189 12.5328 10.6681 12.3487 10.6681H11.3174L8.3507 14.8884C8.16337 15.1865 7.65771 15.415 7.11877 15.1695ZM14.0105 10.6671C13.8264 10.6671 13.6771 10.5179 13.6771 10.3338V1.6671C13.6771 1.48301 13.8264 1.33377 14.0105 1.33377L14.6771 1.33377C14.8612 1.33377 15.0105 1.48301 15.0105 1.6671V10.3338C15.0105 10.5179 14.8612 10.6671 14.6771 10.6671H14.0105ZM7.45133 13.8494L10.6249 9.33479H11.3487L11.3487 2.66146L4.51873 2.66146C4.47739 2.66146 4.44519 2.68576 4.43727 2.71447L4.42063 2.77476L2.4167 8.05009C2.15324 8.82618 2.41603 9.33479 3.15198 9.33479H7.90818L6.85264 11.2992C6.50163 11.9525 6.3426 12.4275 6.3426 12.6662C6.3426 13.053 6.75709 13.4906 7.45133 13.8494Z\"\n fill={fill}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_154_4247\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default ThumbDownIcon;\n"],"names":["_jsxs","_jsx"],"mappings":";;;;AAAA,MAAM,aAAa,GAAG,CAAC,EACrB,SAAS,EACT,IAAI,GAAG,SAAS,GAIjB,MACCA,yBACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAAA,QAAA,EAAA,CAElCC,mCAAa,sBAAsB,EAAA,QAAA,EACjCA,cACE,CAAA,MAAA,EAAA,EAAA,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,k/BAAk/B,EACp/B,IAAI,EAAE,IAAI,GACV,EACA,CAAA,EACJA,mCACEA,cAAU,CAAA,UAAA,EAAA,EAAA,EAAE,EAAC,gBAAgB,YAC3BA,cAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAA,CAAG,GACnC,EACN,CAAA,CAAA,EAAA,CACH;;;;"}
1
+ {"version":3,"file":"ThumbDownIcon.cjs","sources":["../../src/assets/ThumbDownIcon.tsx"],"sourcesContent":["const ThumbDownIcon = ({\n className,\n fill = \"#737A87\",\n}: {\n className?: string;\n fill?: string;\n}) => (\n <svg\n className={className}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_154_4247)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.11877 15.1695L6.99716 15.1125C6.18652 14.7217 5.00927 13.9328 5.00927 12.6662C5.00927 12.164 5.23222 11.498 5.67812 10.6681H3.15198C1.16272 10.6681 0.705836 8.91222 1.16272 7.5965L3.15198 2.35976C3.32008 1.75067 3.87989 1.32812 4.51873 1.32813L12.3487 1.32813C12.5328 1.32813 12.6821 1.47736 12.6821 1.66146L12.6821 10.3348C12.6821 10.5189 12.5328 10.6681 12.3487 10.6681H11.3174L8.3507 14.8884C8.16337 15.1865 7.65771 15.415 7.11877 15.1695ZM14.0105 10.6671C13.8264 10.6671 13.6771 10.5179 13.6771 10.3338V1.6671C13.6771 1.48301 13.8264 1.33377 14.0105 1.33377L14.6771 1.33377C14.8612 1.33377 15.0105 1.48301 15.0105 1.6671V10.3338C15.0105 10.5179 14.8612 10.6671 14.6771 10.6671H14.0105ZM7.45133 13.8494L10.6249 9.33479H11.3487L11.3487 2.66146L4.51873 2.66146C4.47739 2.66146 4.44519 2.68576 4.43727 2.71447L4.42063 2.77476L2.4167 8.05009C2.15324 8.82618 2.41603 9.33479 3.15198 9.33479H7.90818L6.85264 11.2992C6.50163 11.9525 6.3426 12.4275 6.3426 12.6662C6.3426 13.053 6.75709 13.4906 7.45133 13.8494Z\"\n fill={fill}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_154_4247\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default ThumbDownIcon;\n"],"names":["_jsxs","_jsx"],"mappings":";;;;AAAA,MAAM,aAAa,GAAG,CAAC,EACrB,SAAS,EACT,IAAI,GAAG,SAAS,GAIjB,MACCA,yBACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAElC,QAAA,EAAA,CAAAC,cAAA,CAAA,GAAA,EAAA,EAAG,QAAQ,EAAC,sBAAsB,EAChC,QAAA,EAAAA,cAAA,CAAA,MAAA,EAAA,EACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,k/BAAk/B,EACp/B,IAAI,EAAE,IAAI,EACV,CAAA,EAAA,CACA,EACJA,cACE,CAAA,MAAA,EAAA,EAAA,QAAA,EAAAA,cAAA,CAAA,UAAA,EAAA,EAAU,EAAE,EAAC,gBAAgB,EAC3B,QAAA,EAAAA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAA,CAAG,GACnC,EACN,CAAA,CAAA,EAAA,CACH;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
 
3
- const ThumbDownIcon = ({ className, fill = "#737A87", }) => (jsxs("svg", { className: className, width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("g", { "clip-path": "url(#clip0_154_4247)", children: jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M7.11877 15.1695L6.99716 15.1125C6.18652 14.7217 5.00927 13.9328 5.00927 12.6662C5.00927 12.164 5.23222 11.498 5.67812 10.6681H3.15198C1.16272 10.6681 0.705836 8.91222 1.16272 7.5965L3.15198 2.35976C3.32008 1.75067 3.87989 1.32812 4.51873 1.32813L12.3487 1.32813C12.5328 1.32813 12.6821 1.47736 12.6821 1.66146L12.6821 10.3348C12.6821 10.5189 12.5328 10.6681 12.3487 10.6681H11.3174L8.3507 14.8884C8.16337 15.1865 7.65771 15.415 7.11877 15.1695ZM14.0105 10.6671C13.8264 10.6671 13.6771 10.5179 13.6771 10.3338V1.6671C13.6771 1.48301 13.8264 1.33377 14.0105 1.33377L14.6771 1.33377C14.8612 1.33377 15.0105 1.48301 15.0105 1.6671V10.3338C15.0105 10.5179 14.8612 10.6671 14.6771 10.6671H14.0105ZM7.45133 13.8494L10.6249 9.33479H11.3487L11.3487 2.66146L4.51873 2.66146C4.47739 2.66146 4.44519 2.68576 4.43727 2.71447L4.42063 2.77476L2.4167 8.05009C2.15324 8.82618 2.41603 9.33479 3.15198 9.33479H7.90818L6.85264 11.2992C6.50163 11.9525 6.3426 12.4275 6.3426 12.6662C6.3426 13.053 6.75709 13.4906 7.45133 13.8494Z", fill: fill }) }), jsx("defs", { children: jsx("clipPath", { id: "clip0_154_4247", children: jsx("rect", { width: "16", height: "16", fill: "white" }) }) })] }));
3
+ const ThumbDownIcon = ({ className, fill = "#737A87", }) => (jsxs("svg", { className: className, width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("g", { clipPath: "url(#clip0_154_4247)", children: jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M7.11877 15.1695L6.99716 15.1125C6.18652 14.7217 5.00927 13.9328 5.00927 12.6662C5.00927 12.164 5.23222 11.498 5.67812 10.6681H3.15198C1.16272 10.6681 0.705836 8.91222 1.16272 7.5965L3.15198 2.35976C3.32008 1.75067 3.87989 1.32812 4.51873 1.32813L12.3487 1.32813C12.5328 1.32813 12.6821 1.47736 12.6821 1.66146L12.6821 10.3348C12.6821 10.5189 12.5328 10.6681 12.3487 10.6681H11.3174L8.3507 14.8884C8.16337 15.1865 7.65771 15.415 7.11877 15.1695ZM14.0105 10.6671C13.8264 10.6671 13.6771 10.5179 13.6771 10.3338V1.6671C13.6771 1.48301 13.8264 1.33377 14.0105 1.33377L14.6771 1.33377C14.8612 1.33377 15.0105 1.48301 15.0105 1.6671V10.3338C15.0105 10.5179 14.8612 10.6671 14.6771 10.6671H14.0105ZM7.45133 13.8494L10.6249 9.33479H11.3487L11.3487 2.66146L4.51873 2.66146C4.47739 2.66146 4.44519 2.68576 4.43727 2.71447L4.42063 2.77476L2.4167 8.05009C2.15324 8.82618 2.41603 9.33479 3.15198 9.33479H7.90818L6.85264 11.2992C6.50163 11.9525 6.3426 12.4275 6.3426 12.6662C6.3426 13.053 6.75709 13.4906 7.45133 13.8494Z", fill: fill }) }), jsx("defs", { children: jsx("clipPath", { id: "clip0_154_4247", children: jsx("rect", { width: "16", height: "16", fill: "white" }) }) })] }));
4
4
 
5
5
  export { ThumbDownIcon as default };
6
6
  //# sourceMappingURL=ThumbDownIcon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThumbDownIcon.js","sources":["../../src/assets/ThumbDownIcon.tsx"],"sourcesContent":["const ThumbDownIcon = ({\n className,\n fill = \"#737A87\",\n}: {\n className?: string;\n fill?: string;\n}) => (\n <svg\n className={className}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_154_4247)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.11877 15.1695L6.99716 15.1125C6.18652 14.7217 5.00927 13.9328 5.00927 12.6662C5.00927 12.164 5.23222 11.498 5.67812 10.6681H3.15198C1.16272 10.6681 0.705836 8.91222 1.16272 7.5965L3.15198 2.35976C3.32008 1.75067 3.87989 1.32812 4.51873 1.32813L12.3487 1.32813C12.5328 1.32813 12.6821 1.47736 12.6821 1.66146L12.6821 10.3348C12.6821 10.5189 12.5328 10.6681 12.3487 10.6681H11.3174L8.3507 14.8884C8.16337 15.1865 7.65771 15.415 7.11877 15.1695ZM14.0105 10.6671C13.8264 10.6671 13.6771 10.5179 13.6771 10.3338V1.6671C13.6771 1.48301 13.8264 1.33377 14.0105 1.33377L14.6771 1.33377C14.8612 1.33377 15.0105 1.48301 15.0105 1.6671V10.3338C15.0105 10.5179 14.8612 10.6671 14.6771 10.6671H14.0105ZM7.45133 13.8494L10.6249 9.33479H11.3487L11.3487 2.66146L4.51873 2.66146C4.47739 2.66146 4.44519 2.68576 4.43727 2.71447L4.42063 2.77476L2.4167 8.05009C2.15324 8.82618 2.41603 9.33479 3.15198 9.33479H7.90818L6.85264 11.2992C6.50163 11.9525 6.3426 12.4275 6.3426 12.6662C6.3426 13.053 6.75709 13.4906 7.45133 13.8494Z\"\n fill={fill}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_154_4247\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default ThumbDownIcon;\n"],"names":["_jsxs","_jsx"],"mappings":";;AAAA,MAAM,aAAa,GAAG,CAAC,EACrB,SAAS,EACT,IAAI,GAAG,SAAS,GAIjB,MACCA,cACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAAA,QAAA,EAAA,CAElCC,wBAAa,sBAAsB,EAAA,QAAA,EACjCA,GACE,CAAA,MAAA,EAAA,EAAA,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,k/BAAk/B,EACp/B,IAAI,EAAE,IAAI,GACV,EACA,CAAA,EACJA,wBACEA,GAAU,CAAA,UAAA,EAAA,EAAA,EAAE,EAAC,gBAAgB,YAC3BA,GAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAA,CAAG,GACnC,EACN,CAAA,CAAA,EAAA,CACH;;;;"}
1
+ {"version":3,"file":"ThumbDownIcon.js","sources":["../../src/assets/ThumbDownIcon.tsx"],"sourcesContent":["const ThumbDownIcon = ({\n className,\n fill = \"#737A87\",\n}: {\n className?: string;\n fill?: string;\n}) => (\n <svg\n className={className}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_154_4247)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.11877 15.1695L6.99716 15.1125C6.18652 14.7217 5.00927 13.9328 5.00927 12.6662C5.00927 12.164 5.23222 11.498 5.67812 10.6681H3.15198C1.16272 10.6681 0.705836 8.91222 1.16272 7.5965L3.15198 2.35976C3.32008 1.75067 3.87989 1.32812 4.51873 1.32813L12.3487 1.32813C12.5328 1.32813 12.6821 1.47736 12.6821 1.66146L12.6821 10.3348C12.6821 10.5189 12.5328 10.6681 12.3487 10.6681H11.3174L8.3507 14.8884C8.16337 15.1865 7.65771 15.415 7.11877 15.1695ZM14.0105 10.6671C13.8264 10.6671 13.6771 10.5179 13.6771 10.3338V1.6671C13.6771 1.48301 13.8264 1.33377 14.0105 1.33377L14.6771 1.33377C14.8612 1.33377 15.0105 1.48301 15.0105 1.6671V10.3338C15.0105 10.5179 14.8612 10.6671 14.6771 10.6671H14.0105ZM7.45133 13.8494L10.6249 9.33479H11.3487L11.3487 2.66146L4.51873 2.66146C4.47739 2.66146 4.44519 2.68576 4.43727 2.71447L4.42063 2.77476L2.4167 8.05009C2.15324 8.82618 2.41603 9.33479 3.15198 9.33479H7.90818L6.85264 11.2992C6.50163 11.9525 6.3426 12.4275 6.3426 12.6662C6.3426 13.053 6.75709 13.4906 7.45133 13.8494Z\"\n fill={fill}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_154_4247\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default ThumbDownIcon;\n"],"names":["_jsxs","_jsx"],"mappings":";;AAAA,MAAM,aAAa,GAAG,CAAC,EACrB,SAAS,EACT,IAAI,GAAG,SAAS,GAIjB,MACCA,cACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAElC,QAAA,EAAA,CAAAC,GAAA,CAAA,GAAA,EAAA,EAAG,QAAQ,EAAC,sBAAsB,EAChC,QAAA,EAAAA,GAAA,CAAA,MAAA,EAAA,EACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,k/BAAk/B,EACp/B,IAAI,EAAE,IAAI,EACV,CAAA,EAAA,CACA,EACJA,GACE,CAAA,MAAA,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAA,UAAA,EAAA,EAAU,EAAE,EAAC,gBAAgB,EAC3B,QAAA,EAAAA,GAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAA,CAAG,GACnC,EACN,CAAA,CAAA,EAAA,CACH;;;;"}
@@ -140,13 +140,13 @@ const ChatkitImpl = React.forwardRef((props, ref) => {
140
140
  })) : (jsxRuntime.jsx(threadList, {}))), jsxRuntime.jsx("div", { className: "flex-1 h-full w-[calc(100%-200px)]", children: jsxRuntime.jsxs(reactResizablePanels.Group, { orientation: "vertical", style: { height: '100%', width: '100%' }, children: [jsxRuntime.jsx(reactResizablePanels.Panel, { children: jsxRuntime.jsx(thread.Thread, { welcome: welcome, recommends: recommends }) }), selectedSpan && (jsxRuntime.jsx(reactResizablePanels.Panel, { defaultSize: '30%', children: jsxRuntime.jsx(TraceDetail, { selectedSpan: selectedSpan || undefined, onCancel: () => setSelectedSpan(null) }) })), threadBottom] }) })] }) }), (tools || []).map((tool, index) => tool)] }, currentThreadId));
141
141
  });
142
142
  const Chatkit = (props) => {
143
- const { initialConfig, welcome, recommends, onError, toolDisplay, plugins, chatController: chatControllerFromProps = null, threadBottom, chatControllerPlugins, threadList, showHeader = true, placeholder, expandToolGroup, expandToolDetail, region, } = props;
143
+ const { initialConfig, welcome, recommends, onError, toolDisplay, plugins, chatController: chatControllerFromProps = null, threadBottom, chatControllerPlugins, threadList, showHeader = true, placeholder, expandToolGroup, expandToolDetail, debugger: debuggerProps, } = props;
144
144
  const controllerRef = React.useRef(chatControllerFromProps);
145
145
  const controller = controllerRef.current;
146
146
  const { currentThreadId, threadMap } = react.useSnapshot(controller.store.state);
147
147
  const currentThread = currentThreadId ? threadMap[currentThreadId] : null;
148
148
  const messages = React.useMemo(() => threadMap[currentThread?.id || '']?.messages || [], [currentThread?.id, threadMap]);
149
- return (jsxRuntime.jsx("div", { className: 'chatkit-wrapper', style: { height: '100%' }, "data-chatkit": true, children: jsxRuntime.jsxs(reactResizablePanels.Group, { style: { height: '100%' }, children: [jsxRuntime.jsx(reactResizablePanels.Panel, { minSize: 750, maxSize: 900, children: jsxRuntime.jsx(ChatkitImpl, { tools: [jsxRuntime.jsx(toaster.Toaster, {}), jsxRuntime.jsx(executionCard, {})], showHeader: showHeader, recommends: recommends, initialConfig: initialConfig, expandToolGroup: expandToolGroup, expandToolDetail: expandToolDetail, placeholder: placeholder, welcome: welcome, plugins: plugins, threadList: threadList, threadBottom: threadBottom, controller: controller }, currentThreadId) }), region && (jsxRuntime.jsx(reactResizablePanels.Panel, { defaultSize: '25%', className: "border-l", children: jsxRuntime.jsx(index$1, { region: region, controller: controller, messages: (messages.filter(msg => msg.role !== 'user') || []) }) }))] }) }));
149
+ return (jsxRuntime.jsx("div", { className: 'chatkit-wrapper', style: { height: '100%' }, "data-chatkit": true, children: jsxRuntime.jsxs(reactResizablePanels.Group, { style: { height: '100%' }, children: [jsxRuntime.jsx(reactResizablePanels.Panel, { minSize: 750, maxSize: 900, children: jsxRuntime.jsx(ChatkitImpl, { tools: [jsxRuntime.jsx(toaster.Toaster, {}), jsxRuntime.jsx(executionCard, {})], showHeader: showHeader, recommends: recommends, initialConfig: initialConfig, expandToolGroup: expandToolGroup, expandToolDetail: expandToolDetail, placeholder: placeholder, welcome: welcome, plugins: plugins, threadList: threadList, threadBottom: threadBottom, controller: controller }, currentThreadId) }), debuggerProps && (jsxRuntime.jsx(reactResizablePanels.Panel, { defaultSize: '25%', className: "border-l", children: jsxRuntime.jsx(index$1, { region: debuggerProps.region, controller: controller, messages: (messages.filter(msg => msg.role !== 'user') || []) }) }))] }) }));
150
150
  };
151
151
  var index = React.forwardRef(Chatkit);
152
152
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/Chatkit/index.tsx"],"sourcesContent":["import {\n ForwardedRef,\n forwardRef,\n MutableRefObject,\n Ref,\n useMemo,\n useRef,\n useEffect,\n useState,\n} from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { ChatkitProps, ChatkitRef } from './types';\nimport { compact, findLastIndex, isString, values } from 'lodash-es';\nimport { ChatkitProvider } from '@/contexts/ChatkitContext';\n\nimport { Thread } from '../assistant-ui/thread';\nimport {\n AssistantRuntimeProvider,\n useExternalStoreRuntime,\n} from '@assistant-ui/react';\nimport { ChatMessage, ChatController } from '@chat-lab/core';\nimport { Group, Panel } from 'react-resizable-panels';\nimport convertToAssistantMessage from '@/utils/convertToAssistantMessage';\nimport ThreadList from '../thread-list';\nimport { Thread as ThreadType, useSnapshot } from '@chat-lab/core';\nimport { Toaster } from '../ui/toaster';\nimport { toast } from '@/hooks/use-toast';\nimport ExecutionCard from '../assistant-ui-tools/execution-card';\nimport { convertToBase64 } from '@/utils/convertToBase64';\nimport checkMedia from '@/utils/checkMedia';\nimport { TextMessage } from '@chat-lab/core';\nimport './style.less';\nimport TraceDetail from '@/adk/components/Debug/Trace/TraceDetail';\nimport { useTraceStore } from '@/adk/components/Debug/Trace/store';\nimport Debug from '@/adk/components/Debug';\nconst ChatkitImpl = forwardRef(\n (\n props: {\n initialConfig: ChatkitProps['initialConfig'];\n welcome?: React.ReactNode;\n recommends?: string[];\n plugins?: React.ReactNode[];\n tools?: React.ReactNode[];\n placeholder?: string;\n threadList?:\n | React.ReactNode\n | boolean\n | ((props: { threadList: Readonly<ThreadType>[] }) => React.ReactNode);\n threadBottom?: React.ReactNode;\n showHeader?: boolean;\n expandToolGroup?: boolean;\n expandToolDetail?: boolean;\n toolDisplay?: 'group' | 'none' | 'step';\n expandReasoning?: boolean;\n controller: ChatController;\n },\n ref: ForwardedRef<ChatkitRef>,\n ) => {\n const {\n initialConfig,\n tools,\n toolDisplay = 'group',\n welcome,\n recommends,\n plugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup = false,\n expandReasoning = false,\n expandToolDetail = false,\n threadBottom,\n } = props;\n const controller = props.controller;\n const { threadMap, currentThreadId } = useSnapshot(controller.store.state);\n // useImperativeHandleChatkitRef(ref, controller, onError);\n\n const currentThread = currentThreadId ? threadMap[currentThreadId] : null;\n const messages = useMemo(\n () => threadMap[currentThread?.id || '']?.messages || [] || [],\n [currentThread?.id, threadMap],\n );\n\n const uiMessages = useMemo(\n () =>\n convertToAssistantMessage(messages as Readonly<ChatMessage>[], {\n toolDisplay: toolDisplay || 'group',\n }),\n [messages],\n );\n\n const runtime = useExternalStoreRuntime({\n messages: uiMessages,\n isLoading: currentThread?.sending,\n isDisabled: !!currentThread?.metadata['isInitingSession'],\n convertMessage: message => message,\n onNew: async message => {\n const attachments = await Promise.all(\n message.attachments?.map(async item => {\n return {\n ...item,\n base64: await convertToBase64(item.file as File),\n };\n }) || [],\n );\n\n controller?.sendMessage({\n attaches: attachments.map(item => ({\n id: item.id,\n attachId: item.id,\n url: item.base64,\n status: 'success',\n type: checkMedia(item.contentType),\n mimeType: item.contentType,\n })),\n content: compact([\n ...message.content.map(item => {\n if (item.type === 'text') {\n return {\n type: 'text',\n text: item.text,\n } as TextMessage;\n }\n }),\n ]),\n });\n },\n onReload: async (parentId, config) => {\n if (currentThread?.id && parentId)\n controller?.reloadMessage({\n threadId: currentThread?.id,\n messageId: parentId,\n });\n else {\n controller.onError?.(new Error('未找到对应的对话'));\n }\n },\n onCancel: async () => {\n controller?.abortMessage();\n },\n adapters: {\n attachments: {\n remove: async ({ id }) => {\n console.log(id);\n },\n send: async ({ id, file }) => {\n return {\n id,\n type: 'image',\n name: file.name,\n contentType: file.type,\n content: [\n {\n type: 'image',\n image: file.name,\n },\n ],\n status: {\n type: 'complete',\n },\n file,\n };\n },\n accept: 'image/*',\n add: async ({ file }) => {\n return {\n file,\n id: uuid(),\n type: 'image',\n name: file.name,\n contentType: file.type,\n status: {\n type: 'running',\n reason: 'uploading',\n progress: 0,\n },\n };\n },\n },\n },\n });\n\n const selectedSpan = useTraceStore(state => state.selectedSpan);\n const setSelectedSpan = useTraceStore(state => state.setSelectedSpan);\n useEffect(() => () => setSelectedSpan(null), [setSelectedSpan]);\n // const events = useEvent(currentThreadId);\n // useEvent(currentThreadId);\n return (\n <AssistantRuntimeProvider key={currentThreadId} runtime={runtime}>\n <Toaster />\n <ExecutionCard />\n <ChatkitProvider\n value={{\n ref: ref as MutableRefObject<ChatkitRef | null>,\n plugins: plugins || [],\n showThreadList: threadList !== false,\n placeholder: placeholder || '请输入内容',\n showHeader,\n expandToolGroup,\n expandToolDetail,\n expandReasoning,\n controller,\n }}\n >\n <div className=\"flex h-full w-full\">\n {threadList !== false &&\n (typeof threadList === 'function' ? (\n threadList({\n threadList: values(threadMap) as ThreadType[],\n })\n ) : (\n <ThreadList />\n ))}\n <div className=\"flex-1 h-full w-[calc(100%-200px)]\">\n <Group\n orientation=\"vertical\"\n style={{ height: '100%', width: '100%' }}\n >\n <Panel>\n <Thread welcome={welcome} recommends={recommends} />\n </Panel>\n {selectedSpan && (\n <Panel defaultSize={'30%'}>\n <TraceDetail\n selectedSpan={selectedSpan || undefined}\n onCancel={() => setSelectedSpan(null)}\n />\n </Panel>\n )}\n {threadBottom}\n </Group>\n </div>\n </div>\n </ChatkitProvider>\n {(tools || []).map((tool, index) => tool)}\n </AssistantRuntimeProvider>\n );\n },\n);\n\nconst Chatkit = (props: ChatkitProps) => {\n const {\n initialConfig,\n welcome,\n recommends,\n onError,\n toolDisplay,\n plugins,\n chatController: chatControllerFromProps = null,\n threadBottom,\n chatControllerPlugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup,\n expandToolDetail,\n region,\n } = props;\n\n const controllerRef = useRef<ChatController | null>(chatControllerFromProps);\n\n const controller = controllerRef.current;\n\n const { currentThreadId, threadMap } = useSnapshot(controller!.store.state);\n\n const currentThread = currentThreadId ? threadMap[currentThreadId] : null;\n\n const messages = useMemo(\n () => threadMap[currentThread?.id || '']?.messages || [],\n [currentThread?.id, threadMap],\n );\n return (\n <div className={'chatkit-wrapper'} style={{ height: '100%' }} data-chatkit>\n <Group style={{ height: '100%' }}>\n <Panel minSize={750} maxSize={900}>\n <ChatkitImpl\n key={currentThreadId}\n tools={[<Toaster />, <ExecutionCard />]}\n showHeader={showHeader}\n recommends={recommends}\n initialConfig={initialConfig}\n expandToolGroup={expandToolGroup}\n expandToolDetail={expandToolDetail}\n placeholder={placeholder}\n welcome={welcome}\n plugins={plugins}\n threadList={threadList}\n threadBottom={threadBottom}\n controller={controller!}\n />\n </Panel>\n {region && (\n <Panel defaultSize={'25%'} className=\"border-l\">\n <Debug\n region={region}\n controller={controller!}\n messages={\n (messages.filter(msg => msg.role !== 'user') || []) as any[]\n }\n />\n </Panel>\n )}\n </Group>\n </div>\n );\n};\n\nexport default forwardRef(Chatkit);\n"],"names":["forwardRef","threadList","useSnapshot","useMemo","useExternalStoreRuntime","convertToBase64","uuid","useTraceStore","useEffect","_jsxs","AssistantRuntimeProvider","_jsx","Toaster","ExecutionCard","ChatkitProvider","ThreadList","Group","Panel","Thread","useRef","Debug"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAmCA,MAAM,WAAW,GAAGA,gBAAU,CAC5B,CACE,KAkBC,EACD,GAA6B,KAC3B;AACF,IAAA,MAAM,EACJ,aAAa,EACb,KAAK,EACL,WAAW,GAAG,OAAO,EACrB,OAAO,EACP,UAAU,EACV,OAAO,cACPC,YAAU,EACV,UAAU,GAAG,IAAI,EACjB,WAAW,EACX,eAAe,GAAG,KAAK,EACvB,eAAe,GAAG,KAAK,EACvB,gBAAgB,GAAG,KAAK,EACxB,YAAY,GACb,GAAG,KAAK,CAAC;AACV,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;AACpC,IAAA,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAGC,iBAAW,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;AAG3E,IAAA,MAAM,aAAa,GAAG,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;AAC1E,IAAA,MAAM,QAAQ,GAAGC,aAAO,CACtB,MAAM,SAAS,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,IAAI,EAAE,IAAI,EAAE,EAC9D,CAAC,aAAa,EAAE,EAAE,EAAE,SAAS,CAAC,CAC/B,CAAC;IAEF,MAAM,UAAU,GAAGA,aAAO,CACxB,MACE,yBAAyB,CAAC,QAAmC,EAAE;QAC7D,WAAW,EAAE,WAAW,IAAI,OAAO;AACpC,KAAA,CAAC,EACJ,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,OAAO,GAAGC,+CAAuB,CAAC;AACtC,QAAA,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,aAAa,EAAE,OAAO;QACjC,UAAU,EAAE,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,kBAAkB,CAAC;AACzD,QAAA,cAAc,EAAE,OAAO,IAAI,OAAO;AAClC,QAAA,KAAK,EAAE,OAAM,OAAO,KAAG;AACrB,YAAA,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,OAAM,IAAI,KAAG;gBACpC,OAAO;AACL,oBAAA,GAAG,IAAI;AACP,oBAAA,MAAM,EAAE,MAAMC,+BAAe,CAAC,IAAI,CAAC,IAAY,CAAC;iBACjD,CAAC;AACJ,aAAC,CAAC,IAAI,EAAE,CACT,CAAC;YAEF,UAAU,EAAE,WAAW,CAAC;gBACtB,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,KAAK;oBACjC,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,QAAQ,EAAE,IAAI,CAAC,EAAE;oBACjB,GAAG,EAAE,IAAI,CAAC,MAAM;AAChB,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;oBAClC,QAAQ,EAAE,IAAI,CAAC,WAAW;AAC3B,iBAAA,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,CAAC;oBACf,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAG;AAC5B,wBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;4BACxB,OAAO;AACL,gCAAA,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,IAAI,CAAC,IAAI;6BACD,CAAC;yBAClB;AACH,qBAAC,CAAC;iBACH,CAAC;AACH,aAAA,CAAC,CAAC;SACJ;AACD,QAAA,QAAQ,EAAE,OAAO,QAAQ,EAAE,MAAM,KAAI;AACnC,YAAA,IAAI,aAAa,EAAE,EAAE,IAAI,QAAQ;gBAC/B,UAAU,EAAE,aAAa,CAAC;oBACxB,QAAQ,EAAE,aAAa,EAAE,EAAE;AAC3B,oBAAA,SAAS,EAAE,QAAQ;AACpB,iBAAA,CAAC,CAAC;iBACA;gBACH,UAAU,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;aAC7C;SACF;QACD,QAAQ,EAAE,YAAW;YACnB,UAAU,EAAE,YAAY,EAAE,CAAC;SAC5B;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,WAAW,EAAE;AACX,gBAAA,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,KAAI;AACvB,oBAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACjB;gBACD,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAI;oBAC3B,OAAO;wBACL,EAAE;AACF,wBAAA,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,WAAW,EAAE,IAAI,CAAC,IAAI;AACtB,wBAAA,OAAO,EAAE;AACP,4BAAA;AACE,gCAAA,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,IAAI,CAAC,IAAI;AACjB,6BAAA;AACF,yBAAA;AACD,wBAAA,MAAM,EAAE;AACN,4BAAA,IAAI,EAAE,UAAU;AACjB,yBAAA;wBACD,IAAI;qBACL,CAAC;iBACH;AACD,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAI;oBACtB,OAAO;wBACL,IAAI;wBACJ,EAAE,EAAEC,EAAI,EAAE;AACV,wBAAA,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,WAAW,EAAE,IAAI,CAAC,IAAI;AACtB,wBAAA,MAAM,EAAE;AACN,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,MAAM,EAAE,WAAW;AACnB,4BAAA,QAAQ,EAAE,CAAC;AACZ,yBAAA;qBACF,CAAC;iBACH;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,YAAY,GAAGC,mBAAa,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChE,IAAA,MAAM,eAAe,GAAGA,mBAAa,CAAC,KAAK,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACtE,IAAAC,eAAS,CAAC,MAAM,MAAM,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;;;IAGhE,QACEC,gBAACC,iDAAwB,EAAA,EAAuB,OAAO,EAAE,OAAO,aAC9DC,cAAC,CAAAC,eAAO,KAAG,EACXD,cAAA,CAACE,aAAa,EAAG,EAAA,CAAA,EACjBF,eAACG,8BAAe,EAAA,EACd,KAAK,EAAE;AACL,oBAAA,GAAG,EAAE,GAA0C;oBAC/C,OAAO,EAAE,OAAO,IAAI,EAAE;oBACtB,cAAc,EAAEb,YAAU,KAAK,KAAK;oBACpC,WAAW,EAAE,WAAW,IAAI,OAAO;oBACnC,UAAU;oBACV,eAAe;oBACf,gBAAgB;oBAChB,eAAe;oBACf,UAAU;AACX,iBAAA,EAAA,QAAA,EAEDQ,yBAAK,SAAS,EAAC,oBAAoB,EAChC,QAAA,EAAA,CAAAR,YAAU,KAAK,KAAK;6BAClB,OAAOA,YAAU,KAAK,UAAU,IAC/BA,YAAU,CAAC;AACT,gCAAA,UAAU,EAAE,MAAM,CAAC,SAAS,CAAiB;6BAC9C,CAAC,KAEFU,eAACI,UAAU,EAAA,EAAA,CAAG,CACf,CAAC,EACJJ,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oCAAoC,EACjD,QAAA,EAAAF,eAAA,CAACO,0BAAK,EAAA,EACJ,WAAW,EAAC,UAAU,EACtB,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAExC,QAAA,EAAA,CAAAL,cAAA,CAACM,0BAAK,EAAA,EAAA,QAAA,EACJN,cAAC,CAAAO,aAAM,IAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAA,CAAI,EAC9C,CAAA,EACP,YAAY,KACXP,cAAA,CAACM,0BAAK,EAAC,EAAA,WAAW,EAAE,KAAK,EACvB,QAAA,EAAAN,cAAA,CAAC,WAAW,EACV,EAAA,YAAY,EAAE,YAAY,IAAI,SAAS,EACvC,QAAQ,EAAE,MAAM,eAAe,CAAC,IAAI,CAAC,EACrC,CAAA,EAAA,CACI,CACT,EACA,YAAY,CACP,EAAA,CAAA,EAAA,CACJ,CACF,EAAA,CAAA,EAAA,CACU,EACjB,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,CA9CZ,EAAA,EAAA,eAAe,CA+CnB,EAC3B;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,KAAmB,KAAI;AACtC,IAAA,MAAM,EACJ,aAAa,EACb,OAAO,EACP,UAAU,EACV,OAAO,EACP,WAAW,EACX,OAAO,EACP,cAAc,EAAE,uBAAuB,GAAG,IAAI,EAC9C,YAAY,EACZ,qBAAqB,EACrB,UAAU,EACV,UAAU,GAAG,IAAI,EACjB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,MAAM,GACP,GAAG,KAAK,CAAC;AAEV,IAAA,MAAM,aAAa,GAAGQ,YAAM,CAAwB,uBAAuB,CAAC,CAAC;AAE7E,IAAA,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC;AAEzC,IAAA,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,GAAGjB,iBAAW,CAAC,UAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAE5E,IAAA,MAAM,aAAa,GAAG,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;AAE1E,IAAA,MAAM,QAAQ,GAAGC,aAAO,CACtB,MAAM,SAAS,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,IAAI,EAAE,EACxD,CAAC,aAAa,EAAE,EAAE,EAAE,SAAS,CAAC,CAC/B,CAAC;AACF,IAAA,QACEQ,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,cAAA,EAAA,IAAA,EAAA,QAAA,EAC1DF,gBAACO,0BAAK,EAAA,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAC9B,QAAA,EAAA,CAAAL,cAAA,CAACM,0BAAK,EAAA,EAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAA,QAAA,EAC/BN,cAAC,CAAA,WAAW,EAEV,EAAA,KAAK,EAAE,CAACA,eAACC,eAAO,EAAA,EAAA,CAAG,EAAED,cAAA,CAACE,aAAa,EAAG,EAAA,CAAA,CAAC,EACvC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAW,EAZlB,EAAA,eAAe,CAapB,EAAA,CACI,EACP,MAAM,KACLF,cAAA,CAACM,0BAAK,EAAA,EAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAC,UAAU,EAAA,QAAA,EAC7CN,cAAC,CAAAS,OAAK,EACJ,EAAA,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAW,EACvB,QAAQ,GACL,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAU,GAE9D,EACI,CAAA,CACT,CACK,EAAA,CAAA,EAAA,CACJ,EACN;AACJ,CAAC,CAAC;AAEF,YAAepB,gBAAU,CAAC,OAAO,CAAC;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Chatkit/index.tsx"],"sourcesContent":["import {\n ForwardedRef,\n forwardRef,\n MutableRefObject,\n Ref,\n useMemo,\n useRef,\n useEffect,\n useState,\n} from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { ChatkitProps, ChatkitRef } from './types';\nimport { compact, findLastIndex, isString, values } from 'lodash-es';\nimport { ChatkitProvider } from '@/contexts/ChatkitContext';\n\nimport { Thread } from '../assistant-ui/thread';\nimport {\n AssistantRuntimeProvider,\n useExternalStoreRuntime,\n} from '@assistant-ui/react';\nimport { ChatMessage, ChatController } from '@chat-lab/core';\nimport { Group, Panel } from 'react-resizable-panels';\nimport convertToAssistantMessage from '@/utils/convertToAssistantMessage';\nimport ThreadList from '../thread-list';\nimport { Thread as ThreadType, useSnapshot } from '@chat-lab/core';\nimport { Toaster } from '../ui/toaster';\nimport { toast } from '@/hooks/use-toast';\nimport ExecutionCard from '../assistant-ui-tools/execution-card';\nimport { convertToBase64 } from '@/utils/convertToBase64';\nimport checkMedia from '@/utils/checkMedia';\nimport { TextMessage } from '@chat-lab/core';\nimport './style.less';\nimport TraceDetail from '@/adk/components/Debug/Trace/TraceDetail';\nimport { useTraceStore } from '@/adk/components/Debug/Trace/store';\nimport Debug from '@/adk/components/Debug';\nconst ChatkitImpl = forwardRef(\n (\n props: {\n initialConfig: ChatkitProps['initialConfig'];\n welcome?: React.ReactNode;\n recommends?: string[];\n plugins?: React.ReactNode[];\n tools?: React.ReactNode[];\n placeholder?: string;\n threadList?:\n | React.ReactNode\n | boolean\n | ((props: { threadList: Readonly<ThreadType>[] }) => React.ReactNode);\n threadBottom?: React.ReactNode;\n showHeader?: boolean;\n expandToolGroup?: boolean;\n expandToolDetail?: boolean;\n toolDisplay?: 'group' | 'none' | 'step';\n expandReasoning?: boolean;\n controller: ChatController;\n },\n ref: ForwardedRef<ChatkitRef>,\n ) => {\n const {\n initialConfig,\n tools,\n toolDisplay = 'group',\n welcome,\n recommends,\n plugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup = false,\n expandReasoning = false,\n expandToolDetail = false,\n threadBottom,\n } = props;\n const controller = props.controller;\n const { threadMap, currentThreadId } = useSnapshot(controller.store.state);\n // useImperativeHandleChatkitRef(ref, controller, onError);\n\n const currentThread = currentThreadId ? threadMap[currentThreadId] : null;\n const messages = useMemo(\n () => threadMap[currentThread?.id || '']?.messages || [] || [],\n [currentThread?.id, threadMap],\n );\n\n const uiMessages = useMemo(\n () =>\n convertToAssistantMessage(messages as Readonly<ChatMessage>[], {\n toolDisplay: toolDisplay || 'group',\n }),\n [messages],\n );\n\n const runtime = useExternalStoreRuntime({\n messages: uiMessages,\n isLoading: currentThread?.sending,\n isDisabled: !!currentThread?.metadata['isInitingSession'],\n convertMessage: message => message,\n onNew: async message => {\n const attachments = await Promise.all(\n message.attachments?.map(async item => {\n return {\n ...item,\n base64: await convertToBase64(item.file as File),\n };\n }) || [],\n );\n\n controller?.sendMessage({\n attaches: attachments.map(item => ({\n id: item.id,\n attachId: item.id,\n url: item.base64,\n status: 'success',\n type: checkMedia(item.contentType),\n mimeType: item.contentType,\n })),\n content: compact([\n ...message.content.map(item => {\n if (item.type === 'text') {\n return {\n type: 'text',\n text: item.text,\n } as TextMessage;\n }\n }),\n ]),\n });\n },\n onReload: async (parentId, config) => {\n if (currentThread?.id && parentId)\n controller?.reloadMessage({\n threadId: currentThread?.id,\n messageId: parentId,\n });\n else {\n controller.onError?.(new Error('未找到对应的对话'));\n }\n },\n onCancel: async () => {\n controller?.abortMessage();\n },\n adapters: {\n attachments: {\n remove: async ({ id }) => {\n console.log(id);\n },\n send: async ({ id, file }) => {\n return {\n id,\n type: 'image',\n name: file.name,\n contentType: file.type,\n content: [\n {\n type: 'image',\n image: file.name,\n },\n ],\n status: {\n type: 'complete',\n },\n file,\n };\n },\n accept: 'image/*',\n add: async ({ file }) => {\n return {\n file,\n id: uuid(),\n type: 'image',\n name: file.name,\n contentType: file.type,\n status: {\n type: 'running',\n reason: 'uploading',\n progress: 0,\n },\n };\n },\n },\n },\n });\n\n const selectedSpan = useTraceStore(state => state.selectedSpan);\n const setSelectedSpan = useTraceStore(state => state.setSelectedSpan);\n useEffect(() => () => setSelectedSpan(null), [setSelectedSpan]);\n // const events = useEvent(currentThreadId);\n // useEvent(currentThreadId);\n return (\n <AssistantRuntimeProvider key={currentThreadId} runtime={runtime}>\n <Toaster />\n <ExecutionCard />\n <ChatkitProvider\n value={{\n ref: ref as MutableRefObject<ChatkitRef | null>,\n plugins: plugins || [],\n showThreadList: threadList !== false,\n placeholder: placeholder || '请输入内容',\n showHeader,\n expandToolGroup,\n expandToolDetail,\n expandReasoning,\n controller,\n }}\n >\n <div className=\"flex h-full w-full\">\n {threadList !== false &&\n (typeof threadList === 'function' ? (\n threadList({\n threadList: values(threadMap) as ThreadType[],\n })\n ) : (\n <ThreadList />\n ))}\n <div className=\"flex-1 h-full w-[calc(100%-200px)]\">\n <Group\n orientation=\"vertical\"\n style={{ height: '100%', width: '100%' }}\n >\n <Panel>\n <Thread welcome={welcome} recommends={recommends} />\n </Panel>\n {selectedSpan && (\n <Panel defaultSize={'30%'}>\n <TraceDetail\n selectedSpan={selectedSpan || undefined}\n onCancel={() => setSelectedSpan(null)}\n />\n </Panel>\n )}\n {threadBottom}\n </Group>\n </div>\n </div>\n </ChatkitProvider>\n {(tools || []).map((tool, index) => tool)}\n </AssistantRuntimeProvider>\n );\n },\n);\n\nconst Chatkit = (props: ChatkitProps) => {\n const {\n initialConfig,\n welcome,\n recommends,\n onError,\n toolDisplay,\n plugins,\n chatController: chatControllerFromProps = null,\n threadBottom,\n chatControllerPlugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup,\n expandToolDetail,\n debugger: debuggerProps,\n } = props;\n\n const controllerRef = useRef<ChatController | null>(chatControllerFromProps);\n\n const controller = controllerRef.current;\n\n const { currentThreadId, threadMap } = useSnapshot(controller!.store.state);\n\n const currentThread = currentThreadId ? threadMap[currentThreadId] : null;\n\n const messages = useMemo(\n () => threadMap[currentThread?.id || '']?.messages || [],\n [currentThread?.id, threadMap],\n );\n return (\n <div className={'chatkit-wrapper'} style={{ height: '100%' }} data-chatkit>\n <Group style={{ height: '100%' }}>\n <Panel minSize={750} maxSize={900}>\n <ChatkitImpl\n key={currentThreadId}\n tools={[<Toaster />, <ExecutionCard />]}\n showHeader={showHeader}\n recommends={recommends}\n initialConfig={initialConfig}\n expandToolGroup={expandToolGroup}\n expandToolDetail={expandToolDetail}\n placeholder={placeholder}\n welcome={welcome}\n plugins={plugins}\n threadList={threadList}\n threadBottom={threadBottom}\n controller={controller!}\n />\n </Panel>\n {debuggerProps && (\n <Panel defaultSize={'25%'} className=\"border-l\">\n <Debug\n region={debuggerProps.region}\n controller={controller!}\n messages={\n (messages.filter(msg => msg.role !== 'user') || []) as any[]\n }\n />\n </Panel>\n )}\n </Group>\n </div>\n );\n};\n\nexport default forwardRef(Chatkit);\n"],"names":["forwardRef","threadList","useSnapshot","useMemo","useExternalStoreRuntime","convertToBase64","uuid","useTraceStore","useEffect","_jsxs","AssistantRuntimeProvider","_jsx","Toaster","ExecutionCard","ChatkitProvider","ThreadList","Group","Panel","Thread","useRef","Debug"],"mappings":"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"}
@@ -138,13 +138,13 @@ const ChatkitImpl = forwardRef((props, ref) => {
138
138
  })) : (jsx(ThreadList, {}))), jsx("div", { className: "flex-1 h-full w-[calc(100%-200px)]", children: jsxs(Tt, { orientation: "vertical", style: { height: '100%', width: '100%' }, children: [jsx($t, { children: jsx(Thread, { welcome: welcome, recommends: recommends }) }), selectedSpan && (jsx($t, { defaultSize: '30%', children: jsx(TraceDetail, { selectedSpan: selectedSpan || undefined, onCancel: () => setSelectedSpan(null) }) })), threadBottom] }) })] }) }), (tools || []).map((tool, index) => tool)] }, currentThreadId));
139
139
  });
140
140
  const Chatkit = (props) => {
141
- const { initialConfig, welcome, recommends, onError, toolDisplay, plugins, chatController: chatControllerFromProps = null, threadBottom, chatControllerPlugins, threadList, showHeader = true, placeholder, expandToolGroup, expandToolDetail, region, } = props;
141
+ const { initialConfig, welcome, recommends, onError, toolDisplay, plugins, chatController: chatControllerFromProps = null, threadBottom, chatControllerPlugins, threadList, showHeader = true, placeholder, expandToolGroup, expandToolDetail, debugger: debuggerProps, } = props;
142
142
  const controllerRef = useRef(chatControllerFromProps);
143
143
  const controller = controllerRef.current;
144
144
  const { currentThreadId, threadMap } = useSnapshot(controller.store.state);
145
145
  const currentThread = currentThreadId ? threadMap[currentThreadId] : null;
146
146
  const messages = useMemo(() => threadMap[currentThread?.id || '']?.messages || [], [currentThread?.id, threadMap]);
147
- return (jsx("div", { className: 'chatkit-wrapper', style: { height: '100%' }, "data-chatkit": true, children: jsxs(Tt, { style: { height: '100%' }, children: [jsx($t, { minSize: 750, maxSize: 900, children: jsx(ChatkitImpl, { tools: [jsx(Toaster, {}), jsx(ExecutionCard, {})], showHeader: showHeader, recommends: recommends, initialConfig: initialConfig, expandToolGroup: expandToolGroup, expandToolDetail: expandToolDetail, placeholder: placeholder, welcome: welcome, plugins: plugins, threadList: threadList, threadBottom: threadBottom, controller: controller }, currentThreadId) }), region && (jsx($t, { defaultSize: '25%', className: "border-l", children: jsx(ADK, { region: region, controller: controller, messages: (messages.filter(msg => msg.role !== 'user') || []) }) }))] }) }));
147
+ return (jsx("div", { className: 'chatkit-wrapper', style: { height: '100%' }, "data-chatkit": true, children: jsxs(Tt, { style: { height: '100%' }, children: [jsx($t, { minSize: 750, maxSize: 900, children: jsx(ChatkitImpl, { tools: [jsx(Toaster, {}), jsx(ExecutionCard, {})], showHeader: showHeader, recommends: recommends, initialConfig: initialConfig, expandToolGroup: expandToolGroup, expandToolDetail: expandToolDetail, placeholder: placeholder, welcome: welcome, plugins: plugins, threadList: threadList, threadBottom: threadBottom, controller: controller }, currentThreadId) }), debuggerProps && (jsx($t, { defaultSize: '25%', className: "border-l", children: jsx(ADK, { region: debuggerProps.region, controller: controller, messages: (messages.filter(msg => msg.role !== 'user') || []) }) }))] }) }));
148
148
  };
149
149
  var index = forwardRef(Chatkit);
150
150
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Chatkit/index.tsx"],"sourcesContent":["import {\n ForwardedRef,\n forwardRef,\n MutableRefObject,\n Ref,\n useMemo,\n useRef,\n useEffect,\n useState,\n} from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { ChatkitProps, ChatkitRef } from './types';\nimport { compact, findLastIndex, isString, values } from 'lodash-es';\nimport { ChatkitProvider } from '@/contexts/ChatkitContext';\n\nimport { Thread } from '../assistant-ui/thread';\nimport {\n AssistantRuntimeProvider,\n useExternalStoreRuntime,\n} from '@assistant-ui/react';\nimport { ChatMessage, ChatController } from '@chat-lab/core';\nimport { Group, Panel } from 'react-resizable-panels';\nimport convertToAssistantMessage from '@/utils/convertToAssistantMessage';\nimport ThreadList from '../thread-list';\nimport { Thread as ThreadType, useSnapshot } from '@chat-lab/core';\nimport { Toaster } from '../ui/toaster';\nimport { toast } from '@/hooks/use-toast';\nimport ExecutionCard from '../assistant-ui-tools/execution-card';\nimport { convertToBase64 } from '@/utils/convertToBase64';\nimport checkMedia from '@/utils/checkMedia';\nimport { TextMessage } from '@chat-lab/core';\nimport './style.less';\nimport TraceDetail from '@/adk/components/Debug/Trace/TraceDetail';\nimport { useTraceStore } from '@/adk/components/Debug/Trace/store';\nimport Debug from '@/adk/components/Debug';\nconst ChatkitImpl = forwardRef(\n (\n props: {\n initialConfig: ChatkitProps['initialConfig'];\n welcome?: React.ReactNode;\n recommends?: string[];\n plugins?: React.ReactNode[];\n tools?: React.ReactNode[];\n placeholder?: string;\n threadList?:\n | React.ReactNode\n | boolean\n | ((props: { threadList: Readonly<ThreadType>[] }) => React.ReactNode);\n threadBottom?: React.ReactNode;\n showHeader?: boolean;\n expandToolGroup?: boolean;\n expandToolDetail?: boolean;\n toolDisplay?: 'group' | 'none' | 'step';\n expandReasoning?: boolean;\n controller: ChatController;\n },\n ref: ForwardedRef<ChatkitRef>,\n ) => {\n const {\n initialConfig,\n tools,\n toolDisplay = 'group',\n welcome,\n recommends,\n plugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup = false,\n expandReasoning = false,\n expandToolDetail = false,\n threadBottom,\n } = props;\n const controller = props.controller;\n const { threadMap, currentThreadId } = useSnapshot(controller.store.state);\n // useImperativeHandleChatkitRef(ref, controller, onError);\n\n const currentThread = currentThreadId ? threadMap[currentThreadId] : null;\n const messages = useMemo(\n () => threadMap[currentThread?.id || '']?.messages || [] || [],\n [currentThread?.id, threadMap],\n );\n\n const uiMessages = useMemo(\n () =>\n convertToAssistantMessage(messages as Readonly<ChatMessage>[], {\n toolDisplay: toolDisplay || 'group',\n }),\n [messages],\n );\n\n const runtime = useExternalStoreRuntime({\n messages: uiMessages,\n isLoading: currentThread?.sending,\n isDisabled: !!currentThread?.metadata['isInitingSession'],\n convertMessage: message => message,\n onNew: async message => {\n const attachments = await Promise.all(\n message.attachments?.map(async item => {\n return {\n ...item,\n base64: await convertToBase64(item.file as File),\n };\n }) || [],\n );\n\n controller?.sendMessage({\n attaches: attachments.map(item => ({\n id: item.id,\n attachId: item.id,\n url: item.base64,\n status: 'success',\n type: checkMedia(item.contentType),\n mimeType: item.contentType,\n })),\n content: compact([\n ...message.content.map(item => {\n if (item.type === 'text') {\n return {\n type: 'text',\n text: item.text,\n } as TextMessage;\n }\n }),\n ]),\n });\n },\n onReload: async (parentId, config) => {\n if (currentThread?.id && parentId)\n controller?.reloadMessage({\n threadId: currentThread?.id,\n messageId: parentId,\n });\n else {\n controller.onError?.(new Error('未找到对应的对话'));\n }\n },\n onCancel: async () => {\n controller?.abortMessage();\n },\n adapters: {\n attachments: {\n remove: async ({ id }) => {\n console.log(id);\n },\n send: async ({ id, file }) => {\n return {\n id,\n type: 'image',\n name: file.name,\n contentType: file.type,\n content: [\n {\n type: 'image',\n image: file.name,\n },\n ],\n status: {\n type: 'complete',\n },\n file,\n };\n },\n accept: 'image/*',\n add: async ({ file }) => {\n return {\n file,\n id: uuid(),\n type: 'image',\n name: file.name,\n contentType: file.type,\n status: {\n type: 'running',\n reason: 'uploading',\n progress: 0,\n },\n };\n },\n },\n },\n });\n\n const selectedSpan = useTraceStore(state => state.selectedSpan);\n const setSelectedSpan = useTraceStore(state => state.setSelectedSpan);\n useEffect(() => () => setSelectedSpan(null), [setSelectedSpan]);\n // const events = useEvent(currentThreadId);\n // useEvent(currentThreadId);\n return (\n <AssistantRuntimeProvider key={currentThreadId} runtime={runtime}>\n <Toaster />\n <ExecutionCard />\n <ChatkitProvider\n value={{\n ref: ref as MutableRefObject<ChatkitRef | null>,\n plugins: plugins || [],\n showThreadList: threadList !== false,\n placeholder: placeholder || '请输入内容',\n showHeader,\n expandToolGroup,\n expandToolDetail,\n expandReasoning,\n controller,\n }}\n >\n <div className=\"flex h-full w-full\">\n {threadList !== false &&\n (typeof threadList === 'function' ? (\n threadList({\n threadList: values(threadMap) as ThreadType[],\n })\n ) : (\n <ThreadList />\n ))}\n <div className=\"flex-1 h-full w-[calc(100%-200px)]\">\n <Group\n orientation=\"vertical\"\n style={{ height: '100%', width: '100%' }}\n >\n <Panel>\n <Thread welcome={welcome} recommends={recommends} />\n </Panel>\n {selectedSpan && (\n <Panel defaultSize={'30%'}>\n <TraceDetail\n selectedSpan={selectedSpan || undefined}\n onCancel={() => setSelectedSpan(null)}\n />\n </Panel>\n )}\n {threadBottom}\n </Group>\n </div>\n </div>\n </ChatkitProvider>\n {(tools || []).map((tool, index) => tool)}\n </AssistantRuntimeProvider>\n );\n },\n);\n\nconst Chatkit = (props: ChatkitProps) => {\n const {\n initialConfig,\n welcome,\n recommends,\n onError,\n toolDisplay,\n plugins,\n chatController: chatControllerFromProps = null,\n threadBottom,\n chatControllerPlugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup,\n expandToolDetail,\n region,\n } = props;\n\n const controllerRef = useRef<ChatController | null>(chatControllerFromProps);\n\n const controller = controllerRef.current;\n\n const { currentThreadId, threadMap } = useSnapshot(controller!.store.state);\n\n const currentThread = currentThreadId ? threadMap[currentThreadId] : null;\n\n const messages = useMemo(\n () => threadMap[currentThread?.id || '']?.messages || [],\n [currentThread?.id, threadMap],\n );\n return (\n <div className={'chatkit-wrapper'} style={{ height: '100%' }} data-chatkit>\n <Group style={{ height: '100%' }}>\n <Panel minSize={750} maxSize={900}>\n <ChatkitImpl\n key={currentThreadId}\n tools={[<Toaster />, <ExecutionCard />]}\n showHeader={showHeader}\n recommends={recommends}\n initialConfig={initialConfig}\n expandToolGroup={expandToolGroup}\n expandToolDetail={expandToolDetail}\n placeholder={placeholder}\n welcome={welcome}\n plugins={plugins}\n threadList={threadList}\n threadBottom={threadBottom}\n controller={controller!}\n />\n </Panel>\n {region && (\n <Panel defaultSize={'25%'} className=\"border-l\">\n <Debug\n region={region}\n controller={controller!}\n messages={\n (messages.filter(msg => msg.role !== 'user') || []) as any[]\n }\n />\n </Panel>\n )}\n </Group>\n </div>\n );\n};\n\nexport default forwardRef(Chatkit);\n"],"names":["uuid","_jsxs","_jsx","Group","Panel","Debug"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Chatkit/index.tsx"],"sourcesContent":["import {\n ForwardedRef,\n forwardRef,\n MutableRefObject,\n Ref,\n useMemo,\n useRef,\n useEffect,\n useState,\n} from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { ChatkitProps, ChatkitRef } from './types';\nimport { compact, findLastIndex, isString, values } from 'lodash-es';\nimport { ChatkitProvider } from '@/contexts/ChatkitContext';\n\nimport { Thread } from '../assistant-ui/thread';\nimport {\n AssistantRuntimeProvider,\n useExternalStoreRuntime,\n} from '@assistant-ui/react';\nimport { ChatMessage, ChatController } from '@chat-lab/core';\nimport { Group, Panel } from 'react-resizable-panels';\nimport convertToAssistantMessage from '@/utils/convertToAssistantMessage';\nimport ThreadList from '../thread-list';\nimport { Thread as ThreadType, useSnapshot } from '@chat-lab/core';\nimport { Toaster } from '../ui/toaster';\nimport { toast } from '@/hooks/use-toast';\nimport ExecutionCard from '../assistant-ui-tools/execution-card';\nimport { convertToBase64 } from '@/utils/convertToBase64';\nimport checkMedia from '@/utils/checkMedia';\nimport { TextMessage } from '@chat-lab/core';\nimport './style.less';\nimport TraceDetail from '@/adk/components/Debug/Trace/TraceDetail';\nimport { useTraceStore } from '@/adk/components/Debug/Trace/store';\nimport Debug from '@/adk/components/Debug';\nconst ChatkitImpl = forwardRef(\n (\n props: {\n initialConfig: ChatkitProps['initialConfig'];\n welcome?: React.ReactNode;\n recommends?: string[];\n plugins?: React.ReactNode[];\n tools?: React.ReactNode[];\n placeholder?: string;\n threadList?:\n | React.ReactNode\n | boolean\n | ((props: { threadList: Readonly<ThreadType>[] }) => React.ReactNode);\n threadBottom?: React.ReactNode;\n showHeader?: boolean;\n expandToolGroup?: boolean;\n expandToolDetail?: boolean;\n toolDisplay?: 'group' | 'none' | 'step';\n expandReasoning?: boolean;\n controller: ChatController;\n },\n ref: ForwardedRef<ChatkitRef>,\n ) => {\n const {\n initialConfig,\n tools,\n toolDisplay = 'group',\n welcome,\n recommends,\n plugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup = false,\n expandReasoning = false,\n expandToolDetail = false,\n threadBottom,\n } = props;\n const controller = props.controller;\n const { threadMap, currentThreadId } = useSnapshot(controller.store.state);\n // useImperativeHandleChatkitRef(ref, controller, onError);\n\n const currentThread = currentThreadId ? threadMap[currentThreadId] : null;\n const messages = useMemo(\n () => threadMap[currentThread?.id || '']?.messages || [] || [],\n [currentThread?.id, threadMap],\n );\n\n const uiMessages = useMemo(\n () =>\n convertToAssistantMessage(messages as Readonly<ChatMessage>[], {\n toolDisplay: toolDisplay || 'group',\n }),\n [messages],\n );\n\n const runtime = useExternalStoreRuntime({\n messages: uiMessages,\n isLoading: currentThread?.sending,\n isDisabled: !!currentThread?.metadata['isInitingSession'],\n convertMessage: message => message,\n onNew: async message => {\n const attachments = await Promise.all(\n message.attachments?.map(async item => {\n return {\n ...item,\n base64: await convertToBase64(item.file as File),\n };\n }) || [],\n );\n\n controller?.sendMessage({\n attaches: attachments.map(item => ({\n id: item.id,\n attachId: item.id,\n url: item.base64,\n status: 'success',\n type: checkMedia(item.contentType),\n mimeType: item.contentType,\n })),\n content: compact([\n ...message.content.map(item => {\n if (item.type === 'text') {\n return {\n type: 'text',\n text: item.text,\n } as TextMessage;\n }\n }),\n ]),\n });\n },\n onReload: async (parentId, config) => {\n if (currentThread?.id && parentId)\n controller?.reloadMessage({\n threadId: currentThread?.id,\n messageId: parentId,\n });\n else {\n controller.onError?.(new Error('未找到对应的对话'));\n }\n },\n onCancel: async () => {\n controller?.abortMessage();\n },\n adapters: {\n attachments: {\n remove: async ({ id }) => {\n console.log(id);\n },\n send: async ({ id, file }) => {\n return {\n id,\n type: 'image',\n name: file.name,\n contentType: file.type,\n content: [\n {\n type: 'image',\n image: file.name,\n },\n ],\n status: {\n type: 'complete',\n },\n file,\n };\n },\n accept: 'image/*',\n add: async ({ file }) => {\n return {\n file,\n id: uuid(),\n type: 'image',\n name: file.name,\n contentType: file.type,\n status: {\n type: 'running',\n reason: 'uploading',\n progress: 0,\n },\n };\n },\n },\n },\n });\n\n const selectedSpan = useTraceStore(state => state.selectedSpan);\n const setSelectedSpan = useTraceStore(state => state.setSelectedSpan);\n useEffect(() => () => setSelectedSpan(null), [setSelectedSpan]);\n // const events = useEvent(currentThreadId);\n // useEvent(currentThreadId);\n return (\n <AssistantRuntimeProvider key={currentThreadId} runtime={runtime}>\n <Toaster />\n <ExecutionCard />\n <ChatkitProvider\n value={{\n ref: ref as MutableRefObject<ChatkitRef | null>,\n plugins: plugins || [],\n showThreadList: threadList !== false,\n placeholder: placeholder || '请输入内容',\n showHeader,\n expandToolGroup,\n expandToolDetail,\n expandReasoning,\n controller,\n }}\n >\n <div className=\"flex h-full w-full\">\n {threadList !== false &&\n (typeof threadList === 'function' ? (\n threadList({\n threadList: values(threadMap) as ThreadType[],\n })\n ) : (\n <ThreadList />\n ))}\n <div className=\"flex-1 h-full w-[calc(100%-200px)]\">\n <Group\n orientation=\"vertical\"\n style={{ height: '100%', width: '100%' }}\n >\n <Panel>\n <Thread welcome={welcome} recommends={recommends} />\n </Panel>\n {selectedSpan && (\n <Panel defaultSize={'30%'}>\n <TraceDetail\n selectedSpan={selectedSpan || undefined}\n onCancel={() => setSelectedSpan(null)}\n />\n </Panel>\n )}\n {threadBottom}\n </Group>\n </div>\n </div>\n </ChatkitProvider>\n {(tools || []).map((tool, index) => tool)}\n </AssistantRuntimeProvider>\n );\n },\n);\n\nconst Chatkit = (props: ChatkitProps) => {\n const {\n initialConfig,\n welcome,\n recommends,\n onError,\n toolDisplay,\n plugins,\n chatController: chatControllerFromProps = null,\n threadBottom,\n chatControllerPlugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup,\n expandToolDetail,\n debugger: debuggerProps,\n } = props;\n\n const controllerRef = useRef<ChatController | null>(chatControllerFromProps);\n\n const controller = controllerRef.current;\n\n const { currentThreadId, threadMap } = useSnapshot(controller!.store.state);\n\n const currentThread = currentThreadId ? threadMap[currentThreadId] : null;\n\n const messages = useMemo(\n () => threadMap[currentThread?.id || '']?.messages || [],\n [currentThread?.id, threadMap],\n );\n return (\n <div className={'chatkit-wrapper'} style={{ height: '100%' }} data-chatkit>\n <Group style={{ height: '100%' }}>\n <Panel minSize={750} maxSize={900}>\n <ChatkitImpl\n key={currentThreadId}\n tools={[<Toaster />, <ExecutionCard />]}\n showHeader={showHeader}\n recommends={recommends}\n initialConfig={initialConfig}\n expandToolGroup={expandToolGroup}\n expandToolDetail={expandToolDetail}\n placeholder={placeholder}\n welcome={welcome}\n plugins={plugins}\n threadList={threadList}\n threadBottom={threadBottom}\n controller={controller!}\n />\n </Panel>\n {debuggerProps && (\n <Panel defaultSize={'25%'} className=\"border-l\">\n <Debug\n region={debuggerProps.region}\n controller={controller!}\n messages={\n (messages.filter(msg => msg.role !== 'user') || []) as any[]\n }\n />\n </Panel>\n )}\n </Group>\n </div>\n );\n};\n\nexport default forwardRef(Chatkit);\n"],"names":["uuid","_jsxs","_jsx","Group","Panel","Debug"],"mappings":"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"}
@@ -19,7 +19,9 @@ export interface ChatkitProps {
19
19
  chatControllerPlugins?: ChatkitPlugin[];
20
20
  onError?: (error: any) => void;
21
21
  welcome?: React.ReactNode;
22
- region?: string;
22
+ debugger?: false | {
23
+ region: string;
24
+ };
23
25
  }
24
26
  export interface ChatkitRef {
25
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Chatkit/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Chatkit/types.ts"],"names":[],"mappings":"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"}
@@ -89,7 +89,7 @@ const ThreadList = () => {
89
89
  ref?.setCurrentThread(threadId);
90
90
  // 这里可以添加线程切换的逻辑
91
91
  };
92
- return (jsxRuntime.jsx("div", { className: "bg-[#F6F8FA]", children: jsxRuntime.jsxs("div", { className: "flex flex-col h-full w-[200px]", children: [jsxRuntime.jsx("div", { className: "flex items-center justify-between py-[12px] px-[15px]", children: jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: jsxRuntime.jsx("h2", { className: "text-[16px] font-semibold", children: "Session" }) }) }), jsxRuntime.jsx("div", { className: "flex-1 overflow-y-auto scrollbar-thin", children: threadGroups.map(group => (jsxRuntime.jsxs("div", { className: "mb-3", children: [jsxRuntime.jsx("div", { className: "pl-[16px] h-[24px] text-[#808388] leading-[22px] mb-[4px]", children: group.title }), group.threads.map(thread => (jsxRuntime.jsx("div", { onClick: () => handleThreadClick(thread.id), className: utils.cn('flex items-center justify-between p-3 cursor-pointer transition-colors m-[4px]', currentThread?.id === thread.id
92
+ return (jsxRuntime.jsx("div", { className: "bg-[#F6F8FA]", children: jsxRuntime.jsxs("div", { className: "flex flex-col h-full w-[200px]", children: [jsxRuntime.jsx("div", { className: "flex items-center justify-between py-[12px] px-[15px]", children: jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: jsxRuntime.jsx("h2", { className: "text-[16px] font-semibold", children: "Sessions" }) }) }), jsxRuntime.jsx("div", { className: "flex-1 overflow-y-auto scrollbar-thin", children: threadGroups.map(group => (jsxRuntime.jsxs("div", { className: "mb-3", children: [jsxRuntime.jsx("div", { className: "pl-[16px] h-[24px] text-[#808388] leading-[22px] mb-[4px]", children: group.title }), group.threads.map(thread => (jsxRuntime.jsx("div", { onClick: () => handleThreadClick(thread.id), className: utils.cn('flex items-center justify-between p-3 cursor-pointer transition-colors m-[4px]', currentThread?.id === thread.id
93
93
  ? 'rounded-[10px] border bg-[#EBF1FF] border-[#1664FF1A]'
94
94
  : 'hover:bg-gray-50 border border-transparent'), children: jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [jsxRuntime.jsxs("div", { className: "flex justify-between items-center mb-1", children: [jsxRuntime.jsx("h3", { className: utils.cn('font-medium truncate leading-[22px]', currentThread?.id === thread.id
95
95
  ? 'text-[#1664FF]'
@@ -1 +1 @@
1
- {"version":3,"file":"thread-list.cjs","sources":["../../src/components/thread-list.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport dayjs from 'dayjs';\nimport { MoreHorizontal } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport ThreadOptionsMenu from './ThreadOptionsMenu';\nimport { useChatkitRef } from '@/contexts/ChatkitContext';\nimport useThread from '@/hooks/useThread';\nimport { Thread } from '@chat-lab/core';\n\n// 定义线程组类型\ninterface ThreadGroup {\n id: string;\n title: string;\n threads: Thread[];\n}\n\nconst ThreadList = () => {\n // 状态管理\n const ref = useChatkitRef();\n const { currentThread, threadList } = useThread();\n\n const threadGroups: ThreadGroup[] = useMemo(() => {\n if (!threadList || threadList.length === 0) {\n return [];\n }\n\n const sortedThreads = [...(threadList as Thread[])].sort((a, b) => {\n const timeA = a.updatedAt || a.createdAt || 0;\n const timeB = b.updatedAt || b.createdAt || 0;\n return timeB - timeA;\n });\n\n const groups: { [key: string]: Thread[] } = {};\n const groupOrder: string[] = [];\n\n sortedThreads.forEach(thread => {\n const timestamp = thread.updatedAt || thread.createdAt || 0;\n const threadDate = dayjs.unix(timestamp);\n const today = dayjs().startOf('day');\n const yesterday = dayjs().subtract(1, 'day').startOf('day');\n\n let groupTitle: string;\n\n if (threadDate.isSame(today, 'day')) {\n groupTitle = '今天';\n } else if (threadDate.isSame(yesterday, 'day')) {\n groupTitle = '昨天';\n } else if (threadDate.isAfter(today.subtract(7, 'day'))) {\n groupTitle = '最近7天';\n } else {\n groupTitle = threadDate.format('YYYY年MM月');\n }\n\n if (!groups[groupTitle]) {\n groups[groupTitle] = [];\n groupOrder.push(groupTitle);\n }\n groups[groupTitle].push(thread);\n });\n\n // 确保分组顺序\n const groupTitleOrder = ['今天', '昨天', '最近7天'];\n const sortedGroupOrder = groupOrder.sort((a, b) => {\n const indexA = groupTitleOrder.indexOf(a);\n const indexB = groupTitleOrder.indexOf(b);\n if (indexA !== -1 && indexB !== -1) return indexA - indexB;\n if (indexA !== -1) return -1;\n if (indexB !== -1) return 1;\n return b.localeCompare(a);\n });\n\n return sortedGroupOrder.map(groupTitle => ({\n id: groupTitle,\n title: groupTitle,\n threads: groups[groupTitle],\n }));\n }, [threadList]);\n\n const formatTime = (timestamp?: number) => {\n if (!timestamp) return '';\n\n const date = dayjs.unix(timestamp);\n const now = dayjs();\n\n if (date.isSame(now, 'day')) {\n return date.format('HH:mm');\n } else if (date.isSame(now.subtract(1, 'day'), 'day')) {\n return `昨天`;\n } else if (date.isSame(now, 'year')) {\n return date.format('MM-DD');\n } else {\n return date.format('YYYY-MM-DD');\n }\n };\n\n // 处理线程点击\n const handleThreadClick = (threadId: string) => {\n ref?.setCurrentThread(threadId);\n // 这里可以添加线程切换的逻辑\n };\n\n // 处理新建线程\n const handleNewThread = () => {\n // 这里可以添加新建线程的逻辑\n ref?.addThread({\n id: `thread-${Date.now()}`,\n name: '新对话',\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n };\n\n return (\n <div className=\"bg-[#F6F8FA]\">\n <div className=\"flex flex-col h-full w-[200px]\">\n {/* 头部 */}\n <div className=\"flex items-center justify-between py-[12px] px-[15px]\">\n <div className=\"flex items-center gap-2\">\n <h2 className=\"text-[16px] font-semibold\">Session</h2>\n </div>\n </div>\n\n {/* 线程列表 */}\n <div className=\"flex-1 overflow-y-auto scrollbar-thin\">\n {threadGroups.map(group => (\n <div key={group.id} className=\"mb-3\">\n <div className=\"pl-[16px] h-[24px] text-[#808388] leading-[22px] mb-[4px]\">\n {group.title}\n </div>\n {group.threads.map(thread => (\n <div\n key={thread.id}\n onClick={() => handleThreadClick(thread.id)}\n className={cn(\n 'flex items-center justify-between p-3 cursor-pointer transition-colors m-[4px]',\n currentThread?.id === thread.id\n ? 'rounded-[10px] border bg-[#EBF1FF] border-[#1664FF1A]'\n : 'hover:bg-gray-50 border border-transparent',\n )}\n >\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex justify-between items-center mb-1\">\n <h3\n className={cn(\n 'font-medium truncate leading-[22px]',\n currentThread?.id === thread.id\n ? 'text-[#1664FF]'\n : 'text-gray-900',\n )}\n >\n {thread.name || '新对话'}\n </h3>\n <ThreadOptionsMenu\n className=\"flex-shrink-0\"\n threadId={thread.id}\n />\n </div>\n <p className=\"text-xs text-[#808388]\">\n {formatTime(thread.updatedAt || thread.createdAt)}\n </p>\n </div>\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default ThreadList;\n"],"names":["useChatkitRef","useMemo","dayjs","_jsx","_jsxs","cn"],"mappings":"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"}
1
+ {"version":3,"file":"thread-list.cjs","sources":["../../src/components/thread-list.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport dayjs from 'dayjs';\nimport { MoreHorizontal } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport ThreadOptionsMenu from './ThreadOptionsMenu';\nimport { useChatkitRef } from '@/contexts/ChatkitContext';\nimport useThread from '@/hooks/useThread';\nimport { Thread } from '@chat-lab/core';\n\n// 定义线程组类型\ninterface ThreadGroup {\n id: string;\n title: string;\n threads: Thread[];\n}\n\nconst ThreadList = () => {\n // 状态管理\n const ref = useChatkitRef();\n const { currentThread, threadList } = useThread();\n\n const threadGroups: ThreadGroup[] = useMemo(() => {\n if (!threadList || threadList.length === 0) {\n return [];\n }\n\n const sortedThreads = [...(threadList as Thread[])].sort((a, b) => {\n const timeA = a.updatedAt || a.createdAt || 0;\n const timeB = b.updatedAt || b.createdAt || 0;\n return timeB - timeA;\n });\n\n const groups: { [key: string]: Thread[] } = {};\n const groupOrder: string[] = [];\n\n sortedThreads.forEach(thread => {\n const timestamp = thread.updatedAt || thread.createdAt || 0;\n const threadDate = dayjs.unix(timestamp);\n const today = dayjs().startOf('day');\n const yesterday = dayjs().subtract(1, 'day').startOf('day');\n\n let groupTitle: string;\n\n if (threadDate.isSame(today, 'day')) {\n groupTitle = '今天';\n } else if (threadDate.isSame(yesterday, 'day')) {\n groupTitle = '昨天';\n } else if (threadDate.isAfter(today.subtract(7, 'day'))) {\n groupTitle = '最近7天';\n } else {\n groupTitle = threadDate.format('YYYY年MM月');\n }\n\n if (!groups[groupTitle]) {\n groups[groupTitle] = [];\n groupOrder.push(groupTitle);\n }\n groups[groupTitle].push(thread);\n });\n\n // 确保分组顺序\n const groupTitleOrder = ['今天', '昨天', '最近7天'];\n const sortedGroupOrder = groupOrder.sort((a, b) => {\n const indexA = groupTitleOrder.indexOf(a);\n const indexB = groupTitleOrder.indexOf(b);\n if (indexA !== -1 && indexB !== -1) return indexA - indexB;\n if (indexA !== -1) return -1;\n if (indexB !== -1) return 1;\n return b.localeCompare(a);\n });\n\n return sortedGroupOrder.map(groupTitle => ({\n id: groupTitle,\n title: groupTitle,\n threads: groups[groupTitle],\n }));\n }, [threadList]);\n\n const formatTime = (timestamp?: number) => {\n if (!timestamp) return '';\n\n const date = dayjs.unix(timestamp);\n const now = dayjs();\n\n if (date.isSame(now, 'day')) {\n return date.format('HH:mm');\n } else if (date.isSame(now.subtract(1, 'day'), 'day')) {\n return `昨天`;\n } else if (date.isSame(now, 'year')) {\n return date.format('MM-DD');\n } else {\n return date.format('YYYY-MM-DD');\n }\n };\n\n // 处理线程点击\n const handleThreadClick = (threadId: string) => {\n ref?.setCurrentThread(threadId);\n // 这里可以添加线程切换的逻辑\n };\n\n // 处理新建线程\n const handleNewThread = () => {\n // 这里可以添加新建线程的逻辑\n ref?.addThread({\n id: `thread-${Date.now()}`,\n name: '新对话',\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n };\n\n return (\n <div className=\"bg-[#F6F8FA]\">\n <div className=\"flex flex-col h-full w-[200px]\">\n {/* 头部 */}\n <div className=\"flex items-center justify-between py-[12px] px-[15px]\">\n <div className=\"flex items-center gap-2\">\n <h2 className=\"text-[16px] font-semibold\">Sessions</h2>\n </div>\n </div>\n\n {/* 线程列表 */}\n <div className=\"flex-1 overflow-y-auto scrollbar-thin\">\n {threadGroups.map(group => (\n <div key={group.id} className=\"mb-3\">\n <div className=\"pl-[16px] h-[24px] text-[#808388] leading-[22px] mb-[4px]\">\n {group.title}\n </div>\n {group.threads.map(thread => (\n <div\n key={thread.id}\n onClick={() => handleThreadClick(thread.id)}\n className={cn(\n 'flex items-center justify-between p-3 cursor-pointer transition-colors m-[4px]',\n currentThread?.id === thread.id\n ? 'rounded-[10px] border bg-[#EBF1FF] border-[#1664FF1A]'\n : 'hover:bg-gray-50 border border-transparent',\n )}\n >\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex justify-between items-center mb-1\">\n <h3\n className={cn(\n 'font-medium truncate leading-[22px]',\n currentThread?.id === thread.id\n ? 'text-[#1664FF]'\n : 'text-gray-900',\n )}\n >\n {thread.name || '新对话'}\n </h3>\n <ThreadOptionsMenu\n className=\"flex-shrink-0\"\n threadId={thread.id}\n />\n </div>\n <p className=\"text-xs text-[#808388]\">\n {formatTime(thread.updatedAt || thread.createdAt)}\n </p>\n </div>\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default ThreadList;\n"],"names":["useChatkitRef","useMemo","dayjs","_jsx","_jsxs","cn"],"mappings":"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"}
@@ -87,7 +87,7 @@ const ThreadList = () => {
87
87
  ref?.setCurrentThread(threadId);
88
88
  // 这里可以添加线程切换的逻辑
89
89
  };
90
- return (jsx("div", { className: "bg-[#F6F8FA]", children: jsxs("div", { className: "flex flex-col h-full w-[200px]", children: [jsx("div", { className: "flex items-center justify-between py-[12px] px-[15px]", children: jsx("div", { className: "flex items-center gap-2", children: jsx("h2", { className: "text-[16px] font-semibold", children: "Session" }) }) }), jsx("div", { className: "flex-1 overflow-y-auto scrollbar-thin", children: threadGroups.map(group => (jsxs("div", { className: "mb-3", children: [jsx("div", { className: "pl-[16px] h-[24px] text-[#808388] leading-[22px] mb-[4px]", children: group.title }), group.threads.map(thread => (jsx("div", { onClick: () => handleThreadClick(thread.id), className: cn('flex items-center justify-between p-3 cursor-pointer transition-colors m-[4px]', currentThread?.id === thread.id
90
+ return (jsx("div", { className: "bg-[#F6F8FA]", children: jsxs("div", { className: "flex flex-col h-full w-[200px]", children: [jsx("div", { className: "flex items-center justify-between py-[12px] px-[15px]", children: jsx("div", { className: "flex items-center gap-2", children: jsx("h2", { className: "text-[16px] font-semibold", children: "Sessions" }) }) }), jsx("div", { className: "flex-1 overflow-y-auto scrollbar-thin", children: threadGroups.map(group => (jsxs("div", { className: "mb-3", children: [jsx("div", { className: "pl-[16px] h-[24px] text-[#808388] leading-[22px] mb-[4px]", children: group.title }), group.threads.map(thread => (jsx("div", { onClick: () => handleThreadClick(thread.id), className: cn('flex items-center justify-between p-3 cursor-pointer transition-colors m-[4px]', currentThread?.id === thread.id
91
91
  ? 'rounded-[10px] border bg-[#EBF1FF] border-[#1664FF1A]'
92
92
  : 'hover:bg-gray-50 border border-transparent'), children: jsxs("div", { className: "flex-1 min-w-0", children: [jsxs("div", { className: "flex justify-between items-center mb-1", children: [jsx("h3", { className: cn('font-medium truncate leading-[22px]', currentThread?.id === thread.id
93
93
  ? 'text-[#1664FF]'
@@ -1 +1 @@
1
- {"version":3,"file":"thread-list.js","sources":["../../src/components/thread-list.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport dayjs from 'dayjs';\nimport { MoreHorizontal } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport ThreadOptionsMenu from './ThreadOptionsMenu';\nimport { useChatkitRef } from '@/contexts/ChatkitContext';\nimport useThread from '@/hooks/useThread';\nimport { Thread } from '@chat-lab/core';\n\n// 定义线程组类型\ninterface ThreadGroup {\n id: string;\n title: string;\n threads: Thread[];\n}\n\nconst ThreadList = () => {\n // 状态管理\n const ref = useChatkitRef();\n const { currentThread, threadList } = useThread();\n\n const threadGroups: ThreadGroup[] = useMemo(() => {\n if (!threadList || threadList.length === 0) {\n return [];\n }\n\n const sortedThreads = [...(threadList as Thread[])].sort((a, b) => {\n const timeA = a.updatedAt || a.createdAt || 0;\n const timeB = b.updatedAt || b.createdAt || 0;\n return timeB - timeA;\n });\n\n const groups: { [key: string]: Thread[] } = {};\n const groupOrder: string[] = [];\n\n sortedThreads.forEach(thread => {\n const timestamp = thread.updatedAt || thread.createdAt || 0;\n const threadDate = dayjs.unix(timestamp);\n const today = dayjs().startOf('day');\n const yesterday = dayjs().subtract(1, 'day').startOf('day');\n\n let groupTitle: string;\n\n if (threadDate.isSame(today, 'day')) {\n groupTitle = '今天';\n } else if (threadDate.isSame(yesterday, 'day')) {\n groupTitle = '昨天';\n } else if (threadDate.isAfter(today.subtract(7, 'day'))) {\n groupTitle = '最近7天';\n } else {\n groupTitle = threadDate.format('YYYY年MM月');\n }\n\n if (!groups[groupTitle]) {\n groups[groupTitle] = [];\n groupOrder.push(groupTitle);\n }\n groups[groupTitle].push(thread);\n });\n\n // 确保分组顺序\n const groupTitleOrder = ['今天', '昨天', '最近7天'];\n const sortedGroupOrder = groupOrder.sort((a, b) => {\n const indexA = groupTitleOrder.indexOf(a);\n const indexB = groupTitleOrder.indexOf(b);\n if (indexA !== -1 && indexB !== -1) return indexA - indexB;\n if (indexA !== -1) return -1;\n if (indexB !== -1) return 1;\n return b.localeCompare(a);\n });\n\n return sortedGroupOrder.map(groupTitle => ({\n id: groupTitle,\n title: groupTitle,\n threads: groups[groupTitle],\n }));\n }, [threadList]);\n\n const formatTime = (timestamp?: number) => {\n if (!timestamp) return '';\n\n const date = dayjs.unix(timestamp);\n const now = dayjs();\n\n if (date.isSame(now, 'day')) {\n return date.format('HH:mm');\n } else if (date.isSame(now.subtract(1, 'day'), 'day')) {\n return `昨天`;\n } else if (date.isSame(now, 'year')) {\n return date.format('MM-DD');\n } else {\n return date.format('YYYY-MM-DD');\n }\n };\n\n // 处理线程点击\n const handleThreadClick = (threadId: string) => {\n ref?.setCurrentThread(threadId);\n // 这里可以添加线程切换的逻辑\n };\n\n // 处理新建线程\n const handleNewThread = () => {\n // 这里可以添加新建线程的逻辑\n ref?.addThread({\n id: `thread-${Date.now()}`,\n name: '新对话',\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n };\n\n return (\n <div className=\"bg-[#F6F8FA]\">\n <div className=\"flex flex-col h-full w-[200px]\">\n {/* 头部 */}\n <div className=\"flex items-center justify-between py-[12px] px-[15px]\">\n <div className=\"flex items-center gap-2\">\n <h2 className=\"text-[16px] font-semibold\">Session</h2>\n </div>\n </div>\n\n {/* 线程列表 */}\n <div className=\"flex-1 overflow-y-auto scrollbar-thin\">\n {threadGroups.map(group => (\n <div key={group.id} className=\"mb-3\">\n <div className=\"pl-[16px] h-[24px] text-[#808388] leading-[22px] mb-[4px]\">\n {group.title}\n </div>\n {group.threads.map(thread => (\n <div\n key={thread.id}\n onClick={() => handleThreadClick(thread.id)}\n className={cn(\n 'flex items-center justify-between p-3 cursor-pointer transition-colors m-[4px]',\n currentThread?.id === thread.id\n ? 'rounded-[10px] border bg-[#EBF1FF] border-[#1664FF1A]'\n : 'hover:bg-gray-50 border border-transparent',\n )}\n >\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex justify-between items-center mb-1\">\n <h3\n className={cn(\n 'font-medium truncate leading-[22px]',\n currentThread?.id === thread.id\n ? 'text-[#1664FF]'\n : 'text-gray-900',\n )}\n >\n {thread.name || '新对话'}\n </h3>\n <ThreadOptionsMenu\n className=\"flex-shrink-0\"\n threadId={thread.id}\n />\n </div>\n <p className=\"text-xs text-[#808388]\">\n {formatTime(thread.updatedAt || thread.createdAt)}\n </p>\n </div>\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default ThreadList;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"thread-list.js","sources":["../../src/components/thread-list.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport dayjs from 'dayjs';\nimport { MoreHorizontal } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport ThreadOptionsMenu from './ThreadOptionsMenu';\nimport { useChatkitRef } from '@/contexts/ChatkitContext';\nimport useThread from '@/hooks/useThread';\nimport { Thread } from '@chat-lab/core';\n\n// 定义线程组类型\ninterface ThreadGroup {\n id: string;\n title: string;\n threads: Thread[];\n}\n\nconst ThreadList = () => {\n // 状态管理\n const ref = useChatkitRef();\n const { currentThread, threadList } = useThread();\n\n const threadGroups: ThreadGroup[] = useMemo(() => {\n if (!threadList || threadList.length === 0) {\n return [];\n }\n\n const sortedThreads = [...(threadList as Thread[])].sort((a, b) => {\n const timeA = a.updatedAt || a.createdAt || 0;\n const timeB = b.updatedAt || b.createdAt || 0;\n return timeB - timeA;\n });\n\n const groups: { [key: string]: Thread[] } = {};\n const groupOrder: string[] = [];\n\n sortedThreads.forEach(thread => {\n const timestamp = thread.updatedAt || thread.createdAt || 0;\n const threadDate = dayjs.unix(timestamp);\n const today = dayjs().startOf('day');\n const yesterday = dayjs().subtract(1, 'day').startOf('day');\n\n let groupTitle: string;\n\n if (threadDate.isSame(today, 'day')) {\n groupTitle = '今天';\n } else if (threadDate.isSame(yesterday, 'day')) {\n groupTitle = '昨天';\n } else if (threadDate.isAfter(today.subtract(7, 'day'))) {\n groupTitle = '最近7天';\n } else {\n groupTitle = threadDate.format('YYYY年MM月');\n }\n\n if (!groups[groupTitle]) {\n groups[groupTitle] = [];\n groupOrder.push(groupTitle);\n }\n groups[groupTitle].push(thread);\n });\n\n // 确保分组顺序\n const groupTitleOrder = ['今天', '昨天', '最近7天'];\n const sortedGroupOrder = groupOrder.sort((a, b) => {\n const indexA = groupTitleOrder.indexOf(a);\n const indexB = groupTitleOrder.indexOf(b);\n if (indexA !== -1 && indexB !== -1) return indexA - indexB;\n if (indexA !== -1) return -1;\n if (indexB !== -1) return 1;\n return b.localeCompare(a);\n });\n\n return sortedGroupOrder.map(groupTitle => ({\n id: groupTitle,\n title: groupTitle,\n threads: groups[groupTitle],\n }));\n }, [threadList]);\n\n const formatTime = (timestamp?: number) => {\n if (!timestamp) return '';\n\n const date = dayjs.unix(timestamp);\n const now = dayjs();\n\n if (date.isSame(now, 'day')) {\n return date.format('HH:mm');\n } else if (date.isSame(now.subtract(1, 'day'), 'day')) {\n return `昨天`;\n } else if (date.isSame(now, 'year')) {\n return date.format('MM-DD');\n } else {\n return date.format('YYYY-MM-DD');\n }\n };\n\n // 处理线程点击\n const handleThreadClick = (threadId: string) => {\n ref?.setCurrentThread(threadId);\n // 这里可以添加线程切换的逻辑\n };\n\n // 处理新建线程\n const handleNewThread = () => {\n // 这里可以添加新建线程的逻辑\n ref?.addThread({\n id: `thread-${Date.now()}`,\n name: '新对话',\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n };\n\n return (\n <div className=\"bg-[#F6F8FA]\">\n <div className=\"flex flex-col h-full w-[200px]\">\n {/* 头部 */}\n <div className=\"flex items-center justify-between py-[12px] px-[15px]\">\n <div className=\"flex items-center gap-2\">\n <h2 className=\"text-[16px] font-semibold\">Sessions</h2>\n </div>\n </div>\n\n {/* 线程列表 */}\n <div className=\"flex-1 overflow-y-auto scrollbar-thin\">\n {threadGroups.map(group => (\n <div key={group.id} className=\"mb-3\">\n <div className=\"pl-[16px] h-[24px] text-[#808388] leading-[22px] mb-[4px]\">\n {group.title}\n </div>\n {group.threads.map(thread => (\n <div\n key={thread.id}\n onClick={() => handleThreadClick(thread.id)}\n className={cn(\n 'flex items-center justify-between p-3 cursor-pointer transition-colors m-[4px]',\n currentThread?.id === thread.id\n ? 'rounded-[10px] border bg-[#EBF1FF] border-[#1664FF1A]'\n : 'hover:bg-gray-50 border border-transparent',\n )}\n >\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex justify-between items-center mb-1\">\n <h3\n className={cn(\n 'font-medium truncate leading-[22px]',\n currentThread?.id === thread.id\n ? 'text-[#1664FF]'\n : 'text-gray-900',\n )}\n >\n {thread.name || '新对话'}\n </h3>\n <ThreadOptionsMenu\n className=\"flex-shrink-0\"\n threadId={thread.id}\n />\n </div>\n <p className=\"text-xs text-[#808388]\">\n {formatTime(thread.updatedAt || thread.createdAt)}\n </p>\n </div>\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default ThreadList;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}