@zero-library/chat-agent 2.3.10 → 2.3.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -403,6 +403,8 @@ interface LabelItemUpdate extends LabelItemPrompt {
403
403
  * 快速提问列表查询参数接口
404
404
  */
405
405
  interface LabelItemListQuery {
406
+ /** 智能体ID */
407
+ agentId: AgentInfo['id'];
406
408
  /** 分类ID */
407
409
  labelId?: string;
408
410
  /** 搜索关键字 */
@@ -414,24 +416,43 @@ interface LabelItemListQuery {
414
416
  interface LabelItem extends LabelItemUpdate {
415
417
  /** 问题ID */
416
418
  id: string;
417
- agentId: string;
419
+ /** 智能体ID */
420
+ agentId: AgentInfo['id'];
421
+ /** 排序序号 */
418
422
  seq: number;
419
423
  /** 是否置顶 */
420
424
  isTop?: 1 | 0;
425
+ /** 创建时间戳 */
421
426
  createTime: number;
427
+ /** 更新时间戳 */
422
428
  updateTime: number;
429
+ /** 是否允许删除 */
423
430
  canDelete?: boolean;
424
431
  }
432
+ /**
433
+ * 快速提问分类查询参数接口
434
+ */
425
435
  interface LabelQuery extends PageReq {
436
+ /** 智能体ID */
437
+ agentId: AgentInfo['id'];
438
+ /** 业务扩展数据,非必填 JSON字符串格式 */
439
+ businessData?: string;
440
+ /** 分类名称 */
426
441
  labelName?: string;
427
442
  }
443
+ /**
444
+ * 快速提问分类接口
445
+ */
428
446
  interface LabelType {
429
447
  /** 分类ID */
430
448
  id: string;
431
449
  /** 分类名称 */
432
450
  labelName: string;
451
+ /** 创建时间戳 */
433
452
  createTime: number;
453
+ /** 更新时间戳 */
434
454
  updateTime: number;
455
+ /** 是否允许删除 */
435
456
  canDelete?: boolean;
436
457
  }
437
458
  /**
@@ -467,8 +488,11 @@ interface FavoriteConversationsQuery extends PageReq {
467
488
  * 收藏列表返回数据结构
468
489
  */
469
490
  interface FavoriteConversationType {
491
+ /** 收藏ID */
470
492
  id: string;
493
+ /** 收藏标题 */
471
494
  title: string;
495
+ /** 收藏时间 */
472
496
  favoriteTime: string;
473
497
  }
474
498
  /**
@@ -498,8 +522,8 @@ declare const createChatService: (request: ReturnType<typeof createRequest>) =>
498
522
  fileUpload: (formData: FormData) => Promise<R<InputFile>>;
499
523
  labelItemUpdate: (agentId: AgentInfo["id"], params: LabelItemUpdate) => Promise<R<LabelItem["id"]>>;
500
524
  labelItemDelete: (id: LabelItem["id"]) => Promise<R<null>>;
501
- labelsQuery: (agentId: AgentInfo["id"], params?: LabelQuery) => Promise<R<PageRes<LabelType>>>;
502
- labelItemsQuery: (agentId: string, params: LabelItemListQuery) => Promise<R<LabelItem[]>>;
525
+ labelsQuery: (params?: LabelQuery) => Promise<R<PageRes<LabelType>>>;
526
+ labelItemsQuery: (params: LabelItemListQuery) => Promise<R<LabelItem[]>>;
503
527
  labelItemTop: (params: LabelItemTop) => Promise<R<null>>;
504
528
  labelItemPromptAssistant: (prompt: string) => Promise<R<LabelItemPrompt>>;
505
529
  recommendQuestionsQuery: (agentId: AgentInfo["id"], conversationId: ConversationType["id"]) => Promise<R<string[]>>;
@@ -1695,7 +1719,7 @@ interface ChatHandle {
1695
1719
  */
1696
1720
  setServices: (services?: ChatServices) => void;
1697
1721
  /**
1698
- * 输入框聚焦
1722
+ * 输入框聚焦(如果前一步是设置message,最好加个延时)
1699
1723
  * 使聊天输入框获得焦点
1700
1724
  *
1701
1725
  * @example
package/dist/index.d.ts CHANGED
@@ -403,6 +403,8 @@ interface LabelItemUpdate extends LabelItemPrompt {
403
403
  * 快速提问列表查询参数接口
404
404
  */
405
405
  interface LabelItemListQuery {
406
+ /** 智能体ID */
407
+ agentId: AgentInfo['id'];
406
408
  /** 分类ID */
407
409
  labelId?: string;
408
410
  /** 搜索关键字 */
@@ -414,24 +416,43 @@ interface LabelItemListQuery {
414
416
  interface LabelItem extends LabelItemUpdate {
415
417
  /** 问题ID */
416
418
  id: string;
417
- agentId: string;
419
+ /** 智能体ID */
420
+ agentId: AgentInfo['id'];
421
+ /** 排序序号 */
418
422
  seq: number;
419
423
  /** 是否置顶 */
420
424
  isTop?: 1 | 0;
425
+ /** 创建时间戳 */
421
426
  createTime: number;
427
+ /** 更新时间戳 */
422
428
  updateTime: number;
429
+ /** 是否允许删除 */
423
430
  canDelete?: boolean;
424
431
  }
432
+ /**
433
+ * 快速提问分类查询参数接口
434
+ */
425
435
  interface LabelQuery extends PageReq {
436
+ /** 智能体ID */
437
+ agentId: AgentInfo['id'];
438
+ /** 业务扩展数据,非必填 JSON字符串格式 */
439
+ businessData?: string;
440
+ /** 分类名称 */
426
441
  labelName?: string;
427
442
  }
443
+ /**
444
+ * 快速提问分类接口
445
+ */
428
446
  interface LabelType {
429
447
  /** 分类ID */
430
448
  id: string;
431
449
  /** 分类名称 */
432
450
  labelName: string;
451
+ /** 创建时间戳 */
433
452
  createTime: number;
453
+ /** 更新时间戳 */
434
454
  updateTime: number;
455
+ /** 是否允许删除 */
435
456
  canDelete?: boolean;
436
457
  }
437
458
  /**
@@ -467,8 +488,11 @@ interface FavoriteConversationsQuery extends PageReq {
467
488
  * 收藏列表返回数据结构
468
489
  */
469
490
  interface FavoriteConversationType {
491
+ /** 收藏ID */
470
492
  id: string;
493
+ /** 收藏标题 */
471
494
  title: string;
495
+ /** 收藏时间 */
472
496
  favoriteTime: string;
473
497
  }
474
498
  /**
@@ -498,8 +522,8 @@ declare const createChatService: (request: ReturnType<typeof createRequest>) =>
498
522
  fileUpload: (formData: FormData) => Promise<R<InputFile>>;
499
523
  labelItemUpdate: (agentId: AgentInfo["id"], params: LabelItemUpdate) => Promise<R<LabelItem["id"]>>;
500
524
  labelItemDelete: (id: LabelItem["id"]) => Promise<R<null>>;
501
- labelsQuery: (agentId: AgentInfo["id"], params?: LabelQuery) => Promise<R<PageRes<LabelType>>>;
502
- labelItemsQuery: (agentId: string, params: LabelItemListQuery) => Promise<R<LabelItem[]>>;
525
+ labelsQuery: (params?: LabelQuery) => Promise<R<PageRes<LabelType>>>;
526
+ labelItemsQuery: (params: LabelItemListQuery) => Promise<R<LabelItem[]>>;
503
527
  labelItemTop: (params: LabelItemTop) => Promise<R<null>>;
504
528
  labelItemPromptAssistant: (prompt: string) => Promise<R<LabelItemPrompt>>;
505
529
  recommendQuestionsQuery: (agentId: AgentInfo["id"], conversationId: ConversationType["id"]) => Promise<R<string[]>>;
@@ -1695,7 +1719,7 @@ interface ChatHandle {
1695
1719
  */
1696
1720
  setServices: (services?: ChatServices) => void;
1697
1721
  /**
1698
- * 输入框聚焦
1722
+ * 输入框聚焦(如果前一步是设置message,最好加个延时)
1699
1723
  * 使聊天输入框获得焦点
1700
1724
  *
1701
1725
  * @example
package/dist/index.esm.js CHANGED
@@ -179,7 +179,7 @@ var init_MdEdit = __esm({
179
179
  setValue(data.content);
180
180
  }, [data.content]);
181
181
  return /* @__PURE__ */ jsxs("div", { className: styles_module_default.mdEdit, children: [
182
- /* @__PURE__ */ jsx(MarkdownEditor, { disabled: loading, value, onChange: setValue, showToolbar: false }),
182
+ /* @__PURE__ */ jsx(MarkdownEditor, { disabled: loading, value, onChange: setValue, fixedToolbar: false, floatToolbar: false }),
183
183
  !loading && /* @__PURE__ */ jsx(Flex, { justify: "end", className: "m-t-16", children: /* @__PURE__ */ jsx(Button, { color: "primary", variant: "outlined", onClick: onOk, children: btnText }) })
184
184
  ] });
185
185
  };
@@ -419,11 +419,11 @@ var createChatService = (request) => {
419
419
  const labelItemDelete = (id) => {
420
420
  return request.delete("/lolr/label/item", { id });
421
421
  };
422
- const labelsQuery = (agentId, params) => {
423
- return request.get("/lolr/label", { agentId, ...params });
422
+ const labelsQuery = (params) => {
423
+ return request.get("/lolr/label", params);
424
424
  };
425
- const labelItemsQuery = (agentId, params) => {
426
- return request.get("/lolr/label/item", { ...params, agentId });
425
+ const labelItemsQuery = (params) => {
426
+ return request.get("/lolr/label/item", params);
427
427
  };
428
428
  const labelItemTop = (params) => {
429
429
  return request.put("/lolr/label/item/top", params);
@@ -2117,6 +2117,13 @@ var ChatSender_default = forwardRef(
2117
2117
  onSend();
2118
2118
  }
2119
2119
  };
2120
+ const isFocusedRef = useRef(false);
2121
+ useEffect(() => {
2122
+ if (!content) return;
2123
+ if (!isFocusedRef.current) {
2124
+ senderRef.current?.focus({ cursor: "end" });
2125
+ }
2126
+ }, [content]);
2120
2127
  useImperativeHandle(
2121
2128
  ref,
2122
2129
  () => ({
@@ -2135,7 +2142,13 @@ var ChatSender_default = forwardRef(
2135
2142
  header: senderHeader,
2136
2143
  onSubmit,
2137
2144
  onChange: setInputValue,
2138
- onFocus,
2145
+ onFocus: () => {
2146
+ isFocusedRef.current = true;
2147
+ onFocus?.();
2148
+ },
2149
+ onBlur: () => {
2150
+ isFocusedRef.current = false;
2151
+ },
2139
2152
  autoSize: { minRows: 2, maxRows: 6 },
2140
2153
  onCancel,
2141
2154
  footer: ({ components }) => {
@@ -2267,7 +2280,6 @@ var styles_module_default4 = {
2267
2280
  quickAskItemTitle: "styles_module_quickAskItemTitle",
2268
2281
  quickAskItemActions: "styles_module_quickAskItemActions"
2269
2282
  };
2270
- var ALL = "all";
2271
2283
  var QuickAskPanelDrawer_default = ({ open, onClose }) => {
2272
2284
  const { message: message2 } = App.useApp();
2273
2285
  const chatStore = useChatStore();
@@ -2275,39 +2287,43 @@ var QuickAskPanelDrawer_default = ({ open, onClose }) => {
2275
2287
  const receiverState = useSnapshot(chatStore.receiver);
2276
2288
  const [searchText, setSearchText, getSearchText] = useRefState("");
2277
2289
  const [searchExpanded, setSearchExpanded] = useState(false);
2278
- const [activeTab, setActiveTab, getActiveTab] = useRefState({});
2290
+ const [activeTab, setActiveTab, getActiveTab] = useRefState("");
2279
2291
  const [categories, setCategories] = useState([]);
2280
2292
  const [items, setItems] = useState([]);
2281
2293
  const [editModalOpen, setEditModalOpen] = useState(false);
2282
2294
  const [editingItem, setEditingItem] = useState();
2283
2295
  const fetchCategories = async () => {
2284
2296
  try {
2285
- const res = await configState.services.request?.labelsQuery?.(receiverState.active?.id, { pageNo: 1, pageSize: 1e3 });
2297
+ const res = await configState.services.request?.labelsQuery?.({
2298
+ agentId: receiverState.active?.id,
2299
+ businessData: configState.params.businessData,
2300
+ pageNo: 1,
2301
+ pageSize: 1e3
2302
+ });
2286
2303
  if (res?.data) {
2287
2304
  setCategories(res.data?.items);
2305
+ if (!activeTab && res.data?.items?.length) {
2306
+ setActiveTab(res.data.items[0].id);
2307
+ }
2288
2308
  }
2289
2309
  } catch (err) {
2290
2310
  }
2291
2311
  };
2292
2312
  const tabsItems = useMemo(
2293
- () => [
2294
- {
2295
- key: ALL,
2296
- label: "\u5168\u90E8"
2297
- },
2298
- ...categories.map((item) => ({
2299
- key: item.id,
2300
- label: item.labelName
2301
- }))
2302
- ],
2313
+ () => categories.map((item) => ({
2314
+ key: item.id,
2315
+ label: item.labelName
2316
+ })),
2303
2317
  [categories]
2304
2318
  );
2305
2319
  const [loading, setLoading] = useState(false);
2306
2320
  const fetchItems = useDebounce(async () => {
2321
+ if (!getActiveTab()) return;
2307
2322
  try {
2308
2323
  setLoading(true);
2309
- const res = await configState.services.request?.labelItemsQuery?.(receiverState.active?.id, {
2310
- labelId: getActiveTab().id,
2324
+ const res = await configState.services.request?.labelItemsQuery?.({
2325
+ agentId: receiverState.active?.id,
2326
+ labelId: getActiveTab(),
2311
2327
  keyword: getSearchText()
2312
2328
  });
2313
2329
  if (res?.data) {
@@ -2317,10 +2333,12 @@ var QuickAskPanelDrawer_default = ({ open, onClose }) => {
2317
2333
  setLoading(false);
2318
2334
  }
2319
2335
  });
2336
+ useEffect(() => {
2337
+ fetchItems();
2338
+ }, [activeTab]);
2320
2339
  useEffect(() => {
2321
2340
  if (receiverState.active?.id) {
2322
2341
  fetchCategories();
2323
- fetchItems();
2324
2342
  }
2325
2343
  }, [receiverState.active?.id]);
2326
2344
  const [updateLoading, setUpdateLoading] = useState(false);
@@ -2330,9 +2348,7 @@ var QuickAskPanelDrawer_default = ({ open, onClose }) => {
2330
2348
  await configState.services.request?.labelItemUpdate?.(receiverState.active?.id, values);
2331
2349
  setEditModalOpen(false);
2332
2350
  message2.success("\u4FDD\u5B58\u6210\u529F");
2333
- if (!getActiveTab().id || values.labelName === getActiveTab().labelName) {
2334
- fetchItems();
2335
- }
2351
+ fetchItems();
2336
2352
  fetchCategories();
2337
2353
  } finally {
2338
2354
  setUpdateLoading(false);
@@ -2363,9 +2379,10 @@ var QuickAskPanelDrawer_default = ({ open, onClose }) => {
2363
2379
  if (canProceed === false) {
2364
2380
  return;
2365
2381
  }
2366
- chatStore.setContent(item.content);
2382
+ chatStore.setContent(`#${item.title}# `);
2367
2383
  chatStore.setContentParams({
2368
- use_template: 1
2384
+ capacityId: item.id,
2385
+ capacityTitle: item.title
2369
2386
  });
2370
2387
  };
2371
2388
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -2383,11 +2400,10 @@ var QuickAskPanelDrawer_default = ({ open, onClose }) => {
2383
2400
  children: /* @__PURE__ */ jsxs(Flex, { vertical: true, className: styles_module_default4.quickAskPanel, children: [
2384
2401
  /* @__PURE__ */ jsxs(Flex, { gap: 12, className: "p-16", vertical: true, children: [
2385
2402
  /* @__PURE__ */ jsxs(Flex, { gap: 8, children: [
2386
- !searchExpanded && /* @__PURE__ */ jsx(
2403
+ !searchExpanded ? /* @__PURE__ */ jsx(
2387
2404
  Button,
2388
2405
  {
2389
2406
  type: "dashed",
2390
- block: true,
2391
2407
  icon: /* @__PURE__ */ jsx(PlusOutlined, {}),
2392
2408
  className: "flex-1",
2393
2409
  onClick: () => {
@@ -2396,6 +2412,20 @@ var QuickAskPanelDrawer_default = ({ open, onClose }) => {
2396
2412
  },
2397
2413
  children: "\u65B0\u589E\u80FD\u529B\u6A21\u677F"
2398
2414
  }
2415
+ ) : /* @__PURE__ */ jsx(
2416
+ Button,
2417
+ {
2418
+ icon: /* @__PURE__ */ jsx(PlusOutlined, {}),
2419
+ onClick: () => {
2420
+ if (getSearchText()) {
2421
+ setSearchText("");
2422
+ fetchItems();
2423
+ }
2424
+ setSearchExpanded(false);
2425
+ setEditingItem(null);
2426
+ setEditModalOpen(true);
2427
+ }
2428
+ }
2399
2429
  ),
2400
2430
  searchExpanded ? /* @__PURE__ */ jsx(
2401
2431
  Input,
@@ -2409,25 +2439,11 @@ var QuickAskPanelDrawer_default = ({ open, onClose }) => {
2409
2439
  fetchItems();
2410
2440
  },
2411
2441
  className: "flex-1",
2412
- allowClear: true,
2413
- onBlur: () => setSearchExpanded(false)
2442
+ allowClear: true
2414
2443
  }
2415
2444
  ) : /* @__PURE__ */ jsx(Button, { icon: /* @__PURE__ */ jsx(SearchOutlined, {}), onClick: () => setSearchExpanded(true) })
2416
2445
  ] }),
2417
- /* @__PURE__ */ jsx(
2418
- Tabs,
2419
- {
2420
- className: styles_module_default4.tagContainer,
2421
- activeKey: activeTab.id ? activeTab.id : ALL,
2422
- onChange: (key) => {
2423
- setActiveTab(key === ALL ? {} : categories.find((c) => c.id === key));
2424
- fetchItems();
2425
- },
2426
- tabPosition: "top",
2427
- items: tabsItems,
2428
- size: "small"
2429
- }
2430
- )
2446
+ /* @__PURE__ */ jsx(Tabs, { className: styles_module_default4.tagContainer, activeKey: activeTab, onChange: setActiveTab, tabPosition: "top", items: tabsItems, size: "small" })
2431
2447
  ] }),
2432
2448
  /* @__PURE__ */ jsx(Flex, { vertical: true, className: "flex-1", children: /* @__PURE__ */ jsx(Spin, { spinning: loading, wrapperClassName: "full-spin", tip: "\u52A0\u8F7D\u4E2D...", children: /* @__PURE__ */ jsx(Flex, { vertical: true, gap: 8, className: "height-full scroll-fade-in p-16 p-t-0", children: items.length ? items.map((item) => /* @__PURE__ */ jsxs(Flex, { gap: 4, align: "start", className: styles_module_default4.quickAskItem, onClick: () => onSelectItem(item), children: [
2433
2449
  /* @__PURE__ */ jsx(FileTextOutlined, { className: styles_module_default4.quickAskItemIcon }),