@blueking/chat-helper 0.0.1-beta.3 → 0.0.1-beta.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +962 -63
  2. package/dist/agent/type.d.ts +27 -2
  3. package/dist/agent/type.ts.js +1 -1
  4. package/dist/agent/use-agent.d.ts +516 -434
  5. package/dist/agent/use-agent.ts.js +224 -25
  6. package/dist/event/ag-ui.d.ts +39 -7
  7. package/dist/event/ag-ui.ts.js +224 -150
  8. package/dist/event/type.d.ts +99 -107
  9. package/dist/event/type.ts.js +34 -11
  10. package/dist/http/fetch/fetch.d.ts +40 -36
  11. package/dist/http/fetch/fetch.ts.js +59 -32
  12. package/dist/http/fetch/index.d.ts +1 -0
  13. package/dist/http/fetch/index.ts.js +17 -1
  14. package/dist/http/index.d.ts +25 -16
  15. package/dist/http/index.ts.js +60 -3
  16. package/dist/http/module/agent.d.ts +2 -2
  17. package/dist/http/module/index.d.ts +23 -16
  18. package/dist/http/module/index.ts.js +2 -1
  19. package/dist/http/module/message.d.ts +23 -7
  20. package/dist/http/module/message.ts.js +52 -7
  21. package/dist/http/module/session.d.ts +14 -11
  22. package/dist/http/module/session.ts.js +66 -4
  23. package/dist/http/transform/agent.ts.js +11 -8
  24. package/dist/http/transform/message.d.ts +6 -6
  25. package/dist/http/transform/message.ts.js +568 -118
  26. package/dist/http/transform/session.ts.js +9 -1
  27. package/dist/index.d.ts +2996 -2616
  28. package/dist/index.ts.js +26 -5
  29. package/dist/mediator/index.d.ts +2 -0
  30. package/dist/mediator/index.ts.js +26 -0
  31. package/dist/mediator/type.d.ts +50 -0
  32. package/dist/mediator/type.ts.js +28 -0
  33. package/dist/mediator/use-mediator.d.ts +7 -0
  34. package/dist/mediator/use-mediator.ts.js +47 -0
  35. package/dist/message/type.d.ts +280 -140
  36. package/dist/message/type.ts.js +16 -15
  37. package/dist/message/use-message.d.ts +837 -750
  38. package/dist/message/use-message.ts.js +226 -28
  39. package/dist/session/type.d.ts +10 -0
  40. package/dist/session/use-session.d.ts +1921 -1721
  41. package/dist/session/use-session.ts.js +198 -33
  42. package/dist/type.d.ts +4 -4
  43. package/package.json +2 -1
