@blueking/chat-helper 0.0.1-beta.9 → 0.0.3

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 (42) hide show
  1. package/README.md +631 -141
  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 +464 -484
  5. package/dist/agent/use-agent.ts.js +191 -42
  6. package/dist/event/ag-ui.d.ts +37 -7
  7. package/dist/event/ag-ui.ts.js +225 -173
  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 +5 -1
  11. package/dist/http/fetch/fetch.ts.js +40 -51
  12. package/dist/http/fetch/index.d.ts +1 -0
  13. package/dist/http/fetch/index.ts.js +133 -3
  14. package/dist/http/index.d.ts +14 -5
  15. package/dist/http/index.ts.js +59 -3
  16. package/dist/http/module/index.d.ts +13 -5
  17. package/dist/http/module/index.ts.js +2 -1
  18. package/dist/http/module/message.d.ts +22 -5
  19. package/dist/http/module/message.ts.js +51 -4
  20. package/dist/http/module/session.d.ts +4 -1
  21. package/dist/http/module/session.ts.js +66 -4
  22. package/dist/http/transform/agent.ts.js +11 -8
  23. package/dist/http/transform/message.d.ts +6 -6
  24. package/dist/http/transform/message.ts.js +566 -118
  25. package/dist/http/transform/session.ts.js +9 -1
  26. package/dist/index.d.ts +2983 -3314
  27. package/dist/index.ts.js +27 -5
  28. package/dist/mediator/index.d.ts +2 -0
  29. package/dist/mediator/index.ts.js +26 -0
  30. package/dist/mediator/type.d.ts +50 -0
  31. package/dist/mediator/type.ts.js +28 -0
  32. package/dist/mediator/use-mediator.d.ts +7 -0
  33. package/dist/mediator/use-mediator.ts.js +47 -0
  34. package/dist/message/type.d.ts +280 -146
  35. package/dist/message/type.ts.js +16 -15
  36. package/dist/message/use-message.d.ts +847 -963
  37. package/dist/message/use-message.ts.js +230 -37
  38. package/dist/session/type.d.ts +10 -0
  39. package/dist/session/use-session.d.ts +2006 -2214
  40. package/dist/session/use-session.ts.js +198 -33
  41. package/dist/type.d.ts +2 -0
  42. package/package.json +11 -6
@@ -132,7 +132,6 @@ class InterceptorManager {
132
132
  }
133
133
  }
134
134
  export class FetchClient {
135
- // 应用响应拦截器的错误处理
136
135
  applyResponseErrorInterceptors(error) {
137
136
  let rejectedError = error;
138
137
  this.interceptors.response.forEach((interceptor)=>{
@@ -142,7 +141,6 @@ export class FetchClient {
142
141
  });
143
142
  return rejectedError;
144
143
  }
145
- // 创建新实例
146
144
  create(config) {
147
145
  return new FetchClient(mergeConfig(this.defaults, config || {}));
148
146
  }
@@ -188,13 +186,9 @@ export class FetchClient {
188
186
  data
189
187
  }));
190
188
  }
