@gendive/chatllm 0.17.6 → 0.17.7

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.
@@ -6491,6 +6491,7 @@ var MarkdownRenderer = ({
6491
6491
  } else {
6492
6492
  processedContent = processedContent.replace(UNCLOSED_THINKING_TAG_REGEX, "");
6493
6493
  }
6494
+ processedContent = processedContent.replace(/<poll[^>]*>[\s\S]*?<\/poll>/gi, "");
6494
6495
  processedContent = processedContent.replace(UNCLOSED_POLL_TAG_REGEX, "");
6495
6496
  processedContent = processedContent.replace(UNCLOSED_SKILL_TAG_REGEX, "");
6496
6497
  const codeBlocks = [];
@@ -10176,8 +10177,133 @@ var ProjectSettingsModal = ({
10176
10177
  );
10177
10178
  };
10178
10179
 
10179
- // src/react/ChatUI.tsx
10180
+ // src/react/components/DisclaimerModal.tsx
10180
10181
  var import_jsx_runtime20 = require("react/jsx-runtime");
10182
+ var DisclaimerModal = ({ isOpen, onClose }) => {
10183
+ if (!isOpen) return null;
10184
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10185
+ "div",
10186
+ {
10187
+ className: "chatllm-disclaimer-overlay",
10188
+ style: {
10189
+ position: "fixed",
10190
+ inset: 0,
10191
+ backgroundColor: "rgba(0, 0, 0, 0.3)",
10192
+ display: "flex",
10193
+ alignItems: "center",
10194
+ justifyContent: "center",
10195
+ zIndex: 1e3
10196
+ },
10197
+ onClick: onClose,
10198
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
10199
+ "div",
10200
+ {
10201
+ className: "chatllm-disclaimer-modal",
10202
+ style: {
10203
+ backgroundColor: "var(--chatllm-bg, #ffffff)",
10204
+ borderRadius: "16px",
10205
+ width: "100%",
10206
+ maxWidth: "560px",
10207
+ maxHeight: "80vh",
10208
+ margin: "16px",
10209
+ boxShadow: "0 20px 60px rgba(0, 0, 0, 0.15)",
10210
+ display: "flex",
10211
+ flexDirection: "column",
10212
+ overflow: "hidden"
10213
+ },
10214
+ onClick: (e) => e.stopPropagation(),
10215
+ children: [
10216
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
10217
+ "div",
10218
+ {
10219
+ style: {
10220
+ display: "flex",
10221
+ alignItems: "center",
10222
+ justifyContent: "space-between",
10223
+ padding: "20px 24px 16px",
10224
+ borderBottom: "1px solid var(--chatllm-border, #e5e7eb)"
10225
+ },
10226
+ children: [
10227
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
10228
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(IconSvg, { name: "error-warning-line", size: 20, color: "var(--chatllm-text-muted, #64748b)" }),
10229
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10230
+ "h2",
10231
+ {
10232
+ style: {
10233
+ margin: 0,
10234
+ fontSize: "16px",
10235
+ fontWeight: 600,
10236
+ color: "var(--chatllm-text, #1e293b)"
10237
+ },
10238
+ children: "AI \uC751\uB2F5\uC5D0 \uB300\uD55C \uC548\uB0B4"
10239
+ }
10240
+ )
10241
+ ] }),
10242
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10243
+ "button",
10244
+ {
10245
+ onClick: onClose,
10246
+ "aria-label": "\uB2EB\uAE30",
10247
+ style: {
10248
+ background: "none",
10249
+ border: "none",
10250
+ cursor: "pointer",
10251
+ padding: "4px",
10252
+ borderRadius: "6px",
10253
+ display: "flex",
10254
+ alignItems: "center",
10255
+ justifyContent: "center"
10256
+ },
10257
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(IconSvg, { name: "close-line", size: 20, color: "var(--chatllm-text-muted, #64748b)" })
10258
+ }
10259
+ )
10260
+ ]
10261
+ }
10262
+ ),
10263
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
10264
+ "div",
10265
+ {
10266
+ className: "chatllm-scrollbar",
10267
+ style: {
10268
+ padding: "20px 24px 24px",
10269
+ overflow: "auto",
10270
+ fontSize: "14px",
10271
+ lineHeight: 1.7,
10272
+ color: "var(--chatllm-text-secondary, #475569)"
10273
+ },
10274
+ children: [
10275
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { style: { margin: "0 0 14px" }, children: "AI \uCC44\uD305\uC740 \uC0AC\uC6A9\uC790\uB97C \uB3D5\uAE30 \uC704\uD574 \uC124\uACC4\uB418\uC5C8\uC9C0\uB9CC, \uACBD\uC6B0\uC5D0 \uB530\uB77C \uBD80\uC815\uD655\uD558\uAC70\uB098 \uC624\uD574\uC758 \uC18C\uC9C0\uAC00 \uC788\uB294 \uB2F5\uBCC0\uC744 \uC81C\uACF5\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4." }),
10276
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { style: { margin: "0 0 14px" }, children: "\uC774\uB7EC\uD55C \uD604\uC0C1\uC740 \uD754\uD788 '\uD658\uAC01(hallucination)'\uC774\uB77C\uACE0 \uBD88\uB9AC\uBA70, AI \uCC44\uD305\uACFC \uAC19\uC740 \uCD5C\uC2E0 \uC0DD\uC131\uD615 AI \uAE30\uC220\uC774 \uC544\uC9C1 \uAC00\uC9C0\uACE0 \uC788\uB294 \uD55C\uACC4\uC5D0\uC11C \uBE44\uB86F\uB429\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4, \uC77C\uBD80 \uC8FC\uC81C\uC5D0 \uB300\uD574\uC11C\uB294 \uCD5C\uC2E0 \uC815\uBCF4\uAE4C\uC9C0 \uD559\uC2B5\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC744 \uC218 \uC788\uC73C\uBA70, \uC2DC\uC0AC\uC801\uC778 \uC774\uC288\uB098 \uBE60\uB974\uAC8C \uBCC0\uD654\uD558\uB294 \uB0B4\uC6A9\uC5D0 \uB300\uD574\uC11C\uB294 \uD63C\uB780\uC2A4\uB7EC\uC6B4 \uB2F5\uBCC0\uC744 \uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uB610\uD55C, \uC0AC\uC2E4\uC5D0 \uADFC\uAC70\uD558\uC9C0 \uC54A\uC558\uC74C\uC5D0\uB3C4 \uBD88\uAD6C\uD558\uACE0 \uAC89\uBCF4\uAE30\uC5D0\uB294 \uADF8\uB7F4\uB4EF\uD558\uAC70\uB098 \uAD8C\uC704 \uC788\uC5B4 \uBCF4\uC774\uB294 \uC124\uBA85\uC774\uB098 \uC778\uC6A9\uC744 \uC81C\uC2DC\uD558\uB294 \uACBD\uC6B0\uB3C4 \uC788\uC2B5\uB2C8\uB2E4. \uC989, \uB2F5\uBCC0\uC774 \uB9DE\uB294 \uAC83\uCC98\uB7FC \uBCF4\uC774\uB354\uB77C\uB3C4 \uC2E4\uC81C\uB85C\uB294 \uC815\uD655\uD558\uC9C0 \uC54A\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4." }),
10277
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { style: { margin: "0 0 14px" }, children: "\uB530\uB77C\uC11C AI \uCC44\uD305\uC758 \uB2F5\uBCC0\uC744 \uC808\uB300\uC801\uC778 \uC0AC\uC2E4\uB85C \uBC1B\uC544\uB4E4\uC774\uAE30\uBCF4\uB2E4\uB294 \uCC38\uACE0 \uC790\uB8CC\uB85C \uD65C\uC6A9\uD558\uC2DC\uACE0, \uC911\uC694\uD55C \uD310\uB2E8\uC774\uB098 \uC758\uC0AC\uACB0\uC815\uC5D0 \uC55E\uC11C\uC11C\uB294 \uBC18\uB4DC\uC2DC \uCD94\uAC00\uC801\uC778 \uD655\uC778\uACFC \uAC80\uD1A0\uB97C \uAD8C\uC7A5\uB4DC\uB9BD\uB2C8\uB2E4." }),
10278
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { style: { margin: "0 0 14px" }, children: "\uC6F9 \uAC80\uC0C9 \uACB0\uACFC\uB97C \uD65C\uC6A9\uD558\uB294 \uACBD\uC6B0\uC5D0\uB3C4, AI \uCC44\uD305\uC774 \uC81C\uC2DC\uD55C \uCD9C\uCC98\uB97C \uC9C1\uC811 \uD655\uC778\uD574 \uBCF4\uC2DC\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4. \uC6D0\uBCF8 \uC6F9\uC0AC\uC774\uD2B8\uC5D0\uB294 AI\uC758 \uC694\uC57D\uC774\uB098 \uBD84\uC11D \uACFC\uC815\uC5D0\uC11C \uC0DD\uB7B5\uB41C \uC911\uC694\uD55C \uB9E5\uB77D\uC774\uB098 \uC138\uBD80 \uC815\uBCF4\uAC00 \uD3EC\uD568\uB418\uC5B4 \uC788\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uC6D0\uBB38\uC744 \uD568\uAED8 \uC0B4\uD3B4\uBCF4\uBA74 \uC815\uBCF4\uAC00 \uACFC\uB3C4\uD558\uAC8C \uB2E8\uC21C\uD654\uB418\uAC70\uB098 \uC624\uD574\uB420 \uAC00\uB2A5\uC131\uC744 \uC904\uC774\uB294 \uB370 \uB3C4\uC6C0\uC774 \uB429\uB2C8\uB2E4." }),
10279
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("p", { style: { margin: 0 }, children: [
10280
+ "\uB9CC\uC57D \uD2B9\uC815 \uB2F5\uBCC0\uC774 \uCDA9\uBD84\uD788 \uB3C4\uC6C0\uC774 \uB418\uC9C0 \uC54A\uC558\uAC70\uB098 \uAC1C\uC120\uC774 \uD544\uC694\uD558\uB2E4\uACE0 \uB290\uB07C\uC2E0\uB2E4\uBA74, \uC5B8\uC81C\uB4E0\uC9C0 \uC758\uACAC\uC774\uB098 \uC81C\uC548 \uC0AC\uD56D\uC744",
10281
+ " ",
10282
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10283
+ "a",
10284
+ {
10285
+ href: "mailto:info@gendive.ai",
10286
+ style: {
10287
+ color: "var(--chatllm-primary, #4A90E2)",
10288
+ textDecoration: "none"
10289
+ },
10290
+ children: "info@gendive.ai"
10291
+ }
10292
+ ),
10293
+ "\uB85C \uBCF4\uB0B4\uC8FC\uC138\uC694. \uB354 \uB098\uC740 \uC11C\uBE44\uC2A4\uB97C \uC81C\uACF5\uD558\uB294 \uB370 \uD070 \uB3C4\uC6C0\uC774 \uB429\uB2C8\uB2E4."
10294
+ ] })
10295
+ ]
10296
+ }
10297
+ )
10298
+ ]
10299
+ }
10300
+ )
10301
+ }
10302
+ );
10303
+ };
10304
+
10305
+ // src/react/ChatUI.tsx
10306
+ var import_jsx_runtime21 = require("react/jsx-runtime");
10181
10307
  var DEFAULT_ACTIONS = [];