@@ -192,8 +192,9 @@ export class FetchClient {
192
192
  prepareRequest(config, isStream = false) {
193
193
  // 合并配置
194
194
  const mergedConfig = mergeConfig(this.defaults, config);
195
- // 应用请求拦截器
195
+ // 总的请求配置
196
196
  let requestConfig = mergedConfig;
197
+ // 应用请求拦截器
197
198
  this.interceptors.request.forEach((interceptor)=>{
198
199
  if (interceptor.fulfilled) {
199
200
  try {
@@ -208,7 +209,7 @@ export class FetchClient {
208
209
  });
209
210
  // 构建完整 URL
210
211
  let url = requestConfig.url || '';
211
- if (requestConfig.baseURL) {
212
+ if (requestConfig.baseURL && !url.startsWith('http')) {
212
213
  url = requestConfig.baseURL + url;
213
214
  }
214
215
  url = buildURL(url, requestConfig.params);
@@ -219,6 +220,7 @@ export class FetchClient {
219
220
  if (isStream && !headers.has('Accept')) {
220
221
  headers.set('Accept', 'text/event-stream');
221
222
  }
223
+ // 处理请求体
222
224
  if (body !== undefined && body !== null) {
223
225
  var _headers_get;
224
226
  if (requestConfig.transformRequest) {
@@ -229,11 +231,19 @@ export class FetchClient {
229
231
  }
230
232
  // 创建 AbortController
231
233
  const controller = requestConfig.controller ? requestConfig.controller : new AbortController();
232
- return {
233
- url,
234
+ // 请求配置
235
+ const fetchConfig = {
236
+ method: requestConfig.method,
237
+ credentials: requestConfig.credentials,
238
+ mode: requestConfig.mode,
234
239
  headers,
235
240
  body,
241
+ signal: controller.signal
242
+ };
243
+ return {
244
+ url,
236
245
  requestConfig,
246
+ fetchConfig,
237
247
  controller
238
248
  };
239
249
  }
@@ -248,17 +258,12 @@ export class FetchClient {
248
258
  var _this = this;
249
259
  return _async_to_generator(function*() {
250
260
  // 准备请求
251
- const { url, headers, body, requestConfig, controller } = _this.prepareRequest(config);
261
+ const { url, fetchConfig, requestConfig, controller } = _this.prepareRequest(config);
252
262
  // 创建超时控制
253
263
  const timeoutId = requestConfig.timeout && requestConfig.timeout > 0 ? setTimeout(()=>controller.abort(), requestConfig.timeout) : undefined;
254
264
  try {
255
265
  // 发送请求
256
- const request = new Request(url, _object_spread_props(_object_spread({}, requestConfig), {
257
- headers,
258
- body,
259
- signal: controller.signal
260
- }));
261
- const fetchResponse = yield fetch(request);
266
+ const fetchResponse = yield fetch(url, fetchConfig);
262
267
  // 清除超时定时器
263
268
  if (timeoutId) {
264
269
  clearTimeout(timeoutId);
@@ -299,13 +304,14 @@ export class FetchClient {
299
304
  status: fetchResponse.status,
300
305
  statusText: fetchResponse.statusText,
301
306
  headers: fetchResponse.headers,
302
- config: requestConfig,
303
- request
307
+ config: requestConfig
304
308
  };
305
309
  // 验证状态码
306
310
  const validateStatus = requestConfig.validateStatus || _this.defaults.validateStatus;
307
311
  if (!validateStatus(fetchResponse.status)) {
308
- throw createError(`Request failed with status code ${fetchResponse.status}`, requestConfig, `ERR_BAD_RESPONSE`, request, response);
312
+ var _response_data_error, _response_data;
313
+ const message = ((_response_data = response.data) === null || _response_data === void 0 ? void 0 : (_response_data_error = _response_data.error) === null || _response_data_error === void 0 ? void 0 : _response_data_error.message) || `Request failed with status code ${fetchResponse.status}`;
314
+ throw createError(message, requestConfig, `ERR_BAD_RESPONSE`, response);
309
315
  }
310
316
  // 应用响应拦截器
311
317
  let finalResponse = response;
@@ -331,7 +337,7 @@ export class FetchClient {
331
337
  0,
332
338
  'success'
333
339
  ].includes(apiResponse.code)) {
334
- throw createError(apiResponse.message, requestConfig, apiResponse.code, request, finalResponse);
340
+ throw createError(apiResponse.message, requestConfig, apiResponse.code, finalResponse);
335
341
  }
336
342
  return apiResponse.data;
337
343
  } catch (error) {
@@ -341,11 +347,11 @@ export class FetchClient {
341
347
  }
342
348
  // 处理中断错误
343
349
  if (error instanceof Error && error.name === 'AbortError') {
344
- const requestError = createError('Request timeout', requestConfig, 'ECONNABORTED', undefined, undefined);
350
+ const requestError = createError('Request timeout', requestConfig, 'ECONNABORTED', undefined);
345
351
  throw _this.applyResponseErrorInterceptors(requestError);
346
352
  }
347
353
  // 处理其他错误
348
- const requestError = error.isAxiosError === true ? error : createError(error.message, requestConfig, error.code, undefined, undefined);
354
+ const requestError = error.isAxiosError === true ? error : createError(error.message, requestConfig, error.code, undefined);
349
355
  throw _this.applyResponseErrorInterceptors(requestError);
350
356
  }
351
357
  })();
@@ -361,22 +367,27 @@ export class FetchClient {
361
367
  var _this = this;
362
368
  return _async_to_generator(function*() {
363
369
  // 准备请求(标记为流式请求)
364
- const { url, headers, body, requestConfig, controller } = _this.prepareRequest(config, true);
365
- // 发送请求
366
- const request = new Request(url, _object_spread_props(_object_spread({}, requestConfig), {
367
- headers,
368
- body,
369
- signal: controller.signal
370
- }));
370
+ const { url, fetchConfig, requestConfig } = _this.prepareRequest(config, true);
371
371
  try {
372
372
  var // 触发 onStart 回调
373
373
  _config_onStart, _fetchResponse_body;
374
- const fetchResponse = yield fetch(request);
374
+ // 发送请求
375
+ const fetchResponse = yield fetch(url, fetchConfig);
375
376
  // 验证状态码
376
377
  const validateStatus = requestConfig.validateStatus || _this.defaults.validateStatus;
377
378
  if (!validateStatus(fetchResponse.status)) {
378
379
  var _config_onError;
379
- const error = createError(`Request failed with status code ${fetchResponse.status}`, requestConfig, `ERR_BAD_RESPONSE`, request, undefined);
380
+ let message = `Request failed with status code ${fetchResponse.status}`;
381
+ try {
382
+ var _errorData_error;
383
+ const errorData = yield fetchResponse.json();
384
+ if (errorData === null || errorData === void 0 ? void 0 : (_errorData_error = errorData.error) === null || _errorData_error === void 0 ? void 0 : _errorData_error.message) {
385
+ message = errorData.error.message;
386
+ }
387
+ } catch (_error) {
388
+ message = `Request failed with status code ${fetchResponse.status}`;
389
+ }
390
+ const error = createError(message, requestConfig, `ERR_BAD_RESPONSE`, undefined);
380
391
  (_config_onError = config.onError) === null || _config_onError === void 0 ? void 0 : _config_onError.call(config, error);
381
392
  return;
382
393
  }
@@ -385,12 +396,21 @@ export class FetchClient {
385
396
  const reader = (_fetchResponse_body = fetchResponse.body) === null || _fetchResponse_body === void 0 ? void 0 : _fetchResponse_body.pipeThrough(new window.TextDecoderStream()).getReader();
386
397
  if (!reader) {
387
398
  var _config_onError1;
388
- const error = new Error('Response body is not readable');
399
+ const error = new Error('IResponse body is not readable');
389
400
  (_config_onError1 = config.onError) === null || _config_onError1 === void 0 ? void 0 : _config_onError1.call(config, error);
390
401
  return;
391
402
  }
392
403
  // 临时存储数据
393
404
  let temp = '';
405
+ // 判断是否为 JSON 字符串
406
+ const isJson = (str)=>{
407
+ try {
408
+ JSON.parse(str);
409
+ return true;
410
+ } catch (_error) {
411
+ return false;
412
+ }
413
+ };
394
414
  // eslint-disable-next-line no-constant-condition
395
415
  while(true){
396
416
  const { value, done } = yield reader.read();
@@ -403,10 +423,11 @@ export class FetchClient {
403
423
  const values = (temp + value.toString()).split('\n');
404
424
  values.forEach((value)=>{
405
425
  const item = value.replace('data:', '').trim();
406
- if (item.endsWith('}')) {
426
+ if (isJson(item)) {
407
427
  var _config_onMessage;
408
428
  const json = JSON.parse(item);
409
429
  (_config_onMessage = config.onMessage) === null || _config_onMessage === void 0 ? void 0 : _config_onMessage.call(config, json);
430
+ temp = '';
410
431
  } else if (item) {
411
432
  temp = item;
412
433
  }
@@ -429,7 +450,7 @@ export class FetchClient {
429
450
  constructor(config = {}){
430
451
  _define_property(this, "defaults", void 0);
431
452
  _define_property(this, "interceptors", void 0);
432
- this.defaults = _object_spread({
453
+ this.defaults = mergeConfig({
433
454
  method: 'GET',
434
455
  headers: {
435
456
  'Content-Type': 'application/json'
@@ -468,11 +489,10 @@ function buildURL(url, params) {
468
489
  return url;
469
490
  }
470
491
  // 创建错误对象
471
- function createError(message, config, code, request, response) {
492
+ function createError(message, config, code, response) {
472
493
  const error = new Error(message);
473
494
  error.config = config;
474
495
  error.code = String(code);
475
- error.request = request;
476
496
  error.response = response;
477
497
  error.isAxiosError = true;
478
498
  return error;
@@ -481,12 +501,19 @@ function createError(message, config, code, request, response) {
481
501
  function getValue(value) {
482
502
  return typeof value === 'function' ? value() : value;
483
503
  }
504
+ // 判断是否是普通对象(排除类实例如 AbortController、Headers 等)
505
+ function isPlainObject(value) {
506
+ if (!value || typeof value !== 'object') return false;
507
+ const proto = Object.getPrototypeOf(value);
508
+ return proto === Object.prototype || proto === null;
509
+ }
484
510
  // 合并配置
485
511
  function mergeConfig(config1, config2) {
486
512
  const output = _object_spread({}, config1);
487
513
  for(const key in config2){
488
514
  const value2 = config2[key];
489
- if (value2 && typeof value2 === 'object' && !Array.isArray(value2)) {
515
+ // 只对普通对象进行深度合并,类实例(如 AbortController)直接赋值
516
+ if (isPlainObject(value2)) {
490
517
  const value1 = config1[key];
491
518
  output[key] = mergeConfig(value1 || {}, value2);
492
519
  } else {
@@ -3,4 +3,5 @@ import type { IUseChatHelperOptions } from '../../type';
3
3
  export type * from './fetch';
4
4
  export declare const useFetch: (options: IUseChatHelperOptions) => {
5
5
  fetchClient: FetchClient;
6
+ reset: (newOptions: IUseChatHelperOptions) => void;
6
7
  };
@@ -35,7 +35,23 @@ export const useFetch = (options)=>{
35
35
  if ((_options_interceptors1 = options.interceptors) === null || _options_interceptors1 === void 0 ? void 0 : _options_interceptors1.response) {
36
36
  fetchClient.interceptors.response.use(options.interceptors.response);
37
37
  }
38
+ // 重置 fetchClient 配置
39
+ const reset = (newOptions)=>{
40
+ var _newOptions_interceptors, _newOptions_interceptors1;
41
+ // 更新 baseURL
42
+ fetchClient.defaults.baseURL = newOptions.requestData.urlPrefix;
43
+ // 清空并重新注册拦截器
44
+ fetchClient.interceptors.request.clear();
45
+ fetchClient.interceptors.response.clear();
46
+ if ((_newOptions_interceptors = newOptions.interceptors) === null || _newOptions_interceptors === void 0 ? void 0 : _newOptions_interceptors.request) {
47
+ fetchClient.interceptors.request.use(newOptions.interceptors.request);
48
+ }
49
+ if ((_newOptions_interceptors1 = newOptions.interceptors) === null || _newOptions_interceptors1 === void 0 ? void 0 : _newOptions_interceptors1.response) {
50
+ fetchClient.interceptors.response.use(newOptions.interceptors.response);
51
+ }
52
+ };
38
53
  return {
39
- fetchClient
54
+ fetchClient,
55
+ reset
40
56
  };
41
57
  };
@@ -1,4 +1,5 @@
1
1
  import type { IUseChatHelperOptions } from '../type';
2
+ export * from './fetch';
2
3
  export * from './transform';
3
4
  /**
4
5
  * 使用 HTTP 模块
@@ -6,33 +7,41 @@ export * from './transform';
6
7
  * @returns HTTP 模块
7
8
  */
8
9
  export declare const useHttp: (options: IUseChatHelperOptions) => {
10
+ reset: (newOptions: IUseChatHelperOptions) => void;
9
11
  agent: {
10
- getAgentInfo: (config?: import("./fetch").RequestConfig) => Promise<import("..").IAgentInfo>;
12
+ getAgentInfo: (config?: import("./fetch").IRequestConfig) => Promise<import("..").IAgentInfo>;
11
13
  };
12
14
  session: {
13
- clearSession: (sessionCode: string, config?: import("./fetch").RequestConfig) => Promise<unknown>;
14
- getSessions: (config?: import("./fetch").RequestConfig) => Promise<import("..").ISession<unknown, unknown>[]>;
15
- plusSession: (data: import("..").ISession, config?: import("./fetch").RequestConfig) => Promise<import("..").ISession<unknown, unknown>>;
16
- modifySession: (data: import("..").ISession, config?: import("./fetch").RequestConfig) => Promise<import("..").ISession<unknown, unknown>>;
17
- deleteSession: (sessionCode: string, config?: import("./fetch").RequestConfig) => Promise<unknown>;
18
- batchDeleteSessions: (sessionCodes: string[], config?: import("./fetch").RequestConfig) => Promise<number>;
19
- getSession: (sessionCode: string, config?: import("./fetch").RequestConfig) => Promise<import("..").ISession<unknown, unknown>>;
20
- postSessionFeedback: (data: import("..").ISessionFeedback, config?: import("./fetch").RequestConfig) => Promise<{
15
+ clearSession: (sessionCode: string, config?: import("./fetch").IRequestConfig) => Promise<unknown>;
16
+ getSessions: (config?: import("./fetch").IRequestConfig) => Promise<import("..").ISession<unknown, unknown>[]>;
17
+ plusSession: (data: import("..").ISession, config?: import("./fetch").IRequestConfig) => Promise<import("..").ISession<unknown, unknown>>;
18
+ modifySession: (data: import("..").ISession, config?: import("./fetch").IRequestConfig) => Promise<import("..").ISession<unknown, unknown>>;
19
+ deleteSession: (sessionCode: string, config?: import("./fetch").IRequestConfig) => Promise<unknown>;
20
+ batchDeleteSessions: (sessionCodes: string[], config?: import("./fetch").IRequestConfig) => Promise<number>;
21
+ getSession: (sessionCode: string, config?: import("./fetch").IRequestConfig) => Promise<import("..").ISession<unknown, unknown>>;
22
+ postSessionFeedback: (data: import("..").ISessionFeedback, config?: import("./fetch").IRequestConfig) => Promise<{
21
23
  sessionCode: string;
22
24
  sessionContentIds: number[];
23
25
  rate: number;
24
26
  comment: string;
25
27
  labels: string[];
26
28
  }>;
27
- getSessionFeedbackLabels: (rate: number, config?: import("./fetch").RequestConfig) => Promise<string[]>;
28
- renameSession: (sessionCode: string, config?: import("./fetch").RequestConfig) => Promise<import("..").ISession<unknown, unknown>>;
29
+ getSessionFeedbackReasons: (rate: number, config?: import("./fetch").IRequestConfig) => Promise<string[]>;
30
+ renameSession: (sessionCode: string, config?: import("./fetch").IRequestConfig) => Promise<import("..").ISession<unknown, unknown>>;
31
+ uploadFile: (sessionCode: string, file: File, config?: import("./fetch").IRequestConfig) => Promise<{
32
+ download_url?: string;
33
+ }>;
29
34
  };
30
35
  message: {
31
- getMessages: (sessionCode: string, config?: import("./fetch").RequestConfig) => Promise<import("..").IMessage[]>;
32
- plusMessage: (data: import("..").IMessage, config?: import("./fetch").RequestConfig) => Promise<import("..").IMessageApi>;
33
- modifyMessage: (data: import("..").IMessage, config?: import("./fetch").RequestConfig) => Promise<import("..").IMessageApi>;
34
- deleteMessage: (id: number, config?: import("./fetch").RequestConfig) => Promise<import("..").IMessageApi>;
35
- batchDeleteMessages: (ids: number[], config?: import("./fetch").RequestConfig) => Promise<number>;
36
+ getMessages: (sessionCode: string, limit?: number, config?: import("./fetch").IRequestConfig) => Promise<import("..").IMessage[]>;
37
+ plusMessage: (data: import("..").IMessage, config?: import("./fetch").IRequestConfig) => Promise<import("..").IActivityMessage | import("..").IAssistantMessage | import("..").IDeveloperMessage | import("..").IGuideMessage | import("..").IHiddenAssistantMessage | import("..").IHiddenGuideMessage | import("..").IHiddenMessage | import("..").IHiddenSystemMessage | import("..").IHiddenUserMessage | import("..").IInfoMessage | import("..").IPauseMessage | import("..").IPlaceholderMessage | import("..").IReasoningMessage | import("..").ISystemMessage | import("..").ITemplateAssistantMessage | import("..").ITemplateGuideMessage | import("..").ITemplateHiddenMessage | import("..").ITemplateSystemMessage | import("..").ITemplateUserMessage | import("..").IToolMessage | import("..").IUserMessage>;
38
+ modifyMessage: (data: import("..").IMessage, config?: import("./fetch").IRequestConfig) => Promise<import("..").IActivityMessage | import("..").IAssistantMessage | import("..").IDeveloperMessage | import("..").IGuideMessage | import("..").IHiddenAssistantMessage | import("..").IHiddenGuideMessage | import("..").IHiddenMessage | import("..").IHiddenSystemMessage | import("..").IHiddenUserMessage | import("..").IInfoMessage | import("..").IPauseMessage | import("..").IPlaceholderMessage | import("..").IReasoningMessage | import("..").ISystemMessage | import("..").ITemplateAssistantMessage | import("..").ITemplateGuideMessage | import("..").ITemplateHiddenMessage | import("..").ITemplateSystemMessage | import("..").ITemplateUserMessage | import("..").IToolMessage | import("..").IUserMessage>;
39
+ deleteMessage: (id: string, config?: import("./fetch").IRequestConfig) => Promise<import("..").IMessage>;
40
+ batchDeleteMessages: (ids: string[], config?: import("./fetch").IRequestConfig) => Promise<number>;
41
+ shareMessages: (sessionCode: string, contentIds: string[], expiredAt?: number, config?: import("./fetch").IRequestConfig) => Promise<import("./module/message").IShareMessagesResponse>;
42
+ stopChat: (sessionCode: string, config?: import("./fetch").IRequestConfig) => Promise<void>;
43
+ getFlowAgentTaskNodeInfo: (taskId: number, nodeId: string, config?: import("./fetch").IRequestConfig) => Promise<import("..").IFlowAgentTaskNodeInfo>;
36
44
  };
45
+ fetchClient: import("./fetch").FetchClient;
37
46
  };
38
47
  export type IHttpModule = ReturnType<typeof useHttp>;
@@ -22,15 +22,72 @@
22
22
  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
23
23
  * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24
24
  * IN THE SOFTWARE.
25
- */ import { useFetch } from './fetch/index.ts.js';
25
+ */ function _define_property(obj, key, value) {
26
+ if (key in obj) {
27
+ Object.defineProperty(obj, key, {
28
+ value: value,
29
+ enumerable: true,
30
+ configurable: true,
31
+ writable: true
32
+ });
33
+ } else {
34
+ obj[key] = value;
35
+ }
36
+ return obj;
37
+ }
38
+ function _object_spread(target) {
39
+ for(var i = 1; i < arguments.length; i++){
40
+ var source = arguments[i] != null ? arguments[i] : {};
41
+ var ownKeys = Object.keys(source);
42
+ if (typeof Object.getOwnPropertySymbols === "function") {
43
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
44
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
45
+ }));
46
+ }
47
+ ownKeys.forEach(function(key) {
48
+ _define_property(target, key, source[key]);
49
+ });
50
+ }
51
+ return target;
52
+ }
53
+ function ownKeys(object, enumerableOnly) {
54
+ var keys = Object.keys(object);
55
+ if (Object.getOwnPropertySymbols) {
56
+ var symbols = Object.getOwnPropertySymbols(object);
57
+ if (enumerableOnly) {
58
+ symbols = symbols.filter(function(sym) {
59
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
60
+ });
61
+ }
62
+ keys.push.apply(keys, symbols);
63
+ }
64
+ return keys;
65
+ }
66
+ function _object_spread_props(target, source) {
67
+ source = source != null ? source : {};
68
+ if (Object.getOwnPropertyDescriptors) {
69
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
70
+ } else {
71
+ ownKeys(Object(source)).forEach(function(key) {
72
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
73
+ });
74
+ }
75
+ return target;
76
+ }
77
+ import { useFetch } from './fetch/index.ts.js';
26
78
  import { useModule } from './module/index.ts.js';
79
+ export * from './fetch/index.ts.js';
27
80
  export * from './transform/index.ts.js';
28
81
  /**
29
82
  * 使用 HTTP 模块
30
83
  * @param options - 选项
31
84
  * @returns HTTP 模块
32
85
  */ export const useHttp = (options)=>{
33
- const { fetchClient } = useFetch(options);
86
+ // 创建 fetchClient
87
+ const { fetchClient, reset } = useFetch(options);
88
+ // 创建 http 模块
34
89
  const http = useModule(fetchClient);
35
- return http;
90
+ return _object_spread_props(_object_spread({}, http), {
91
+ reset
92
+ });
36
93
  };
@@ -1,9 +1,9 @@
1
- import type { FetchClient, RequestConfig } from '../fetch';
1
+ import type { FetchClient, IRequestConfig } from '../fetch';
2
2
  /**
3
3
  * agent 相关 http 接口
4
4
  * @param fetchClient - 请求客户端
5
5
  * @returns agent 相关 http 接口
6
6
  */
7
7
  export declare const useAgent: (fetchClient: FetchClient) => {
8
- getAgentInfo: (config?: RequestConfig) => Promise<import("../../agent/type").IAgentInfo>;
8
+ getAgentInfo: (config?: IRequestConfig) => Promise<import("../../agent/type").IAgentInfo>;
9
9
  };
@@ -6,31 +6,38 @@ import type { FetchClient } from '../fetch';
6
6
  */
7
7
  export declare const useModule: (fetchClient: FetchClient) => {
8
8
  agent: {
9
- getAgentInfo: (config?: import("../fetch").RequestConfig) => Promise<import("../..").IAgentInfo>;
9
+ getAgentInfo: (config?: import("../fetch").IRequestConfig) => Promise<import("../..").IAgentInfo>;
10
10
  };
11
11
  session: {
12
- clearSession: (sessionCode: string, config?: import("../fetch").RequestConfig) => Promise<unknown>;
13
- getSessions: (config?: import("../fetch").RequestConfig) => Promise<import("../..").ISession<unknown, unknown>[]>;
14
- plusSession: (data: import("../..").ISession, config?: import("../fetch").RequestConfig) => Promise<import("../..").ISession<unknown, unknown>>;
15
- modifySession: (data: import("../..").ISession, config?: import("../fetch").RequestConfig) => Promise<import("../..").ISession<unknown, unknown>>;
16
- deleteSession: (sessionCode: string, config?: import("../fetch").RequestConfig) => Promise<unknown>;
17
- batchDeleteSessions: (sessionCodes: string[], config?: import("../fetch").RequestConfig) => Promise<number>;
18
- getSession: (sessionCode: string, config?: import("../fetch").RequestConfig) => Promise<import("../..").ISession<unknown, unknown>>;
19
- postSessionFeedback: (data: import("../..").ISessionFeedback, config?: import("../fetch").RequestConfig) => Promise<{
12
+ clearSession: (sessionCode: string, config?: import("../fetch").IRequestConfig) => Promise<unknown>;
13
+ getSessions: (config?: import("../fetch").IRequestConfig) => Promise<import("../..").ISession<unknown, unknown>[]>;
14
+ plusSession: (data: import("../..").ISession, config?: import("../fetch").IRequestConfig) => Promise<import("../..").ISession<unknown, unknown>>;
15
+ modifySession: (data: import("../..").ISession, config?: import("../fetch").IRequestConfig) => Promise<import("../..").ISession<unknown, unknown>>;
16
+ deleteSession: (sessionCode: string, config?: import("../fetch").IRequestConfig) => Promise<unknown>;
17
+ batchDeleteSessions: (sessionCodes: string[], config?: import("../fetch").IRequestConfig) => Promise<number>;
18
+ getSession: (sessionCode: string, config?: import("../fetch").IRequestConfig) => Promise<import("../..").ISession<unknown, unknown>>;
19
+ postSessionFeedback: (data: import("../..").ISessionFeedback, config?: import("../fetch").IRequestConfig) => Promise<{
20
20
  sessionCode: string;
21
21
  sessionContentIds: number[];
22
22
  rate: number;
23
23
  comment: string;
24
24
  labels: string[];
25
25
  }>;
26
- getSessionFeedbackLabels: (rate: number, config?: import("../fetch").RequestConfig) => Promise<string[]>;
27
- renameSession: (sessionCode: string, config?: import("../fetch").RequestConfig) => Promise<import("../..").ISession<unknown, unknown>>;
26
+ getSessionFeedbackReasons: (rate: number, config?: import("../fetch").IRequestConfig) => Promise<string[]>;
27
+ renameSession: (sessionCode: string, config?: import("../fetch").IRequestConfig) => Promise<import("../..").ISession<unknown, unknown>>;
28
+ uploadFile: (sessionCode: string, file: File, config?: import("../fetch").IRequestConfig) => Promise<{
29
+ download_url?: string;
30
+ }>;
28
31
  };
29
32
  message: {
30
- getMessages: (sessionCode: string, config?: import("../fetch").RequestConfig) => Promise<import("../..").IMessage[]>;
31
- plusMessage: (data: import("../..").IMessage, config?: import("../fetch").RequestConfig) => Promise<import("../..").IMessageApi>;
32
- modifyMessage: (data: import("../..").IMessage, config?: import("../fetch").RequestConfig) => Promise<import("../..").IMessageApi>;
33
- deleteMessage: (id: number, config?: import("../fetch").RequestConfig) => Promise<import("../..").IMessageApi>;
34
- batchDeleteMessages: (ids: number[], config?: import("../fetch").RequestConfig) => Promise<number>;
33
+ getMessages: (sessionCode: string, limit?: number, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IMessage[]>;
34
+ plusMessage: (data: import("../..").IMessage, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IActivityMessage | import("../..").IAssistantMessage | import("../..").IDeveloperMessage | import("../..").IGuideMessage | import("../..").IHiddenAssistantMessage | import("../..").IHiddenGuideMessage | import("../..").IHiddenMessage | import("../..").IHiddenSystemMessage | import("../..").IHiddenUserMessage | import("../..").IInfoMessage | import("../..").IPauseMessage | import("../..").IPlaceholderMessage | import("../..").IReasoningMessage | import("../..").ISystemMessage | import("../..").ITemplateAssistantMessage | import("../..").ITemplateGuideMessage | import("../..").ITemplateHiddenMessage | import("../..").ITemplateSystemMessage | import("../..").ITemplateUserMessage | import("../..").IToolMessage | import("../..").IUserMessage>;
35
+ modifyMessage: (data: import("../..").IMessage, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IActivityMessage | import("../..").IAssistantMessage | import("../..").IDeveloperMessage | import("../..").IGuideMessage | import("../..").IHiddenAssistantMessage | import("../..").IHiddenGuideMessage | import("../..").IHiddenMessage | import("../..").IHiddenSystemMessage | import("../..").IHiddenUserMessage | import("../..").IInfoMessage | import("../..").IPauseMessage | import("../..").IPlaceholderMessage | import("../..").IReasoningMessage | import("../..").ISystemMessage | import("../..").ITemplateAssistantMessage | import("../..").ITemplateGuideMessage | import("../..").ITemplateHiddenMessage | import("../..").ITemplateSystemMessage | import("../..").ITemplateUserMessage | import("../..").IToolMessage | import("../..").IUserMessage>;
36
+ deleteMessage: (id: string, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IMessage>;
37
+ batchDeleteMessages: (ids: string[], config?: import("../fetch").IRequestConfig) => Promise<number>;
38
+ shareMessages: (sessionCode: string, contentIds: string[], expiredAt?: number, config?: import("../fetch").IRequestConfig) => Promise<import("./message").IShareMessagesResponse>;
39
+ stopChat: (sessionCode: string, config?: import("../fetch").IRequestConfig) => Promise<void>;
40
+ getFlowAgentTaskNodeInfo: (taskId: number, nodeId: string, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IFlowAgentTaskNodeInfo>;
35
41
  };
42
+ fetchClient: FetchClient;
36
43
  };
@@ -36,6 +36,7 @@ import { useSession } from './session.ts.js';
36
36
  return {
37
37
  agent,
38
38
  session,
39
- message
39
+ message,
40
+ fetchClient
40
41
  };
41
42
  };
@@ -1,14 +1,30 @@
1
- import type { IMessage, IMessageApi } from '../../message/type';
2
- import type { FetchClient, RequestConfig } from '../fetch';
1
+ import type { IFlowAgentTaskNodeInfo, IMessage } from '../../message/type';
2
+ import type { FetchClient, IRequestConfig } from '../fetch';
3
+ /**
4
+ * 分享消息接口返回数据
5
+ */
6
+ export interface IShareMessagesResponse {
7
+ agent_code: string;
8
+ agent_version: string;
9
+ content_count: number;
10
+ created_at: string;
11
+ created_by: string;
12
+ session_code: string;
13
+ share_page: string;
14
+ share_token: string;
15
+ }
3
16
  /**
4
17
  * message 相关 http 接口
5
18
  * @param fetchClient - 请求客户端
6
19
  * @returns message 相关 http 接口
7
20
  */
8
21
  export declare const useMessage: (fetchClient: FetchClient) => {
9
- getMessages: (sessionCode: string, config?: RequestConfig) => Promise<IMessage[]>;
10
- plusMessage: (data: IMessage, config?: RequestConfig) => Promise<IMessageApi>;
11
- modifyMessage: (data: IMessage, config?: RequestConfig) => Promise<IMessageApi>;
12
- deleteMessage: (id: number, config?: RequestConfig) => Promise<IMessageApi>;
13
- batchDeleteMessages: (ids: number[], config?: RequestConfig) => Promise<number>;
22
+ getMessages: (sessionCode: string, limit?: number, config?: IRequestConfig) => Promise<IMessage[]>;
23
+ plusMessage: (data: IMessage, config?: IRequestConfig) => Promise<import("../../message/type").IActivityMessage | import("../../message/type").IAssistantMessage | import("../../message/type").IDeveloperMessage | import("../../message/type").IGuideMessage | import("../../message/type").IHiddenAssistantMessage | import("../../message/type").IHiddenGuideMessage | import("../../message/type").IHiddenMessage | import("../../message/type").IHiddenSystemMessage | import("../../message/type").IHiddenUserMessage | import("../../message/type").IInfoMessage | import("../../message/type").IPauseMessage | import("../../message/type").IPlaceholderMessage | import("../../message/type").IReasoningMessage | import("../../message/type").ISystemMessage | import("../../message/type").ITemplateAssistantMessage | import("../../message/type").ITemplateGuideMessage | import("../../message/type").ITemplateHiddenMessage | import("../../message/type").ITemplateSystemMessage | import("../../message/type").ITemplateUserMessage | import("../../message/type").IToolMessage | import("../../message/type").IUserMessage>;
24
+ modifyMessage: (data: IMessage, config?: IRequestConfig) => Promise<import("../../message/type").IActivityMessage | import("../../message/type").IAssistantMessage | import("../../message/type").IDeveloperMessage | import("../../message/type").IGuideMessage | import("../../message/type").IHiddenAssistantMessage | import("../../message/type").IHiddenGuideMessage | import("../../message/type").IHiddenMessage | import("../../message/type").IHiddenSystemMessage | import("../../message/type").IHiddenUserMessage | import("../../message/type").IInfoMessage | import("../../message/type").IPauseMessage | import("../../message/type").IPlaceholderMessage | import("../../message/type").IReasoningMessage | import("../../message/type").ISystemMessage | import("../../message/type").ITemplateAssistantMessage | import("../../message/type").ITemplateGuideMessage | import("../../message/type").ITemplateHiddenMessage | import("../../message/type").ITemplateSystemMessage | import("../../message/type").ITemplateUserMessage | import("../../message/type").IToolMessage | import("../../message/type").IUserMessage>;
25
+ deleteMessage: (id: string, config?: IRequestConfig) => Promise<IMessage>;
26
+ batchDeleteMessages: (ids: string[], config?: IRequestConfig) => Promise<number>;
27
+ shareMessages: (sessionCode: string, contentIds: string[], expiredAt?: number, config?: IRequestConfig) => Promise<IShareMessagesResponse>;
28
+ stopChat: (sessionCode: string, config?: IRequestConfig) => Promise<void>;
29
+ getFlowAgentTaskNodeInfo: (taskId: number, nodeId: string, config?: IRequestConfig) => Promise<IFlowAgentTaskNodeInfo>;
14
30
  };
@@ -22,31 +22,76 @@
22
22
  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
23
23
  * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24
24
  * IN THE SOFTWARE.
25
- */ import { transferMessage2MessageApi, transferMessageApi2Message } from '../transform/message.ts.js';
25
+ */ function _define_property(obj, key, value) {
26
+ if (key in obj) {
27
+ Object.defineProperty(obj, key, {
28
+ value: value,
29
+ enumerable: true,
30
+ configurable: true,
31
+ writable: true
32
+ });
33
+ } else {
34
+ obj[key] = value;
35
+ }
36
+ return obj;
37
+ }
38
+ function _object_spread(target) {
39
+ for(var i = 1; i < arguments.length; i++){
40
+ var source = arguments[i] != null ? arguments[i] : {};
41
+ var ownKeys = Object.keys(source);
42
+ if (typeof Object.getOwnPropertySymbols === "function") {
43
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
44
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
45
+ }));
46
+ }
47
+ ownKeys.forEach(function(key) {
48
+ _define_property(target, key, source[key]);
49
+ });
50
+ }
51
+ return target;
52
+ }
53
+ import { transferMessage2MessageApi, transferMessageApi2Message } from '../transform/message.ts.js';
26
54
  /**
27
55
  * message 相关 http 接口
28
56
  * @param fetchClient - 请求客户端
29
57
  * @returns message 相关 http 接口
30
58
  */ export const useMessage = (fetchClient)=>{
31
59
  // 获取会话内容列表
32
- const getMessages = (sessionCode, config)=>fetchClient.get(`session_content/content/`, {
33
- session_code: sessionCode
60
+ const getMessages = (sessionCode, limit, config)=>fetchClient.get(`session_content/content/`, {
61
+ session_code: sessionCode,
62
+ limit
34
63
  }, config).then((res)=>res.map(transferMessageApi2Message));
35
64
  // 新增会话内容
36
- const plusMessage = (data, config)=>fetchClient.post(`session_content/`, transferMessage2MessageApi(data), config);
65
+ const plusMessage = (data, config)=>fetchClient.post(`session_content/`, transferMessage2MessageApi(data), config).then(transferMessageApi2Message);
37
66
  // 修改会话内容
38
- const modifyMessage = (data, config)=>fetchClient.put(`session_content/${data.id}/`, transferMessage2MessageApi(data), config);
67
+ const modifyMessage = (data, config)=>fetchClient.put(`session_content/${data.id}/`, transferMessage2MessageApi(data), config).then(transferMessageApi2Message);
39
68
  // 删除会话内容
40
- const deleteMessage = (id, config)=>fetchClient.delete(`session_content/${id}/`, undefined, config);
69
+ const deleteMessage = (id, config)=>fetchClient['delete'](`session_content/${id}/`, undefined, config);
41
70
  // 批量删除聊天内容
42
71
  const batchDeleteMessages = (ids, config)=>fetchClient.post(`session_content/batch_delete/`, {
43
72
  ids
44
73
  }, config);
74
+ // 分享消息
75
+ const shareMessages = (sessionCode, contentIds, expiredAt, config)=>fetchClient.post(`share/`, _object_spread({
76
+ session_code: sessionCode,
77
+ content_ids: contentIds
78
+ }, expiredAt ? {
79
+ expired_at: expiredAt
80
+ } : {}), config);
81
+ // 停止会话
82
+ const stopChat = (sessionCode, config)=>fetchClient.post(`session_content/stop/`, {
83
+ session_code: sessionCode
84
+ }, config);
85
+ // 获取流程引擎任务节点详情
86
+ const getFlowAgentTaskNodeInfo = (taskId, nodeId, config)=>fetchClient.get(`flow_agent/task_node_info/${taskId}/${nodeId}/`, undefined, config);
45
87
  return {
46
88
  getMessages,
47
89
  plusMessage,
48
90
  modifyMessage,
49
91
  deleteMessage,
50
- batchDeleteMessages
92
+ batchDeleteMessages,
93
+ shareMessages,
94
+ stopChat,
95
+ getFlowAgentTaskNodeInfo
51
96
  };
52
97
  };