191
- // 准备请求:合并配置、应用拦截器、构建 URL 和请求体
192
189
  prepareRequest(config, isStream = false) {
193
- // 合并配置
194
190
  const mergedConfig = mergeConfig(this.defaults, config);
195
- // 总的请求配置
196
191
  let requestConfig = mergedConfig;
197
- // 应用请求拦截器
198
192
  this.interceptors.request.forEach((interceptor)=>{
199
193
  if (interceptor.fulfilled) {
200
194
  try {
@@ -207,20 +201,16 @@ export class FetchClient {
207
201
  }
208
202
  }
209
203
  });
210
- // 构建完整 URL
211
204
  let url = requestConfig.url || '';
212
205
  if (requestConfig.baseURL && !url.startsWith('http')) {
213
206
  url = requestConfig.baseURL + url;
214
207
  }
215
208
  url = buildURL(url, requestConfig.params);
216
- // 处理请求体
217
209
  let body = getValue(requestConfig.data);
218
210
  const headers = new Headers(getValue(requestConfig.headers));
219
- // 流式请求设置 Accept 头
220
211
  if (isStream && !headers.has('Accept')) {
221
212
  headers.set('Accept', 'text/event-stream');
222
213
  }
223
- // 处理请求体
224
214
  if (body !== undefined && body !== null) {
225
215
  var _headers_get;
226
216
  if (requestConfig.transformRequest) {
@@ -229,21 +219,21 @@ export class FetchClient {
229
219
  body = JSON.stringify(body);
230
220
  }
231
221
  }
232
- // 创建 AbortController
233
- const controller = requestConfig.controller ? requestConfig.controller : new AbortController();
234
- // 请求配置
222
+ var _requestConfig_controller;
223
+ const controller = (_requestConfig_controller = requestConfig.controller) !== null && _requestConfig_controller !== void 0 ? _requestConfig_controller : new AbortController();
235
224
  const fetchConfig = {
236
225
  method: requestConfig.method,
237
226
  credentials: requestConfig.credentials,
238
227
  mode: requestConfig.mode,
239
228
  headers,
240
229
  body,
241
- controller
230
+ signal: controller.signal
242
231
  };
243
232
  return {
244
233
  url,
245
234
  requestConfig,
246
- fetchConfig
235
+ fetchConfig,
236
+ controller
247
237
  };
248
238
  }
249
239
  put(url, data, config) {
@@ -256,18 +246,13 @@ export class FetchClient {
256
246
  request(config) {
257
247
  var _this = this;
258
248
  return _async_to_generator(function*() {
259
- // 准备请求
260
- const { url, fetchConfig, requestConfig } = _this.prepareRequest(config);
261
- // 创建超时控制
262
- const timeoutId = requestConfig.timeout && requestConfig.timeout > 0 ? setTimeout(()=>fetchConfig.controller.abort(), requestConfig.timeout) : undefined;
249
+ const { url, fetchConfig, requestConfig, controller } = _this.prepareRequest(config);
250
+ const timeoutId = requestConfig.timeout && requestConfig.timeout > 0 ? setTimeout(()=>controller.abort(), requestConfig.timeout) : undefined;
263
251
  try {
264
- // 发送请求
265
252
  const fetchResponse = yield fetch(url, fetchConfig);
266
- // 清除超时定时器
267
253
  if (timeoutId) {
268
254
  clearTimeout(timeoutId);
269
255
  }
270
- // 解析响应数据
271
256
  let data;
272
257
  const responseType = requestConfig.responseType || 'json';
273
258
  try {
@@ -293,11 +278,9 @@ export class FetchClient {
293
278
  } catch (_error) {
294
279
  data = null;
295
280
  }
296
- // 应用响应转换
297
281
  if (requestConfig.transformResponse) {
298
282
  data = requestConfig.transformResponse(data);
299
283
  }
300
- // 构建响应对象
301
284
  const response = {
302
285
  data: data,
303
286
  status: fetchResponse.status,
@@ -305,12 +288,12 @@ export class FetchClient {
305
288
  headers: fetchResponse.headers,
306
289
  config: requestConfig
307
290
  };
308
- // 验证状态码
309
291
  const validateStatus = requestConfig.validateStatus || _this.defaults.validateStatus;
310
292
  if (!validateStatus(fetchResponse.status)) {
311
- throw createError(`Request failed with status code ${fetchResponse.status}`, requestConfig, `ERR_BAD_RESPONSE`, response);
293
+ var _response_data_error, _response_data;
294
+ 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}`;
295
+ throw createError(message, requestConfig, `ERR_BAD_RESPONSE`, response);
312
296
  }
313
- // 应用响应拦截器
314
297
  let finalResponse = response;
315
298
  _this.interceptors.response.forEach((interceptor)=>{
316
299
  if (interceptor.fulfilled) {
@@ -324,11 +307,10 @@ export class FetchClient {
324
307
  }
325
308
  }
326
309
  });
327
- // 等待所有异步拦截器完成
328
310
  if (finalResponse instanceof Promise) {
329
311
  finalResponse = yield finalResponse;
330
312
  }
331
- // 检查业务逻辑状态码
313
+ // 检查业务状态码(区别于 HTTP 状态码)
332
314
  const apiResponse = finalResponse.data;
333
315
  if (![
334
316
  0,
@@ -338,48 +320,48 @@ export class FetchClient {
338
320
  }
339
321
  return apiResponse.data;
340
322
  } catch (error) {
341
- // 清除超时定时器
342
323
  if (timeoutId) {
343
324
  clearTimeout(timeoutId);
344
325
  }
345
- // 处理中断错误
346
326
  if (error instanceof Error && error.name === 'AbortError') {
347
327
  const requestError = createError('Request timeout', requestConfig, 'ECONNABORTED', undefined);
348
328
  throw _this.applyResponseErrorInterceptors(requestError);
349
329
  }
350
- // 处理其他错误
351
330
  const requestError = error.isAxiosError === true ? error : createError(error.message, requestConfig, error.code, undefined);
352
331
  throw _this.applyResponseErrorInterceptors(requestError);
353
332
  }
354
333
  })();
355
334
  }
356
- // SSE 流式请求便捷方法
357
335
  stream(url, config) {
358
336
  return this.streamRequest(_object_spread_props(_object_spread({}, config), {
359
337
  url
360
338
  }));
361
339
  }
362
- // SSE 流式请求
363
340
  streamRequest(config) {
364
341
  var _this = this;
365
342
  return _async_to_generator(function*() {
366
- // 准备请求(标记为流式请求)
367
343
  const { url, fetchConfig, requestConfig } = _this.prepareRequest(config, true);
368
344
  try {
369
- var // 触发 onStart 回调
370
- _config_onStart, _fetchResponse_body;
371
- // 发送请求
345
+ var _config_onStart, _fetchResponse_body;
372
346
  const fetchResponse = yield fetch(url, fetchConfig);
373
- // 验证状态码
374
347
  const validateStatus = requestConfig.validateStatus || _this.defaults.validateStatus;
375
348
  if (!validateStatus(fetchResponse.status)) {
376
349
  var _config_onError;
377
- const error = createError(`Request failed with status code ${fetchResponse.status}`, requestConfig, `ERR_BAD_RESPONSE`, undefined);
350
+ let message = `Request failed with status code ${fetchResponse.status}`;
351
+ try {
352
+ var _errorData_error;
353
+ const errorData = yield fetchResponse.json();
354
+ if (errorData === null || errorData === void 0 ? void 0 : (_errorData_error = errorData.error) === null || _errorData_error === void 0 ? void 0 : _errorData_error.message) {
355
+ message = errorData.error.message;
356
+ }
357
+ } catch (_error) {
358
+ message = `Request failed with status code ${fetchResponse.status}`;
359
+ }
360
+ const error = createError(message, requestConfig, `ERR_BAD_RESPONSE`, undefined);
378
361
  (_config_onError = config.onError) === null || _config_onError === void 0 ? void 0 : _config_onError.call(config, error);
379
362
  return;
380
363
  }
381
364
  (_config_onStart = config.onStart) === null || _config_onStart === void 0 ? void 0 : _config_onStart.call(config);
382
- // 获取 reader
383
365
  const reader = (_fetchResponse_body = fetchResponse.body) === null || _fetchResponse_body === void 0 ? void 0 : _fetchResponse_body.pipeThrough(new window.TextDecoderStream()).getReader();
384
366
  if (!reader) {
385
367
  var _config_onError1;
@@ -387,12 +369,19 @@ export class FetchClient {
387
369
  (_config_onError1 = config.onError) === null || _config_onError1 === void 0 ? void 0 : _config_onError1.call(config, error);
388
370
  return;
389
371
  }
390
- // 临时存储数据
372
+ // 缓存跨行分片数据
391
373
  let temp = '';
374
+ const isJson = (str)=>{
375
+ try {
376
+ JSON.parse(str);
377
+ return true;
378
+ } catch (_error) {
379
+ return false;
380
+ }
381
+ };
392
382
  // eslint-disable-next-line no-constant-condition
393
383
  while(true){
394
384
  const { value, done } = yield reader.read();
395
- // 接口完成
396
385
  if (done) {
397
386
  var _config_onDone;
398
387
  (_config_onDone = config.onDone) === null || _config_onDone === void 0 ? void 0 : _config_onDone.call(config);
@@ -401,10 +390,11 @@ export class FetchClient {
401
390
  const values = (temp + value.toString()).split('\n');
402
391
  values.forEach((value)=>{
403
392
  const item = value.replace('data:', '').trim();
404
- if (item.endsWith('}')) {
393
+ if (isJson(item)) {
405
394
  var _config_onMessage;
406
395
  const json = JSON.parse(item);
407
396
  (_config_onMessage = config.onMessage) === null || _config_onMessage === void 0 ? void 0 : _config_onMessage.call(config, json);
397
+ temp = '';
408
398
  } else if (item) {
409
399
  temp = item;
410
400
  }
@@ -444,7 +434,6 @@ export class FetchClient {
444
434
  };
445
435
  }
446
436
  }
447
- // 构建完整 URL
448
437
  function buildURL(url, params) {
449
438
  if (!params) return url;
450
439
  const searchParams = new URLSearchParams();
@@ -465,7 +454,6 @@ function buildURL(url, params) {
465
454
  }
466
455
  return url;
467
456
  }
468
- // 创建错误对象
469
457
  function createError(message, config, code, response) {
470
458
  const error = new Error(message);
471
459
  error.config = config;
@@ -474,16 +462,19 @@ function createError(message, config, code, response) {
474
462
  error.isAxiosError = true;
475
463
  return error;
476
464
  }
477
- // 获取值
478
465
  function getValue(value) {
479
466
  return typeof value === 'function' ? value() : value;
480
467
  }
481
- // 合并配置
468
+ /** 排除 AbortController、Headers 等类实例,只对普通对象深度合并 */ function isPlainObject(value) {
469
+ if (!value || typeof value !== 'object') return false;
470
+ const proto = Object.getPrototypeOf(value);
471
+ return proto === Object.prototype || proto === null;
472
+ }
482
473
  function mergeConfig(config1, config2) {
483
474
  const output = _object_spread({}, config1);
484
475
  for(const key in config2){
485
476
  const value2 = config2[key];
486
- if (value2 && typeof value2 === 'object' && !Array.isArray(value2)) {
477
+ if (isPlainObject(value2)) {
487
478
  const value1 = config1[key];
488
479
  output[key] = mergeConfig(value1 || {}, value2);
489
480
  } else {
@@ -492,7 +483,5 @@ function mergeConfig(config1, config2) {
492
483
  }
493
484
  return output;
494
485
  }
495
- // 创建默认实例
496
486
  const fetchClient = new FetchClient();
497
- // 导出默认实例
498
487
  export default fetchClient;
@@ -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
  };
@@ -22,20 +22,150 @@
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 { FetchClient } from './fetch.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 { FetchClient } from './fetch.ts.js';
78
+ /** 仅支持 body 的 HTTP 方法 */ const BODY_METHODS = new Set([
79
+ 'POST',
80
+ 'PUT',
81
+ 'PATCH',
82
+ 'DELETE'
83
+ ]);
84
+ /** 排除 FormData / Blob / ArrayBuffer 等,只对普通对象展开合并 */ function isPlainObject(value) {
85
+ if (!value || typeof value !== 'object') return false;
86
+ const proto = Object.getPrototypeOf(value);
87
+ return proto === Object.prototype || proto === null;
88
+ }
89
+ /** 解析「函数 | 值」两种形式,支持延迟求值(如响应式 token) */ function resolveValue(value) {
90
+ return typeof value === 'function' ? value() : value;
91
+ }
92
+ /**
93
+ * 注册全局默认请求配置拦截器,将 `requestData.headers/data` 自动合并到每次请求。
94
+ * - `headers` 注入所有请求;`data` 仅注入 POST/PUT/PATCH/DELETE,避免 GET/HEAD body 报错。
95
+ * - 优先级最低(单次 IRequestConfig > 用户拦截器 > 本拦截器)。
96
+ */ function registerRequestDataInterceptor(client, opts) {
97
+ const { headers: extraHeadersFn, data: extraDataFn } = opts.requestData;
98
+ if (!extraHeadersFn && !extraDataFn) return;
99
+ client.interceptors.request.use((config)=>{
100
+ let result = config;
101
+ if (extraHeadersFn) {
102
+ const extra = resolveValue(extraHeadersFn);
103
+ if (extra && Object.keys(extra).length > 0) {
104
+ var _resolveValue;
105
+ const existing = (_resolveValue = resolveValue(config.headers)) !== null && _resolveValue !== void 0 ? _resolveValue : {};
106
+ result = _object_spread_props(_object_spread({}, result), {
107
+ headers: _object_spread({}, existing, extra)
108
+ });
109
+ }
110
+ }
111
+ var _config_method;
112
+ const method = ((_config_method = config.method) !== null && _config_method !== void 0 ? _config_method : 'GET').toUpperCase();
113
+ if (extraDataFn && BODY_METHODS.has(method)) {
114
+ const extra = resolveValue(extraDataFn);
115
+ if (extra && Object.keys(extra).length > 0) {
116
+ const existing = resolveValue(config.data);
117
+ if (existing == null) {
118
+ // body 为空(如 clearSession POST undefined):直接用 extra 作为 body
119
+ result = _object_spread_props(_object_spread({}, result), {
120
+ data: extra
121
+ });
122
+ } else if (isPlainObject(existing)) {
123
+ // body 是普通对象:浅合并,extra 字段优先级更低(existing 已有同名字段时保留)
124
+ result = _object_spread_props(_object_spread({}, result), {
125
+ data: _object_spread({}, extra, existing)
126
+ });
127
+ } else {
128
+ // body 是 FormData / Blob / string 等:跳过注入,避免破坏原始 body
129
+ console.warn('[chat-helper] requestData.data 无法注入:当前请求体不是普通对象(FormData/Blob/string 等),已跳过合并。', {
130
+ method,
131
+ existingType: typeof existing
132
+ });
133
+ }
134
+ }
135
+ }
136
+ return result;
137
+ });
138
+ }
26
139
  export const useFetch = (options)=>{
27
140
  var _options_interceptors, _options_interceptors1;
28
141
  const fetchClient = new FetchClient({
29
142
  baseURL: options.requestData.urlPrefix
30
143
  });
31
- // 用户定义拦截器
144
+ // 先注册默认拦截器(优先级低),再注册用户拦截器(优先级高)
145
+ registerRequestDataInterceptor(fetchClient, options);
32
146
  if ((_options_interceptors = options.interceptors) === null || _options_interceptors === void 0 ? void 0 : _options_interceptors.request) {
33
147
  fetchClient.interceptors.request.use(options.interceptors.request);
34
148
  }
35
149
  if ((_options_interceptors1 = options.interceptors) === null || _options_interceptors1 === void 0 ? void 0 : _options_interceptors1.response) {
36
150
  fetchClient.interceptors.response.use(options.interceptors.response);
37
151
  }
152
+ // 重置 fetchClient 配置
153
+ const reset = (newOptions)=>{
154
+ var _newOptions_interceptors, _newOptions_interceptors1;
155
+ fetchClient.defaults.baseURL = newOptions.requestData.urlPrefix;
156
+ // 清空并重新注册所有拦截器
157
+ fetchClient.interceptors.request.clear();
158
+ fetchClient.interceptors.response.clear();
159
+ registerRequestDataInterceptor(fetchClient, newOptions);
160
+ if ((_newOptions_interceptors = newOptions.interceptors) === null || _newOptions_interceptors === void 0 ? void 0 : _newOptions_interceptors.request) {
161
+ fetchClient.interceptors.request.use(newOptions.interceptors.request);
162
+ }
163
+ if ((_newOptions_interceptors1 = newOptions.interceptors) === null || _newOptions_interceptors1 === void 0 ? void 0 : _newOptions_interceptors1.response) {
164
+ fetchClient.interceptors.response.use(newOptions.interceptors.response);
165
+ }
166
+ };
38
167
  return {
39
- fetchClient
168
+ fetchClient,
169
+ reset
40
170
  };
41
171
  };
@@ -7,6 +7,7 @@ export * from './transform';
7
7
  * @returns HTTP 模块
8
8
  */
9
9
  export declare const useHttp: (options: IUseChatHelperOptions) => {
10
+ reset: (newOptions: IUseChatHelperOptions) => void;
10
11
  agent: {
11
12
  getAgentInfo: (config?: import("./fetch").IRequestConfig) => Promise<import("..").IAgentInfo>;
12
13
  };
@@ -25,15 +26,23 @@ export declare const useHttp: (options: IUseChatHelperOptions) => {
25
26
  comment: string;
26
27
  labels: string[];
27
28
  }>;
28
- getSessionFeedbackLabels: (rate: number, config?: import("./fetch").IRequestConfig) => Promise<string[]>;
29
+ getSessionFeedbackReasons: (rate: number, config?: import("./fetch").IRequestConfig) => Promise<string[]>;
29
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
+ }>;
30
34
  };
31
35
  message: {
32
36
  getMessages: (sessionCode: string, limit?: number, config?: import("./fetch").IRequestConfig) => Promise<import("..").IMessage[]>;
33
- plusMessage: (data: import("..").IMessage, config?: import("./fetch").IRequestConfig) => Promise<import("..").IAssistantMessage | import("..").IGuideMessage | import("..").IHiddenAssistantMessage | import("..").IHiddenGuideMessage | import("..").IHiddenMessage | import("..").IHiddenSystemMessage | import("..").IHiddenUserMessage | import("..").IInfoMessage | import("..").IPauseMessage | import("..").IPlaceholderMessage | import("..").ISystemMessage | import("..").ITemplateAssistantMessage | import("..").ITemplateGuideMessage | import("..").ITemplateHiddenMessage | import("..").ITemplateSystemMessage | import("..").ITemplateUserMessage | import("..").IUserMessage>;
34
- modifyMessage: (data: import("..").IMessage, config?: import("./fetch").IRequestConfig) => Promise<import("..").IAssistantMessage | import("..").IGuideMessage | import("..").IHiddenAssistantMessage | import("..").IHiddenGuideMessage | import("..").IHiddenMessage | import("..").IHiddenSystemMessage | import("..").IHiddenUserMessage | import("..").IInfoMessage | import("..").IPauseMessage | import("..").IPlaceholderMessage | import("..").ISystemMessage | import("..").ITemplateAssistantMessage | import("..").ITemplateGuideMessage | import("..").ITemplateHiddenMessage | import("..").ITemplateSystemMessage | import("..").ITemplateUserMessage | import("..").IUserMessage>;
35
- deleteMessage: (id: number, config?: import("./fetch").IRequestConfig) => Promise<import("..").IMessageApi>;
36
- batchDeleteMessages: (ids: number[], config?: import("./fetch").IRequestConfig) => Promise<number>;
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
+ getFlowAgentTaskInfo: (taskId: number, config?: import("./fetch").IRequestConfig) => Promise<unknown>;
44
+ getFlowAgentTaskNodeInfo: (taskId: number, nodeId: string, config?: import("./fetch").IRequestConfig) => Promise<import("..").IFlowAgentTaskNodeInfo>;
37
45
  };
46
+ fetchClient: import("./fetch").FetchClient;
38
47
  };
39
48
  export type IHttpModule = ReturnType<typeof useHttp>;
@@ -22,7 +22,59 @@
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';
27
79
  export * from './fetch/index.ts.js';
28
80
  export * from './transform/index.ts.js';
@@ -31,7 +83,11 @@ export * from './transform/index.ts.js';
31
83
  * @param options - 选项
32
84
  * @returns HTTP 模块
33
85
  */ export const useHttp = (options)=>{
34
- const { fetchClient } = useFetch(options);
86
+ // 创建 fetchClient
87
+ const { fetchClient, reset } = useFetch(options);
88
+ // 创建 http 模块
35
89
  const http = useModule(fetchClient);
36
- return http;
90
+ return _object_spread_props(_object_spread({}, http), {
91
+ reset
92
+ });
37
93
  };
@@ -23,14 +23,22 @@ export declare const useModule: (fetchClient: FetchClient) => {
23
23
  comment: string;
24
24
  labels: string[];
25
25
  }>;
26
- getSessionFeedbackLabels: (rate: number, config?: import("../fetch").IRequestConfig) => Promise<string[]>;
26
+ getSessionFeedbackReasons: (rate: number, config?: import("../fetch").IRequestConfig) => Promise<string[]>;
27
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
33
  getMessages: (sessionCode: string, limit?: number, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IMessage[]>;
31
- plusMessage: (data: import("../..").IMessage, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IAssistantMessage | import("../..").IGuideMessage | import("../..").IHiddenAssistantMessage | import("../..").IHiddenGuideMessage | import("../..").IHiddenMessage | import("../..").IHiddenSystemMessage | import("../..").IHiddenUserMessage | import("../..").IInfoMessage | import("../..").IPauseMessage | import("../..").IPlaceholderMessage | import("../..").ISystemMessage | import("../..").ITemplateAssistantMessage | import("../..").ITemplateGuideMessage | import("../..").ITemplateHiddenMessage | import("../..").ITemplateSystemMessage | import("../..").ITemplateUserMessage | import("../..").IUserMessage>;
32
- modifyMessage: (data: import("../..").IMessage, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IAssistantMessage | import("../..").IGuideMessage | import("../..").IHiddenAssistantMessage | import("../..").IHiddenGuideMessage | import("../..").IHiddenMessage | import("../..").IHiddenSystemMessage | import("../..").IHiddenUserMessage | import("../..").IInfoMessage | import("../..").IPauseMessage | import("../..").IPlaceholderMessage | import("../..").ISystemMessage | import("../..").ITemplateAssistantMessage | import("../..").ITemplateGuideMessage | import("../..").ITemplateHiddenMessage | import("../..").ITemplateSystemMessage | import("../..").ITemplateUserMessage | import("../..").IUserMessage>;
33
- deleteMessage: (id: number, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IMessageApi>;
34
- batchDeleteMessages: (ids: number[], config?: import("../fetch").IRequestConfig) => Promise<number>;
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
+ getFlowAgentTaskInfo: (taskId: number, config?: import("../fetch").IRequestConfig) => Promise<unknown>;
41
+ getFlowAgentTaskNodeInfo: (taskId: number, nodeId: string, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IFlowAgentTaskNodeInfo>;
35
42
  };
43
+ fetchClient: FetchClient;
36
44
  };
@@ -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,5 +1,18 @@
1
- import type { IMessage, IMessageApi } from '../../message/type';
1
+ import type { IFlowAgentTaskNodeInfo, IMessage } from '../../message/type';
2
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 - 请求客户端
@@ -7,8 +20,12 @@ import type { FetchClient, IRequestConfig } from '../fetch';
7
20
  */
8
21
  export declare const useMessage: (fetchClient: FetchClient) => {
9
22
  getMessages: (sessionCode: string, limit?: number, config?: IRequestConfig) => Promise<IMessage[]>;
10
- plusMessage: (data: IMessage, config?: IRequestConfig) => Promise<import("../../message/type").IAssistantMessage | 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").ISystemMessage | import("../../message/type").ITemplateAssistantMessage | import("../../message/type").ITemplateGuideMessage | import("../../message/type").ITemplateHiddenMessage | import("../../message/type").ITemplateSystemMessage | import("../../message/type").ITemplateUserMessage | import("../../message/type").IUserMessage>;
11
- modifyMessage: (data: IMessage, config?: IRequestConfig) => Promise<import("../../message/type").IAssistantMessage | 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").ISystemMessage | import("../../message/type").ITemplateAssistantMessage | import("../../message/type").ITemplateGuideMessage | import("../../message/type").ITemplateHiddenMessage | import("../../message/type").ITemplateSystemMessage | import("../../message/type").ITemplateUserMessage | import("../../message/type").IUserMessage>;
12
- deleteMessage: (id: number, config?: IRequestConfig) => Promise<IMessageApi>;
13
- batchDeleteMessages: (ids: number[], config?: IRequestConfig) => Promise<number>;
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
+ getFlowAgentTaskInfo: (taskId: number, config?: IRequestConfig) => Promise<unknown>;
30
+ getFlowAgentTaskNodeInfo: (taskId: number, nodeId: string, config?: IRequestConfig) => Promise<IFlowAgentTaskNodeInfo>;
14
31
  };