10182
10308
  var DEFAULT_TEMPLATES = [];
10183
10309
  var DEFAULT_MODELS = [
@@ -10491,6 +10617,7 @@ var ChatUIView = ({
10491
10617
  projectMemory,
10492
10618
  isSessionsLoading
10493
10619
  } = state;
10620
+ const [disclaimerOpen, setDisclaimerOpen] = import_react20.default.useState(false);
10494
10621
  const greeting = currentPersonalization.userProfile.nickname ? `\uC548\uB155\uD558\uC138\uC694, ${currentPersonalization.userProfile.nickname}\uB2D8` : "\uC548\uB155\uD558\uC138\uC694";
10495
10622
  const handleTemplateClick = (template) => {
10496
10623
  setInput(template.prompt);
@@ -10533,7 +10660,7 @@ var ChatUIView = ({
10533
10660
  return items;
10534
10661
  }, [projectMemory?.state.entries]);
10535
10662
  const themeClass = theme?.mode === "dark" ? "chatllm-dark" : "";
10536
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
10663
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
10537
10664
  "div",
10538
10665
  {
10539
10666
  className: `chatllm-root ${themeClass} ${className}`,
@@ -10546,7 +10673,7 @@ var ChatUIView = ({
10546
10673
  position: "relative"
10547
10674
  },
10548
10675
  children: [
10549
- showSidebar && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10676
+ showSidebar && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10550
10677
  ChatSidebar,
10551
10678
  {
10552
10679
  sessions,
@@ -10578,7 +10705,7 @@ var ChatUIView = ({
10578
10705
  isLoading: isSessionsLoading
10579
10706
  }
10580
10707
  ),
10581
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
10708
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
10582
10709
  "main",
10583
10710
  {
10584
10711
  style: {
@@ -10590,7 +10717,7 @@ var ChatUIView = ({
10590
10717
  minWidth: 0
10591
10718
  },
10592
10719
  children: [
10593
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10720
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10594
10721
  ChatHeader,
10595
10722
  {
10596
10723
  title: currentSession?.title || "\uC0C8 \uB300\uD654",
@@ -10604,7 +10731,7 @@ var ChatUIView = ({
10604
10731
  showSettings
10605
10732
  }
10606
10733
  ),
10607
- messages.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10734
+ messages.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10608
10735
  EmptyState,
10609
10736
  {
10610
10737
  greeting,
@@ -10613,7 +10740,7 @@ var ChatUIView = ({
10613
10740
  actions,
10614
10741
  onActionSelect: handleActionSelect
10615
10742
  }
10616
- ) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10743
+ ) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10617
10744
  MessageList,
10618
10745
  {
10619
10746
  messages,
@@ -10635,7 +10762,7 @@ var ChatUIView = ({
10635
10762
  onPollSubmit: handlePollSubmit
10636
10763
  }
10637
10764
  ),
10638
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10765
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10639
10766
  ChatInput,
10640
10767
  {
10641
10768
  value: input,
@@ -10660,11 +10787,37 @@ var ChatUIView = ({
10660
10787
  onFileAttach: addAttachments,
10661
10788
  onRemoveAttachment: removeAttachment
10662
10789
  }
10790
+ ),
10791
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10792
+ "div",
10793
+ {
10794
+ style: {
10795
+ textAlign: "center",
10796
+ padding: "6px 0 10px",
10797
+ flexShrink: 0
10798
+ },
10799
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10800
+ "button",
10801
+ {
10802
+ onClick: () => setDisclaimerOpen(true),
10803
+ style: {
10804
+ background: "none",
10805
+ border: "none",
10806
+ cursor: "pointer",
10807
+ fontSize: "12px",
10808
+ color: "var(--chatllm-text-muted, #94a3b8)",
10809
+ padding: "2px 8px",
10810
+ textDecoration: "none"
10811
+ },
10812
+ children: "AI\uB294 \uC2E4\uC218\uB97C \uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4."
10813
+ }
10814
+ )
10815
+ }
10663
10816
  )
10664
10817
  ]
10665
10818
  }
10666
10819
  ),
10667
- showSettings && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10820
+ showSettings && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10668
10821
  SettingsModal,
10669
10822
  {
10670
10823
  isOpen: settingsOpen,
@@ -10690,7 +10843,7 @@ var ChatUIView = ({
10690
10843
  currentProjectTitle: currentProject?.title
10691
10844
  }
10692
10845
  ),
10693
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10846
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10694
10847
  ProjectSettingsModal,
10695
10848
  {
10696
10849
  isOpen: projectSettingsOpen,
@@ -10701,7 +10854,8 @@ var ChatUIView = ({
10701
10854
  onDeleteFile: deleteProjectFile,
10702
10855
  onDeleteProject: deleteProject
10703
10856
  }
10704
- )
10857
+ ),
10858
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DisclaimerModal, { isOpen: disclaimerOpen, onClose: () => setDisclaimerOpen(false) })
10705
10859
  ]
10706
10860
  }
10707
10861
  );
@@ -10802,7 +10956,7 @@ var ChatUIWithHook = ({
10802
10956
  onDeleteProjectFile
10803
10957
  };
10804
10958
  const state = useChatUI(hookOptions);
10805
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10959
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10806
10960
  ChatUIView,
10807
10961
  {
10808
10962
  state,
@@ -10846,7 +11000,7 @@ var ChatUI = (props) => {
10846
11000
  onApiKeyChange,
10847
11001
  deepResearch
10848
11002
  } = props;
10849
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
11003
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10850
11004
  ChatUIView,
10851
11005
  {
10852
11006
  state: props.chatState,
@@ -10869,7 +11023,7 @@ var ChatUI = (props) => {
10869
11023
  }
10870
11024
  );
10871
11025
  }
10872
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ChatUIWithHook, { ...props });
11026
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ChatUIWithHook, { ...props });
10873
11027
  };
10874
11028
 
10875
11029
  // src/react/hooks/useDeepResearch.ts
@@ -11188,7 +11342,7 @@ var useDeepResearch = (options) => {
11188
11342
 
11189
11343
  // src/react/components/MemoryPanel.tsx
11190
11344
  var import_react22 = require("react");
11191
- var import_jsx_runtime21 = require("react/jsx-runtime");
11345
+ var import_jsx_runtime22 = require("react/jsx-runtime");
11192
11346
  var categoryLabels = {
11193
11347
  fact: "\uC0AC\uC6A9\uC790 \uC815\uBCF4",
11194
11348
  skill: "\uC804\uBB38 \uBD84\uC57C/\uAE30\uC220",
@@ -11220,7 +11374,7 @@ var MemoryPanel = ({
11220
11374
  });
11221
11375
  };
11222
11376
  if (!isOpen) {
11223
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11377
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
11224
11378
  "button",
11225
11379
  {
11226
11380
  onClick: onToggle,
@@ -11240,11 +11394,11 @@ var MemoryPanel = ({
11240
11394
  justifyContent: "center",
11241
11395
  zIndex: 100
11242
11396
  },
11243
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(IconSvg, { name: "robot-line", size: 24, color: "#ffffff" })
11397
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(IconSvg, { name: "robot-line", size: 24, color: "#ffffff" })
11244
11398
  }
11245
11399
  );
11246
11400
  }
11247
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
11401
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
11248
11402
  "div",
11249
11403
  {
11250
11404
  className: "chatllm-memory-panel",
@@ -11264,7 +11418,7 @@ var MemoryPanel = ({
11264
11418
  zIndex: 100
11265
11419
  },
11266
11420
  children: [
11267
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
11421
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
11268
11422
  "div",
11269
11423
  {
11270
11424
  style: {
@@ -11275,8 +11429,8 @@ var MemoryPanel = ({
11275
11429
  borderBottom: "1px solid var(--chatllm-border, #e5e7eb)"
11276
11430
  },
11277
11431
  children: [
11278
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "10px" }, children: [
11279
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11432
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "10px" }, children: [
11433
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
11280
11434
  "div",
11281
11435
  {
11282
11436
  style: {
@@ -11288,19 +11442,19 @@ var MemoryPanel = ({
11288
11442
  alignItems: "center",
11289
11443
  justifyContent: "center"
11290
11444
  },
11291
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(IconSvg, { name: "robot-line", size: 18, color: "var(--chatllm-primary, #3b82f6)" })
11445
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(IconSvg, { name: "robot-line", size: 18, color: "var(--chatllm-primary, #3b82f6)" })
11292
11446
  }
11293
11447
  ),
11294
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
11295
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { style: { fontSize: "15px", fontWeight: 600, color: "var(--chatllm-text, #1f2937)" }, children: "AI \uBA54\uBAA8\uB9AC" }),
11296
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: [
11448
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { children: [
11449
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { style: { fontSize: "15px", fontWeight: 600, color: "var(--chatllm-text, #1f2937)" }, children: "AI \uBA54\uBAA8\uB9AC" }),
11450
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: [
11297
11451
  items.length,
11298
11452
  "\uAC1C \uD56D\uBAA9"
11299
11453
  ] })
11300
11454
  ] })
11301
11455
  ] }),
11302
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: { display: "flex", gap: "4px" }, children: [
11303
- onClearAll && items.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11456
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { style: { display: "flex", gap: "4px" }, children: [
11457
+ onClearAll && items.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
11304
11458
  "button",
11305
11459
  {
11306
11460
  onClick: onClearAll,
@@ -11312,10 +11466,10 @@ var MemoryPanel = ({
11312
11466
  cursor: "pointer"
11313
11467
  },
11314
11468
  title: "\uC804\uCCB4 \uC0AD\uC81C",
11315
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(IconSvg, { name: "delete-bin-line", size: 18, color: "var(--chatllm-text-muted, #9ca3af)" })
11469
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(IconSvg, { name: "delete-bin-line", size: 18, color: "var(--chatllm-text-muted, #9ca3af)" })
11316
11470
  }
11317
11471
  ),
11318
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11472
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
11319
11473
  "button",
11320
11474
  {
11321
11475
  onClick: onToggle,
@@ -11326,14 +11480,14 @@ var MemoryPanel = ({
11326
11480
  borderRadius: "8px",
11327
11481
  cursor: "pointer"
11328
11482
  },
11329
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(IconSvg, { name: "close-line", size: 18, color: "var(--chatllm-text-muted, #9ca3af)" })
11483
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(IconSvg, { name: "close-line", size: 18, color: "var(--chatllm-text-muted, #9ca3af)" })
11330
11484
  }
11331
11485
  )
11332
11486
  ] })
11333
11487
  ]
11334
11488
  }
11335
11489
  ),
11336
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11490
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
11337
11491
  "div",
11338
11492
  {
11339
11493
  style: {
@@ -11343,7 +11497,7 @@ var MemoryPanel = ({
11343
11497
  borderBottom: "1px solid var(--chatllm-border-light, #f3f4f6)",
11344
11498
  overflowX: "auto"
11345
11499
  },
11346
- children: ["all", "fact", "skill", "preference"].map((tab) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11500
+ children: ["all", "fact", "skill", "preference"].map((tab) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
11347
11501
  "button",
11348
11502
  {
11349
11503
  onClick: () => setActiveTab(tab),
@@ -11364,8 +11518,8 @@ var MemoryPanel = ({
11364
11518
  ))
11365
11519
  }
11366
11520
  ),
11367
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: { flex: 1, overflow: "auto", padding: "12px" }, children: [
11368
- contextSummary && activeTab === "all" && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
11521
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { style: { flex: 1, overflow: "auto", padding: "12px" }, children: [
11522
+ contextSummary && activeTab === "all" && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
11369
11523
  "div",
11370
11524
  {
11371
11525
  style: {
@@ -11376,7 +11530,7 @@ var MemoryPanel = ({
11376
11530
  borderLeft: "3px solid var(--chatllm-primary, #3b82f6)"
11377
11531
  },
11378
11532
  children: [
11379
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
11533
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
11380
11534
  "div",
11381
11535
  {
11382
11536
  style: {
@@ -11386,12 +11540,12 @@ var MemoryPanel = ({
11386
11540
  marginBottom: "8px"
11387
11541
  },
11388
11542
  children: [
11389
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(IconSvg, { name: "file-text-line", size: 14, color: "var(--chatllm-primary, #3b82f6)" }),
11390
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { style: { fontSize: "12px", fontWeight: 500, color: "var(--chatllm-primary, #3b82f6)" }, children: "\uB300\uD654 \uC694\uC57D" })
11543
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(IconSvg, { name: "file-text-line", size: 14, color: "var(--chatllm-primary, #3b82f6)" }),
11544
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { style: { fontSize: "12px", fontWeight: 500, color: "var(--chatllm-primary, #3b82f6)" }, children: "\uB300\uD654 \uC694\uC57D" })
11391
11545
  ]
11392
11546
  }
11393
11547
  ),
11394
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11548
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
11395
11549
  "p",
11396
11550
  {
11397
11551
  style: {
@@ -11406,7 +11560,7 @@ var MemoryPanel = ({
11406
11560
  ]
11407
11561
  }
11408
11562
  ),
11409
- filteredItems.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
11563
+ filteredItems.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
11410
11564
  "div",
11411
11565
  {
11412
11566
  style: {
@@ -11415,11 +11569,11 @@ var MemoryPanel = ({
11415
11569
  color: "var(--chatllm-text-muted, #9ca3af)"
11416
11570
  },
11417
11571
  children: [
11418
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(IconSvg, { name: "robot-line", size: 32, color: "var(--chatllm-text-muted, #d1d5db)" }),
11419
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { style: { fontSize: "14px", marginTop: "12px" }, children: "\uC800\uC7A5\uB41C \uBA54\uBAA8\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" })
11572
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(IconSvg, { name: "robot-line", size: 32, color: "var(--chatllm-text-muted, #d1d5db)" }),
11573
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { style: { fontSize: "14px", marginTop: "12px" }, children: "\uC800\uC7A5\uB41C \uBA54\uBAA8\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" })
11420
11574
  ]
11421
11575
  }
11422
- ) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: filteredItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
11576
+ ) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: filteredItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
11423
11577
  "div",
11424
11578
  {
11425
11579
  style: {
@@ -11432,10 +11586,10 @@ var MemoryPanel = ({
11432
11586
  },
11433
11587
  onClick: () => setExpandedId(expandedId === item.id ? null : item.id),
11434
11588
  children: [
11435
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" }, children: [
11436
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: { flex: 1, minWidth: 0 }, children: [
11437
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "4px" }, children: [
11438
- item.category && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11589
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" }, children: [
11590
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { style: { flex: 1, minWidth: 0 }, children: [
11591
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "4px" }, children: [
11592
+ item.category && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
11439
11593
  "span",
11440
11594
  {
11441
11595
  style: {
@@ -11449,9 +11603,9 @@ var MemoryPanel = ({
11449
11603
  children: categoryLabels[item.category]
11450
11604
  }
11451
11605
  ),
11452
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { style: { fontSize: "11px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: formatDate(item.timestamp) })
11606
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { style: { fontSize: "11px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: formatDate(item.timestamp) })
11453
11607
  ] }),
11454
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11608
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
11455
11609
  "div",
11456
11610
  {
11457
11611
  style: {
@@ -11463,8 +11617,8 @@ var MemoryPanel = ({
11463
11617
  }
11464
11618
  )
11465
11619
  ] }),
11466
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
11467
- onDelete && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11620
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
11621
+ onDelete && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
11468
11622
  "button",
11469
11623
  {
11470
11624
  onClick: (e) => {
@@ -11479,10 +11633,10 @@ var MemoryPanel = ({
11479
11633
  cursor: "pointer",
11480
11634
  opacity: 0.5
11481
11635
  },
11482
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(IconSvg, { name: "delete-bin-line", size: 14, color: "var(--chatllm-text-muted, #9ca3af)" })
11636
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(IconSvg, { name: "delete-bin-line", size: 14, color: "var(--chatllm-text-muted, #9ca3af)" })
11483
11637
  }
11484
11638
  ),
11485
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11639
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
11486
11640
  IconSvg,
11487
11641
  {
11488
11642
  name: expandedId === item.id ? "arrow-up-s-line" : "arrow-down-s-line",
@@ -11492,7 +11646,7 @@ var MemoryPanel = ({
11492
11646
  )
11493
11647
  ] })
11494
11648
  ] }),
11495
- expandedId === item.id && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11649
+ expandedId === item.id && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
11496
11650
  "div",
11497
11651
  {
11498
11652
  style: {
@@ -11500,7 +11654,7 @@ var MemoryPanel = ({
11500
11654
  paddingTop: "12px",
11501
11655
  borderTop: "1px solid var(--chatllm-border-light, #f3f4f6)"
11502
11656
  },
11503
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11657
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
11504
11658
  "p",
11505
11659
  {
11506
11660
  style: {