@blueking/chat-helper 0.0.12-beta.2 → 0.0.12-beta.21
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/README.md +21 -7
- package/dist/agent/type.d.ts +69 -0
- package/dist/agent/type.ts.js +1 -1
- package/dist/agent/use-agent.d.ts +1484 -8
- package/dist/agent/use-agent.ts.js +452 -30
- package/dist/event/ag-ui.d.ts +18 -3
- package/dist/event/ag-ui.ts.js +175 -8
- package/dist/event/type.d.ts +104 -26
- package/dist/event/type.ts.js +46 -16
- package/dist/http/fetch/fetch.ts.js +104 -24
- package/dist/http/index.d.ts +15 -4
- package/dist/http/module/agent.d.ts +2 -0
- package/dist/http/module/agent.ts.js +19 -2
- package/dist/http/module/index.d.ts +15 -4
- package/dist/http/module/message.d.ts +7 -4
- package/dist/http/module/message.ts.js +22 -4
- package/dist/http/module/session.d.ts +9 -2
- package/dist/http/module/session.ts.js +55 -3
- package/dist/http/transform/agent.d.ts +9 -1
- package/dist/http/transform/agent.ts.js +27 -0
- package/dist/http/transform/message.ts.js +25 -5
- package/dist/index.d.ts +9971 -31
- package/dist/message/type.d.ts +53 -7
- package/dist/message/type.ts.js +24 -0
- package/dist/message/use-message.d.ts +2820 -4
- package/dist/session/type.d.ts +33 -0
- package/dist/session/use-session.d.ts +5650 -11
- package/dist/session/use-session.ts.js +77 -8
- package/package.json +4 -1
|
@@ -276,7 +276,12 @@ export class FetchClient {
|
|
|
276
276
|
var _this = this;
|
|
277
277
|
return _async_to_generator(function*() {
|
|
278
278
|
const { url, fetchConfig, requestConfig, controller } = _this.prepareRequest(config);
|
|
279
|
-
|
|
279
|
+
// 超时与用户主动取消共用同一个 AbortController,需靠此标记区分
|
|
280
|
+
let timedOut = false;
|
|
281
|
+
const timeoutId = requestConfig.timeout && requestConfig.timeout > 0 ? setTimeout(()=>{
|
|
282
|
+
timedOut = true;
|
|
283
|
+
controller.abort();
|
|
284
|
+
}, requestConfig.timeout) : undefined;
|
|
280
285
|
try {
|
|
281
286
|
const fetchResponse = yield fetch(url, fetchConfig);
|
|
282
287
|
if (timeoutId) {
|
|
@@ -319,9 +324,8 @@ export class FetchClient {
|
|
|
319
324
|
};
|
|
320
325
|
const validateStatus = requestConfig.validateStatus || _this.defaults.validateStatus;
|
|
321
326
|
if (!validateStatus(fetchResponse.status)) {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
throw createError(message, requestConfig, `ERR_BAD_RESPONSE`, response);
|
|
327
|
+
const { code, message } = resolveErrorPayload(response.data, `Request failed with status code ${fetchResponse.status}`);
|
|
328
|
+
throw createError(message, requestConfig, code, response);
|
|
325
329
|
}
|
|
326
330
|
let finalResponse = response;
|
|
327
331
|
_this.interceptors.response.forEach((interceptor)=>{
|
|
@@ -341,23 +345,28 @@ export class FetchClient {
|
|
|
341
345
|
}
|
|
342
346
|
// 检查业务状态码(区别于 HTTP 状态码)
|
|
343
347
|
const apiResponse = finalResponse.data;
|
|
348
|
+
// 无响应体(如 204 或空 body)时没有业务码可校验,直接放行
|
|
349
|
+
if (!apiResponse) {
|
|
350
|
+
return undefined;
|
|
351
|
+
}
|
|
344
352
|
if (![
|
|
345
353
|
0,
|
|
346
354
|
'success'
|
|
347
355
|
].includes(apiResponse.code)) {
|
|
348
|
-
|
|
356
|
+
const { code, message } = resolveErrorPayload(apiResponse, `Request failed with code ${apiResponse.code}`);
|
|
357
|
+
throw createError(message, requestConfig, code, finalResponse);
|
|
349
358
|
}
|
|
350
359
|
return apiResponse.data;
|
|
351
360
|
} catch (error) {
|
|
352
361
|
if (timeoutId) {
|
|
353
362
|
clearTimeout(timeoutId);
|
|
354
363
|
}
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
364
|
+
// 用户手动取消请求;超时同样表现为 AbortError,需作为异常上报
|
|
365
|
+
if (error instanceof Error && error.name === 'AbortError' && !timedOut) {
|
|
366
|
+
console.warn('User canceled request', error.message);
|
|
367
|
+
return;
|
|
359
368
|
}
|
|
360
|
-
const requestError = error.isAxiosError === true ? error : createError(error.message, requestConfig, error.code, undefined);
|
|
369
|
+
const requestError = timedOut ? createError(`timeout of ${requestConfig.timeout}ms exceeded`, requestConfig, 'ECONNABORTED', undefined) : error.isAxiosError === true ? error : createError(error.message, requestConfig, error.code, undefined);
|
|
361
370
|
_this.dispatchError(requestError);
|
|
362
371
|
throw _this.applyResponseErrorInterceptors(requestError);
|
|
363
372
|
}
|
|
@@ -390,33 +399,44 @@ export class FetchClient {
|
|
|
390
399
|
const wrappedConfig = _object_spread_props(_object_spread({}, config), {
|
|
391
400
|
onError: wrappedOnError
|
|
392
401
|
});
|
|
393
|
-
const { url, fetchConfig, requestConfig } = _this.prepareRequest(wrappedConfig, true);
|
|
402
|
+
const { url, fetchConfig, requestConfig, controller } = _this.prepareRequest(wrappedConfig, true);
|
|
403
|
+
let reader;
|
|
404
|
+
const cancelReaderOnAbort = ()=>{
|
|
405
|
+
// pipeThrough(TextDecoderStream) 后,仅 abort fetch signal 在部分环境下不会立刻打断 reader.read()
|
|
406
|
+
void (reader === null || reader === void 0 ? void 0 : reader.cancel().catch(()=>{}));
|
|
407
|
+
};
|
|
394
408
|
try {
|
|
395
409
|
var _wrappedConfig_onStart, _fetchResponse_body;
|
|
396
410
|
const fetchResponse = yield fetch(url, fetchConfig);
|
|
397
411
|
const validateStatus = requestConfig.validateStatus || _this.defaults.validateStatus;
|
|
398
412
|
if (!validateStatus(fetchResponse.status)) {
|
|
399
|
-
let
|
|
413
|
+
let errorData = null;
|
|
400
414
|
try {
|
|
401
|
-
|
|
402
|
-
const errorData = yield fetchResponse.json();
|
|
403
|
-
if (errorData === null || errorData === void 0 ? void 0 : (_errorData_error = errorData.error) === null || _errorData_error === void 0 ? void 0 : _errorData_error.message) {
|
|
404
|
-
message = errorData.error.message;
|
|
405
|
-
}
|
|
415
|
+
errorData = yield fetchResponse.json();
|
|
406
416
|
} catch (_error) {
|
|
407
|
-
|
|
417
|
+
errorData = null;
|
|
408
418
|
}
|
|
409
|
-
const
|
|
419
|
+
const { code, message } = resolveErrorPayload(errorData, `Request failed with status code ${fetchResponse.status}`);
|
|
420
|
+
const error = createError(message, requestConfig, code, undefined);
|
|
410
421
|
wrappedOnError(error);
|
|
411
422
|
return;
|
|
412
423
|
}
|
|
413
424
|
(_wrappedConfig_onStart = wrappedConfig.onStart) === null || _wrappedConfig_onStart === void 0 ? void 0 : _wrappedConfig_onStart.call(wrappedConfig);
|
|
414
|
-
|
|
425
|
+
reader = (_fetchResponse_body = fetchResponse.body) === null || _fetchResponse_body === void 0 ? void 0 : _fetchResponse_body.pipeThrough(new window.TextDecoderStream()).getReader();
|
|
415
426
|
if (!reader) {
|
|
416
427
|
const error = new Error('IResponse body is not readable');
|
|
417
428
|
wrappedOnError(error);
|
|
418
429
|
return;
|
|
419
430
|
}
|
|
431
|
+
controller.signal.addEventListener('abort', cancelReaderOnAbort, {
|
|
432
|
+
once: true
|
|
433
|
+
});
|
|
434
|
+
if (controller.signal.aborted) {
|
|
435
|
+
var _wrappedConfig_onDone;
|
|
436
|
+
cancelReaderOnAbort();
|
|
437
|
+
(_wrappedConfig_onDone = wrappedConfig.onDone) === null || _wrappedConfig_onDone === void 0 ? void 0 : _wrappedConfig_onDone.call(wrappedConfig);
|
|
438
|
+
return;
|
|
439
|
+
}
|
|
420
440
|
// 缓存跨行分片数据
|
|
421
441
|
let temp = '';
|
|
422
442
|
const isJson = (str)=>{
|
|
@@ -431,8 +451,8 @@ export class FetchClient {
|
|
|
431
451
|
while(true){
|
|
432
452
|
const { value, done } = yield reader.read();
|
|
433
453
|
if (done) {
|
|
434
|
-
var
|
|
435
|
-
(
|
|
454
|
+
var _wrappedConfig_onDone1;
|
|
455
|
+
(_wrappedConfig_onDone1 = wrappedConfig.onDone) === null || _wrappedConfig_onDone1 === void 0 ? void 0 : _wrappedConfig_onDone1.call(wrappedConfig);
|
|
436
456
|
break;
|
|
437
457
|
}
|
|
438
458
|
const values = (temp + value.toString()).split('\n');
|
|
@@ -451,13 +471,15 @@ export class FetchClient {
|
|
|
451
471
|
} catch (error) {
|
|
452
472
|
if (error instanceof Error) {
|
|
453
473
|
if (error.name === 'AbortError') {
|
|
454
|
-
var
|
|
455
|
-
(
|
|
474
|
+
var _wrappedConfig_onDone2;
|
|
475
|
+
(_wrappedConfig_onDone2 = wrappedConfig.onDone) === null || _wrappedConfig_onDone2 === void 0 ? void 0 : _wrappedConfig_onDone2.call(wrappedConfig);
|
|
456
476
|
return;
|
|
457
477
|
}
|
|
458
478
|
wrappedOnError(error);
|
|
459
479
|
}
|
|
460
480
|
throw error;
|
|
481
|
+
} finally{
|
|
482
|
+
controller.signal.removeEventListener('abort', cancelReaderOnAbort);
|
|
461
483
|
}
|
|
462
484
|
})();
|
|
463
485
|
}
|
|
@@ -503,6 +525,64 @@ function buildURL(url, params) {
|
|
|
503
525
|
}
|
|
504
526
|
return url;
|
|
505
527
|
}
|
|
528
|
+
/**
|
|
529
|
+
* 从错误响应体中解析业务错误信息
|
|
530
|
+
*
|
|
531
|
+
* 后端错误体存在多种形态,需逐一兼容:
|
|
532
|
+
* - 新版网关 / aidev 插件:`{ error: { code, message, data } }`
|
|
533
|
+
* - 旧版蓝鲸标准(如 blueapps 登录态失效):`{ result, code, message, data }`
|
|
534
|
+
* - DRF 原生异常:`{ detail }`
|
|
535
|
+
*/ function resolveErrorPayload(body, fallbackMessage) {
|
|
536
|
+
var _record_error;
|
|
537
|
+
const fallbackCode = 'ERR_BAD_RESPONSE';
|
|
538
|
+
if (!body || typeof body !== 'object') {
|
|
539
|
+
return {
|
|
540
|
+
code: fallbackCode,
|
|
541
|
+
message: fallbackMessage
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
const record = body;
|
|
545
|
+
if ((_record_error = record.error) === null || _record_error === void 0 ? void 0 : _record_error.message) {
|
|
546
|
+
var _record_error_code;
|
|
547
|
+
return {
|
|
548
|
+
code: (_record_error_code = record.error.code) !== null && _record_error_code !== void 0 ? _record_error_code : fallbackCode,
|
|
549
|
+
data: record.error.data,
|
|
550
|
+
message: stringifyErrorMessage(record.error.message, fallbackMessage)
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
if (record.message) {
|
|
554
|
+
var _record_code;
|
|
555
|
+
return {
|
|
556
|
+
code: (_record_code = record.code) !== null && _record_code !== void 0 ? _record_code : fallbackCode,
|
|
557
|
+
data: record.data,
|
|
558
|
+
message: stringifyErrorMessage(record.message, fallbackMessage)
|
|
559
|
+
};
|
|
560
|
+
}
|
|
561
|
+
if (record.detail) {
|
|
562
|
+
var _record_code1;
|
|
563
|
+
return {
|
|
564
|
+
code: (_record_code1 = record.code) !== null && _record_code1 !== void 0 ? _record_code1 : fallbackCode,
|
|
565
|
+
data: record.data,
|
|
566
|
+
message: stringifyErrorMessage(record.detail, fallbackMessage)
|
|
567
|
+
};
|
|
568
|
+
}
|
|
569
|
+
var _record_code2;
|
|
570
|
+
return {
|
|
571
|
+
code: (_record_code2 = record.code) !== null && _record_code2 !== void 0 ? _record_code2 : fallbackCode,
|
|
572
|
+
data: record.data,
|
|
573
|
+
message: fallbackMessage
|
|
574
|
+
};
|
|
575
|
+
}
|
|
576
|
+
/** 错误 message 可能是字符串以外的结构(如字段校验字典),统一转成可读文案 */ function stringifyErrorMessage(message, fallbackMessage) {
|
|
577
|
+
if (typeof message === 'string') {
|
|
578
|
+
return message || fallbackMessage;
|
|
579
|
+
}
|
|
580
|
+
try {
|
|
581
|
+
return JSON.stringify(message) || fallbackMessage;
|
|
582
|
+
} catch (_error) {
|
|
583
|
+
return fallbackMessage;
|
|
584
|
+
}
|
|
585
|
+
}
|
|
506
586
|
function createError(message, config, code, response) {
|
|
507
587
|
const error = new Error(message);
|
|
508
588
|
error.config = config;
|
package/dist/http/index.d.ts
CHANGED
|
@@ -12,10 +12,16 @@ export declare const useHttp: (options: IUseChatHelperOptions) => {
|
|
|
12
12
|
onError: (handler: import("./fetch").GlobalErrorHandler, options?: import("./fetch").ErrorHandlerOptions) => void;
|
|
13
13
|
agent: {
|
|
14
14
|
getAgentInfo: (config?: import("./fetch").IRequestConfig) => Promise<import("..").IAgentInfo>;
|
|
15
|
+
getLlms: (params?: import("..").ILlmListQuery, config?: import("./fetch").IRequestConfig) => Promise<import("..").ILlmItem[]>;
|
|
15
16
|
};
|
|
16
17
|
session: {
|
|
17
18
|
clearSession: (sessionCode: string, config?: import("./fetch").IRequestConfig) => Promise<unknown>;
|
|
18
|
-
getSessions: (config?: import("./fetch").IRequestConfig) => Promise<
|
|
19
|
+
getSessions: (params?: import("..").ISessionListParams, config?: import("./fetch").IRequestConfig) => Promise<{
|
|
20
|
+
page: number;
|
|
21
|
+
numPages: number;
|
|
22
|
+
count: number;
|
|
23
|
+
results: import("..").ISession<unknown, unknown>[];
|
|
24
|
+
}>;
|
|
19
25
|
plusSession: (data: import("..").ISession, config?: import("./fetch").IRequestConfig) => Promise<import("..").ISession<unknown, unknown>>;
|
|
20
26
|
modifySession: (data: import("..").ISession, config?: import("./fetch").IRequestConfig) => Promise<import("..").ISession<unknown, unknown>>;
|
|
21
27
|
deleteSession: (sessionCode: string, config?: import("./fetch").IRequestConfig) => Promise<unknown>;
|
|
@@ -33,17 +39,22 @@ export declare const useHttp: (options: IUseChatHelperOptions) => {
|
|
|
33
39
|
uploadFile: (sessionCode: string, file: File, config?: import("./fetch").IRequestConfig) => Promise<{
|
|
34
40
|
download_url?: string;
|
|
35
41
|
}>;
|
|
42
|
+
getPvFileDownloadUrl: (sessionCode: string, path: string, options?: import("..").GetPvFileDownloadUrlOptions, config?: import("./fetch").IRequestConfig) => Promise<import("..").IPvFileDownloadUrlResult>;
|
|
43
|
+
isResumeSession: (sessionCode: string, config?: import("./fetch").IRequestConfig) => Promise<boolean>;
|
|
36
44
|
};
|
|
37
45
|
message: {
|
|
38
|
-
getMessages: (sessionCode: string, limit?: number, config?: import("./fetch").IRequestConfig) => Promise<import("..").IMessage[]>;
|
|
39
|
-
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>;
|
|
40
|
-
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>;
|
|
46
|
+
getMessages: (sessionCode: string, limit?: number, config?: import("./fetch").IRequestConfig, fuzzy?: string) => Promise<import("..").IMessage[]>;
|
|
47
|
+
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 | import("..").IInterruptMessage>;
|
|
48
|
+
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 | import("..").IInterruptMessage>;
|
|
41
49
|
deleteMessage: (id: string, config?: import("./fetch").IRequestConfig) => Promise<import("..").IMessage>;
|
|
42
50
|
batchDeleteMessages: (ids: string[], config?: import("./fetch").IRequestConfig) => Promise<number>;
|
|
43
51
|
shareMessages: (sessionCode: string, contentIds: string[], expiredAt?: number, config?: import("./fetch").IRequestConfig) => Promise<import("./module/message").IShareMessagesResponse>;
|
|
44
52
|
stopChat: (sessionCode: string, config?: import("./fetch").IRequestConfig) => Promise<void>;
|
|
45
53
|
getFlowAgentTaskInfo: (taskId: number, config?: import("./fetch").IRequestConfig) => Promise<unknown>;
|
|
46
54
|
getFlowAgentTaskNodeInfo: (taskId: number, nodeId: string, config?: import("./fetch").IRequestConfig) => Promise<import("..").IFlowAgentTaskNodeInfo>;
|
|
55
|
+
retryFlowAgentTaskNode: (sessionCode: string, nodeId: string, taskId: number, config?: import("./fetch").IRequestConfig) => Promise<void>;
|
|
56
|
+
skipFlowAgentTaskNode: (sessionCode: string, nodeId: string, taskId: number, config?: import("./fetch").IRequestConfig) => Promise<void>;
|
|
57
|
+
userOperation: (sessionCode: string, operation: import("..").UserOperation, payload: import("..").IUserOperationPayload, config?: import("./fetch").IRequestConfig) => Promise<void>;
|
|
47
58
|
};
|
|
48
59
|
fetchClient: import("./fetch").FetchClient;
|
|
49
60
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ILlmItem, ILlmListQuery } from '../../agent/type';
|
|
1
2
|
import type { FetchClient, IRequestConfig } from '../fetch';
|
|
2
3
|
/**
|
|
3
4
|
* agent 相关 http 接口
|
|
@@ -6,4 +7,5 @@ import type { FetchClient, IRequestConfig } from '../fetch';
|
|
|
6
7
|
*/
|
|
7
8
|
export declare const useAgent: (fetchClient: FetchClient) => {
|
|
8
9
|
getAgentInfo: (config?: IRequestConfig) => Promise<import("../../agent/type").IAgentInfo>;
|
|
10
|
+
getLlms: (params?: ILlmListQuery, config?: IRequestConfig) => Promise<ILlmItem[]>;
|
|
9
11
|
};
|
|
@@ -22,7 +22,7 @@
|
|
|
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 { transferAgentInfoApi2AgentInfo } from '../transform/agent.ts.js';
|
|
25
|
+
*/ import { transferAgentInfoApi2AgentInfo, transferLlmListApi2LlmItems } from '../transform/agent.ts.js';
|
|
26
26
|
/**
|
|
27
27
|
* agent 相关 http 接口
|
|
28
28
|
* @param fetchClient - 请求客户端
|
|
@@ -30,7 +30,24 @@
|
|
|
30
30
|
*/ export const useAgent = (fetchClient)=>{
|
|
31
31
|
// 获取 agent 信息
|
|
32
32
|
const getAgentInfo = (config)=>fetchClient.get('agent/info/', undefined, config).then(transferAgentInfoApi2AgentInfo);
|
|
33
|
+
/**
|
|
34
|
+
* 获取当前空间可用模型列表(公开 + 空间授权 + 用户权限交集)
|
|
35
|
+
* @param params 查询参数;未传 llm_type 时默认 chat.completion
|
|
36
|
+
*/ const getLlms = (params, config)=>{
|
|
37
|
+
var _params_llm_type;
|
|
38
|
+
const query = {
|
|
39
|
+
llm_type: (_params_llm_type = params === null || params === void 0 ? void 0 : params.llm_type) !== null && _params_llm_type !== void 0 ? _params_llm_type : 'chat.completion'
|
|
40
|
+
};
|
|
41
|
+
if (params === null || params === void 0 ? void 0 : params.fuzzy) {
|
|
42
|
+
query.fuzzy = params.fuzzy;
|
|
43
|
+
}
|
|
44
|
+
if (params === null || params === void 0 ? void 0 : params.supports) {
|
|
45
|
+
query.supports = params.supports;
|
|
46
|
+
}
|
|
47
|
+
return fetchClient.get('llms/', query, config).then(transferLlmListApi2LlmItems);
|
|
48
|
+
};
|
|
33
49
|
return {
|
|
34
|
-
getAgentInfo
|
|
50
|
+
getAgentInfo,
|
|
51
|
+
getLlms
|
|
35
52
|
};
|
|
36
53
|
};
|
|
@@ -7,10 +7,16 @@ import type { FetchClient } from '../fetch';
|
|
|
7
7
|
export declare const useModule: (fetchClient: FetchClient) => {
|
|
8
8
|
agent: {
|
|
9
9
|
getAgentInfo: (config?: import("../fetch").IRequestConfig) => Promise<import("../..").IAgentInfo>;
|
|
10
|
+
getLlms: (params?: import("../..").ILlmListQuery, config?: import("../fetch").IRequestConfig) => Promise<import("../..").ILlmItem[]>;
|
|
10
11
|
};
|
|
11
12
|
session: {
|
|
12
13
|
clearSession: (sessionCode: string, config?: import("../fetch").IRequestConfig) => Promise<unknown>;
|
|
13
|
-
getSessions: (config?: import("../fetch").IRequestConfig) => Promise<
|
|
14
|
+
getSessions: (params?: import("../..").ISessionListParams, config?: import("../fetch").IRequestConfig) => Promise<{
|
|
15
|
+
page: number;
|
|
16
|
+
numPages: number;
|
|
17
|
+
count: number;
|
|
18
|
+
results: import("../..").ISession<unknown, unknown>[];
|
|
19
|
+
}>;
|
|
14
20
|
plusSession: (data: import("../..").ISession, config?: import("../fetch").IRequestConfig) => Promise<import("../..").ISession<unknown, unknown>>;
|
|
15
21
|
modifySession: (data: import("../..").ISession, config?: import("../fetch").IRequestConfig) => Promise<import("../..").ISession<unknown, unknown>>;
|
|
16
22
|
deleteSession: (sessionCode: string, config?: import("../fetch").IRequestConfig) => Promise<unknown>;
|
|
@@ -28,17 +34,22 @@ export declare const useModule: (fetchClient: FetchClient) => {
|
|
|
28
34
|
uploadFile: (sessionCode: string, file: File, config?: import("../fetch").IRequestConfig) => Promise<{
|
|
29
35
|
download_url?: string;
|
|
30
36
|
}>;
|
|
37
|
+
getPvFileDownloadUrl: (sessionCode: string, path: string, options?: import("../..").GetPvFileDownloadUrlOptions, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IPvFileDownloadUrlResult>;
|
|
38
|
+
isResumeSession: (sessionCode: string, config?: import("../fetch").IRequestConfig) => Promise<boolean>;
|
|
31
39
|
};
|
|
32
40
|
message: {
|
|
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>;
|
|
41
|
+
getMessages: (sessionCode: string, limit?: number, config?: import("../fetch").IRequestConfig, fuzzy?: string) => Promise<import("../..").IMessage[]>;
|
|
42
|
+
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 | import("../..").IInterruptMessage>;
|
|
43
|
+
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 | import("../..").IInterruptMessage>;
|
|
36
44
|
deleteMessage: (id: string, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IMessage>;
|
|
37
45
|
batchDeleteMessages: (ids: string[], config?: import("../fetch").IRequestConfig) => Promise<number>;
|
|
38
46
|
shareMessages: (sessionCode: string, contentIds: string[], expiredAt?: number, config?: import("../fetch").IRequestConfig) => Promise<import("./message").IShareMessagesResponse>;
|
|
39
47
|
stopChat: (sessionCode: string, config?: import("../fetch").IRequestConfig) => Promise<void>;
|
|
40
48
|
getFlowAgentTaskInfo: (taskId: number, config?: import("../fetch").IRequestConfig) => Promise<unknown>;
|
|
41
49
|
getFlowAgentTaskNodeInfo: (taskId: number, nodeId: string, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IFlowAgentTaskNodeInfo>;
|
|
50
|
+
retryFlowAgentTaskNode: (sessionCode: string, nodeId: string, taskId: number, config?: import("../fetch").IRequestConfig) => Promise<void>;
|
|
51
|
+
skipFlowAgentTaskNode: (sessionCode: string, nodeId: string, taskId: number, config?: import("../fetch").IRequestConfig) => Promise<void>;
|
|
52
|
+
userOperation: (sessionCode: string, operation: import("../..").UserOperation, payload: import("../..").IUserOperationPayload, config?: import("../fetch").IRequestConfig) => Promise<void>;
|
|
42
53
|
};
|
|
43
54
|
fetchClient: FetchClient;
|
|
44
55
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IFlowAgentTaskNodeInfo, IMessage } from '../../message/type';
|
|
1
|
+
import type { IFlowAgentTaskNodeInfo, IMessage, IUserOperationPayload, UserOperation } from '../../message/type';
|
|
2
2
|
import type { FetchClient, IRequestConfig } from '../fetch';
|
|
3
3
|
/**
|
|
4
4
|
* 分享消息接口返回数据
|
|
@@ -19,13 +19,16 @@ export interface IShareMessagesResponse {
|
|
|
19
19
|
* @returns message 相关 http 接口
|
|
20
20
|
*/
|
|
21
21
|
export declare const useMessage: (fetchClient: FetchClient) => {
|
|
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>;
|
|
22
|
+
getMessages: (sessionCode: string, limit?: number, config?: IRequestConfig, fuzzy?: string) => 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 | import("../../message/type").IInterruptMessage>;
|
|
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 | import("../../message/type").IInterruptMessage>;
|
|
25
25
|
deleteMessage: (id: string, config?: IRequestConfig) => Promise<IMessage>;
|
|
26
26
|
batchDeleteMessages: (ids: string[], config?: IRequestConfig) => Promise<number>;
|
|
27
27
|
shareMessages: (sessionCode: string, contentIds: string[], expiredAt?: number, config?: IRequestConfig) => Promise<IShareMessagesResponse>;
|
|
28
28
|
stopChat: (sessionCode: string, config?: IRequestConfig) => Promise<void>;
|
|
29
29
|
getFlowAgentTaskInfo: (taskId: number, config?: IRequestConfig) => Promise<unknown>;
|
|
30
30
|
getFlowAgentTaskNodeInfo: (taskId: number, nodeId: string, config?: IRequestConfig) => Promise<IFlowAgentTaskNodeInfo>;
|
|
31
|
+
retryFlowAgentTaskNode: (sessionCode: string, nodeId: string, taskId: number, config?: IRequestConfig) => Promise<void>;
|
|
32
|
+
skipFlowAgentTaskNode: (sessionCode: string, nodeId: string, taskId: number, config?: IRequestConfig) => Promise<void>;
|
|
33
|
+
userOperation: (sessionCode: string, operation: UserOperation, payload: IUserOperationPayload, config?: IRequestConfig) => Promise<void>;
|
|
31
34
|
};
|
|
@@ -56,10 +56,11 @@ import { transferMessage2MessageApi, transferMessageApi2Message } from '../trans
|
|
|
56
56
|
* @param fetchClient - 请求客户端
|
|
57
57
|
* @returns message 相关 http 接口
|
|
58
58
|
*/ export const useMessage = (fetchClient)=>{
|
|
59
|
-
//
|
|
60
|
-
const getMessages = (sessionCode, limit, config)=>fetchClient.get(`session_content/content/`, {
|
|
59
|
+
// 获取会话内容列表(fuzzy 置于末尾,避免影响既有 limit/config 调用)
|
|
60
|
+
const getMessages = (sessionCode, limit, config, fuzzy)=>fetchClient.get(`session_content/content/`, {
|
|
61
61
|
session_code: sessionCode,
|
|
62
|
-
limit
|
|
62
|
+
limit,
|
|
63
|
+
fuzzy
|
|
63
64
|
}, config).then((res)=>res.map(transferMessageApi2Message));
|
|
64
65
|
// 新增会话内容
|
|
65
66
|
const plusMessage = (data, config)=>fetchClient.post(`session_content/`, transferMessage2MessageApi(data), config).then(transferMessageApi2Message);
|
|
@@ -86,6 +87,20 @@ import { transferMessage2MessageApi, transferMessageApi2Message } from '../trans
|
|
|
86
87
|
const getFlowAgentTaskInfo = (taskId, config)=>fetchClient.get(`flow_agent/${taskId}/task_info/`, undefined, config);
|
|
87
88
|
// 获取流程引擎任务节点详情
|
|
88
89
|
const getFlowAgentTaskNodeInfo = (taskId, nodeId, config)=>fetchClient.get(`flow_agent/${taskId}/task_node_info/${nodeId}/`, undefined, config);
|
|
90
|
+
// 重试流程引擎任务节点
|
|
91
|
+
const retryFlowAgentTaskNode = (sessionCode, nodeId, taskId, config)=>fetchClient.post(`flow_agent/${sessionCode}/node/${nodeId}/retry/`, {
|
|
92
|
+
task_id: taskId
|
|
93
|
+
}, config);
|
|
94
|
+
// 跳过流程引擎任务节点
|
|
95
|
+
const skipFlowAgentTaskNode = (sessionCode, nodeId, taskId, config)=>fetchClient.post(`flow_agent/${sessionCode}/node/${nodeId}/skip/`, {
|
|
96
|
+
task_id: taskId
|
|
97
|
+
}, config);
|
|
98
|
+
// 用户操作
|
|
99
|
+
const userOperation = (sessionCode, operation, payload, config)=>fetchClient.post(`user_operation/`, {
|
|
100
|
+
session_code: sessionCode,
|
|
101
|
+
operation,
|
|
102
|
+
payload
|
|
103
|
+
}, config);
|
|
89
104
|
return {
|
|
90
105
|
getMessages,
|
|
91
106
|
plusMessage,
|
|
@@ -95,6 +110,9 @@ import { transferMessage2MessageApi, transferMessageApi2Message } from '../trans
|
|
|
95
110
|
shareMessages,
|
|
96
111
|
stopChat,
|
|
97
112
|
getFlowAgentTaskInfo,
|
|
98
|
-
getFlowAgentTaskNodeInfo
|
|
113
|
+
getFlowAgentTaskNodeInfo,
|
|
114
|
+
retryFlowAgentTaskNode,
|
|
115
|
+
skipFlowAgentTaskNode,
|
|
116
|
+
userOperation
|
|
99
117
|
};
|
|
100
118
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ISession, ISessionFeedback } from '../../session/type';
|
|
1
|
+
import type { GetPvFileDownloadUrlOptions, IPvFileDownloadUrlResult, ISession, ISessionFeedback, ISessionListParams } from '../../session/type';
|
|
2
2
|
import type { FetchClient, IRequestConfig } from '../fetch';
|
|
3
3
|
/**
|
|
4
4
|
* session 相关 http 接口
|
|
@@ -7,7 +7,12 @@ import type { FetchClient, IRequestConfig } from '../fetch';
|
|
|
7
7
|
*/
|
|
8
8
|
export declare const useSession: (fetchClient: FetchClient) => {
|
|
9
9
|
clearSession: (sessionCode: string, config?: IRequestConfig) => Promise<unknown>;
|
|
10
|
-
getSessions: (config?: IRequestConfig) => Promise<
|
|
10
|
+
getSessions: (params?: ISessionListParams, config?: IRequestConfig) => Promise<{
|
|
11
|
+
page: number;
|
|
12
|
+
numPages: number;
|
|
13
|
+
count: number;
|
|
14
|
+
results: ISession<unknown, unknown>[];
|
|
15
|
+
}>;
|
|
11
16
|
plusSession: (data: ISession, config?: IRequestConfig) => Promise<ISession<unknown, unknown>>;
|
|
12
17
|
modifySession: (data: ISession, config?: IRequestConfig) => Promise<ISession<unknown, unknown>>;
|
|
13
18
|
deleteSession: (sessionCode: string, config?: IRequestConfig) => Promise<unknown>;
|
|
@@ -25,4 +30,6 @@ export declare const useSession: (fetchClient: FetchClient) => {
|
|
|
25
30
|
uploadFile: (sessionCode: string, file: File, config?: IRequestConfig) => Promise<{
|
|
26
31
|
download_url?: string;
|
|
27
32
|
}>;
|
|
33
|
+
getPvFileDownloadUrl: (sessionCode: string, path: string, options?: GetPvFileDownloadUrlOptions, config?: IRequestConfig) => Promise<IPvFileDownloadUrlResult>;
|
|
34
|
+
isResumeSession: (sessionCode: string, config?: IRequestConfig) => Promise<boolean>;
|
|
28
35
|
};
|
|
@@ -77,6 +77,32 @@ function _object_spread_props(target, source) {
|
|
|
77
77
|
import { transferSession2SessionApi, transferSessionApi2Session, transferSessionFeedback2SessionFeedbackApi, transferSessionFeedbackApi2SessionFeedback } from '../transform/session.ts.js';
|
|
78
78
|
import { resolveRequestValue } from '../fetch/index.ts.js';
|
|
79
79
|
/** 上传接口传输用文件名前缀,与原始展示名解耦 */ const UPLOAD_FILE_NAME_PREFIX = 'upload_file';
|
|
80
|
+
/** 会话列表默认每页条数 */ const DEFAULT_PAGE_SIZE = 20;
|
|
81
|
+
const DEFAULT_PV_FILE_DOWNLOAD_EXPIRES_IN = 600;
|
|
82
|
+
const DEFAULT_PV_FILE_DOWNLOAD_TIMEOUT = 20000;
|
|
83
|
+
/**
|
|
84
|
+
* 将会话列表接口响应统一为分页结构。
|
|
85
|
+
* 兼容两类后台:
|
|
86
|
+
* 1. 分页:`{ page, num_pages, count, results }`
|
|
87
|
+
* 2. 未分页(旧接口):直接返回 `ISessionApi[]`
|
|
88
|
+
*/ const normalizeSessionListResponse = (res)=>{
|
|
89
|
+
if (Array.isArray(res)) {
|
|
90
|
+
return {
|
|
91
|
+
page: 1,
|
|
92
|
+
numPages: 1,
|
|
93
|
+
count: res.length,
|
|
94
|
+
results: res.map(transferSessionApi2Session)
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const results = Array.isArray(res === null || res === void 0 ? void 0 : res.results) ? res.results : [];
|
|
98
|
+
var _res_page, _res_num_pages, _res_count;
|
|
99
|
+
return {
|
|
100
|
+
page: (_res_page = res === null || res === void 0 ? void 0 : res.page) !== null && _res_page !== void 0 ? _res_page : 1,
|
|
101
|
+
numPages: (_res_num_pages = res === null || res === void 0 ? void 0 : res.num_pages) !== null && _res_num_pages !== void 0 ? _res_num_pages : 1,
|
|
102
|
+
count: (_res_count = res === null || res === void 0 ? void 0 : res.count) !== null && _res_count !== void 0 ? _res_count : results.length,
|
|
103
|
+
results: results.map(transferSessionApi2Session)
|
|
104
|
+
};
|
|
105
|
+
};
|
|
80
106
|
/** 从原始文件名提取 ASCII 安全扩展名,用于保留文件类型 */ const getSafeFileExtension = (fileName)=>{
|
|
81
107
|
const extension = fileName.split('.').pop();
|
|
82
108
|
if (!extension || extension === fileName) {
|
|
@@ -103,8 +129,14 @@ import { resolveRequestValue } from '../fetch/index.ts.js';
|
|
|
103
129
|
*/ export const useSession = (fetchClient)=>{
|
|
104
130
|
// 清除聊天上下文
|
|
105
131
|
const clearSession = (sessionCode, config)=>fetchClient.post(`chat_completion/${sessionCode}/clear/`, undefined, config);
|
|
106
|
-
//
|
|
107
|
-
const getSessions = (
|
|
132
|
+
// 获取会话列表(分页;兼容未支持分页的后台返回数组)
|
|
133
|
+
const getSessions = (params, config)=>{
|
|
134
|
+
var _params_page, _params_page_size;
|
|
135
|
+
return fetchClient.get(`session/`, {
|
|
136
|
+
page: (_params_page = params === null || params === void 0 ? void 0 : params.page) !== null && _params_page !== void 0 ? _params_page : 1,
|
|
137
|
+
page_size: (_params_page_size = params === null || params === void 0 ? void 0 : params.page_size) !== null && _params_page_size !== void 0 ? _params_page_size : DEFAULT_PAGE_SIZE
|
|
138
|
+
}, config).then(normalizeSessionListResponse);
|
|
139
|
+
};
|
|
108
140
|
// 新增会话
|
|
109
141
|
const plusSession = (data, config)=>fetchClient.post(`session/`, transferSession2SessionApi(data), config).then((res)=>transferSessionApi2Session(res));
|
|
110
142
|
// 修改会话
|
|
@@ -137,6 +169,24 @@ import { resolveRequestValue } from '../fetch/index.ts.js';
|
|
|
137
169
|
})
|
|
138
170
|
})));
|
|
139
171
|
};
|
|
172
|
+
/**
|
|
173
|
+
* 签发会话 PV 文件的临时 download_url / preview_url。
|
|
174
|
+
* path 为文件相对路径(artifacts 的 outputId);URLSearchParams 会自动编码,勿二次 encode。
|
|
175
|
+
*/ const getPvFileDownloadUrl = (sessionCode, path, options, config)=>{
|
|
176
|
+
var _options_expiresIn;
|
|
177
|
+
const expiresIn = (_options_expiresIn = options === null || options === void 0 ? void 0 : options.expiresIn) !== null && _options_expiresIn !== void 0 ? _options_expiresIn : DEFAULT_PV_FILE_DOWNLOAD_EXPIRES_IN;
|
|
178
|
+
var _options_timeout;
|
|
179
|
+
const timeout = (_options_timeout = options === null || options === void 0 ? void 0 : options.timeout) !== null && _options_timeout !== void 0 ? _options_timeout : DEFAULT_PV_FILE_DOWNLOAD_TIMEOUT;
|
|
180
|
+
var _config_timeout;
|
|
181
|
+
return fetchClient.get(`session/${sessionCode}/pv_files/download_url/`, {
|
|
182
|
+
expires_in: expiresIn,
|
|
183
|
+
path
|
|
184
|
+
}, _object_spread_props(_object_spread({}, config), {
|
|
185
|
+
timeout: (_config_timeout = config === null || config === void 0 ? void 0 : config.timeout) !== null && _config_timeout !== void 0 ? _config_timeout : timeout
|
|
186
|
+
}));
|
|
187
|
+
};
|
|
188
|
+
// 轮询接口,判断是否可以继续聊天
|
|
189
|
+
const isResumeSession = (sessionCode, config)=>fetchClient.get(`session/${sessionCode}/is_resume/`, undefined, config);
|
|
140
190
|
return {
|
|
141
191
|
clearSession,
|
|
142
192
|
getSessions,
|
|
@@ -148,6 +198,8 @@ import { resolveRequestValue } from '../fetch/index.ts.js';
|
|
|
148
198
|
postSessionFeedback,
|
|
149
199
|
getSessionFeedbackReasons,
|
|
150
200
|
renameSession,
|
|
151
|
-
uploadFile
|
|
201
|
+
uploadFile,
|
|
202
|
+
getPvFileDownloadUrl,
|
|
203
|
+
isResumeSession
|
|
152
204
|
};
|
|
153
205
|
};
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
import type { IAgentInfo, IAgentInfoApi } from '../../agent/type';
|
|
1
|
+
import type { IAgentInfo, IAgentInfoApi, ILlmItem, ILlmItemApi } from '../../agent/type';
|
|
2
2
|
/**
|
|
3
3
|
* 将 API 返回的 agent 信息数据转换为前端使用的 agent 信息数据
|
|
4
4
|
* @param data API 返回的 agent 信息数据
|
|
5
5
|
* @returns 前端使用的 agent 信息数据
|
|
6
6
|
*/
|
|
7
7
|
export declare const transferAgentInfoApi2AgentInfo: (data: IAgentInfoApi) => IAgentInfo;
|
|
8
|
+
/**
|
|
9
|
+
* 将 llms/ 接口单项规范化为前端 ILlmItem(补齐缺省字段,避免 UI 崩溃)
|
|
10
|
+
*/
|
|
11
|
+
export declare const transferLlmApi2LlmItem: (data: ILlmItemApi) => ILlmItem;
|
|
12
|
+
/**
|
|
13
|
+
* 将 llms/ 列表响应规范化为 ILlmItem[]
|
|
14
|
+
*/
|
|
15
|
+
export declare const transferLlmListApi2LlmItems: (data: ILlmItemApi[] | null | undefined) => ILlmItem[];
|
|
@@ -79,3 +79,30 @@
|
|
|
79
79
|
resources: data === null || data === void 0 ? void 0 : data.resources
|
|
80
80
|
};
|
|
81
81
|
};
|
|
82
|
+
/**
|
|
83
|
+
* 将 llms/ 接口单项规范化为前端 ILlmItem(补齐缺省字段,避免 UI 崩溃)
|
|
84
|
+
*/ export const transferLlmApi2LlmItem = (data)=>{
|
|
85
|
+
var _data_id, _data_llm_type, _data_icon, _data_description, _data_max_token_size, _data_property, _data_space_auth_mode, _data_user_auth_mode;
|
|
86
|
+
return {
|
|
87
|
+
id: (_data_id = data.id) !== null && _data_id !== void 0 ? _data_id : 0,
|
|
88
|
+
llm_code: data.llm_code,
|
|
89
|
+
llm_name: data.llm_name,
|
|
90
|
+
llm_type: (_data_llm_type = data.llm_type) !== null && _data_llm_type !== void 0 ? _data_llm_type : 'chat.completion',
|
|
91
|
+
icon: (_data_icon = data.icon) !== null && _data_icon !== void 0 ? _data_icon : '',
|
|
92
|
+
description: (_data_description = data.description) !== null && _data_description !== void 0 ? _data_description : '',
|
|
93
|
+
base_model: data.base_model,
|
|
94
|
+
max_token_size: (_data_max_token_size = data.max_token_size) !== null && _data_max_token_size !== void 0 ? _data_max_token_size : 0,
|
|
95
|
+
property: (_data_property = data.property) !== null && _data_property !== void 0 ? _data_property : {},
|
|
96
|
+
space_auth_mode: (_data_space_auth_mode = data.space_auth_mode) !== null && _data_space_auth_mode !== void 0 ? _data_space_auth_mode : '',
|
|
97
|
+
user_auth_mode: (_data_user_auth_mode = data.user_auth_mode) !== null && _data_user_auth_mode !== void 0 ? _data_user_auth_mode : '',
|
|
98
|
+
tag_names: data.tag_names
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* 将 llms/ 列表响应规范化为 ILlmItem[]
|
|
103
|
+
*/ export const transferLlmListApi2LlmItems = (data)=>{
|
|
104
|
+
if (!Array.isArray(data)) {
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
return data.map(transferLlmApi2LlmItem);
|
|
108
|
+
};
|