feat: manually mirror opencoze's code from bytedance

Change-Id: I09a73aadda978ad9511264a756b2ce51f5761adf
This commit is contained in:
fanlv
2025-07-20 17:36:12 +08:00
commit 890153324f
14811 changed files with 1923430 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { getIsLastGroup } from '../src/utils/get-is-last-group';
it('getIsLastGroupCorrectly', () => {
const res1 = getIsLastGroup({
meta: { isFromLatestGroup: false, sectionId: '123' },
latestSectionId: '123',
});
const res2 = getIsLastGroup({
meta: { isFromLatestGroup: true, sectionId: '123' },
latestSectionId: '123',
});
const res3 = getIsLastGroup({
meta: { isFromLatestGroup: true, sectionId: '321' },
latestSectionId: '123',
});
const res4 = getIsLastGroup({
meta: { isFromLatestGroup: false, sectionId: '321' },
latestSectionId: '123',
});
expect(res1).toBeFalsy();
expect(res2).toBeTruthy();
expect(res3).toBeFalsy();
expect(res4).toBeFalsy();
});

View File

@@ -0,0 +1,38 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { getIsPushedMessage } from '../src/utils/get-is-pushed-message';
vi.mock('@coze-common/chat-area', () => ({
getIsTriggerMessage: (param: any) =>
param.type === 'task_manual_trigger' || param.source === 1,
getIsNotificationMessage: (param: any) => param.source === 2,
getIsAsyncResultMessage: (param: any) => param.source === 3,
}));
it('getIsPushedMessageCorrectly', () => {
const res1 = getIsPushedMessage({ type: 'answer', source: 0 });
const res2 = getIsPushedMessage({ type: 'answer', source: 3 });
const res3 = getIsPushedMessage({ type: 'answer', source: 1 });
const res4 = getIsPushedMessage({ type: 'task_manual_trigger', source: 0 });
const res5 = getIsPushedMessage({ type: 'answer', source: 2 });
expect(res1).toBeFalsy();
expect(res2).toBeTruthy();
expect(res3).toBeTruthy();
expect(res4).toBeTruthy();
expect(res5).toBeTruthy();
});

View File

@@ -0,0 +1,87 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { getShowFeedback } from '../src/utils/get-show-feedback';
vi.mock('@coze-common/chat-area', () => ({
getIsTriggerMessage: (param: any) =>
param.type === 'task_manual_trigger' || param.source === 1,
getIsNotificationMessage: (param: any) => param.source === 2,
getIsAsyncResultMessage: (param: any) => param.source === 3,
}));
it('getShowFeedbackCorrectly', () => {
const res1 = getShowFeedback({
message: { type: 'answer', source: 0 },
meta: {
isFromLatestGroup: true,
sectionId: '123',
isGroupLastAnswerMessage: true,
},
latestSectionId: '123',
});
const res2 = getShowFeedback({
message: { type: 'ack', source: 0 },
meta: {
isFromLatestGroup: true,
sectionId: '123',
isGroupLastAnswerMessage: false,
},
latestSectionId: '123',
});
const res3 = getShowFeedback({
message: { type: 'answer', source: 0 },
meta: {
isFromLatestGroup: true,
sectionId: '123',
isGroupLastAnswerMessage: true,
},
latestSectionId: '321',
});
const res4 = getShowFeedback({
message: { type: 'task_manual_trigger', source: 0 },
meta: {
isFromLatestGroup: true,
sectionId: '321',
isGroupLastAnswerMessage: true,
},
latestSectionId: '321',
});
const res5 = getShowFeedback({
message: { type: 'answer', source: 2 },
meta: {
isFromLatestGroup: false,
sectionId: '321',
isGroupLastAnswerMessage: true,
},
latestSectionId: '321',
});
const res6 = getShowFeedback({
message: { type: 'answer', source: 0 },
meta: {
isFromLatestGroup: true,
sectionId: '123',
isGroupLastAnswerMessage: false,
},
latestSectionId: '123',
});
expect(res1).toBeTruthy();
expect(res2).toBeFalsy();
expect(res3).toBeFalsy();
expect(res4).toBeFalsy();
expect(res5).toBeFalsy();
expect(res6).toBeFalsy();
});

View File

@@ -0,0 +1,57 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { getShowRegenerate } from '../src/utils/get-show-regenerate';
vi.mock('@coze-common/chat-area', () => ({
getIsTriggerMessage: (param: any) =>
param.type === 'task_manual_trigger' || param.source === 1,
getIsNotificationMessage: (param: any) => param.source === 2,
getIsAsyncResultMessage: (param: any) => param.source === 3,
}));
it('getShowRegenerateCorrectly', () => {
const res1 = getShowRegenerate({
message: { type: 'answer', source: 0 },
meta: { isFromLatestGroup: true, sectionId: '123' },
latestSectionId: '123',
});
const res2 = getShowRegenerate({
message: { type: 'ack', source: 0 },
meta: { isFromLatestGroup: true, sectionId: '123' },
latestSectionId: '123',
});
const res3 = getShowRegenerate({
message: { type: 'answer', source: 0 },
meta: { isFromLatestGroup: true, sectionId: '123' },
latestSectionId: '321',
});
const res4 = getShowRegenerate({
message: { type: 'task_manual_trigger', source: 0 },
meta: { isFromLatestGroup: true, sectionId: '321' },
latestSectionId: '321',
});
const res5 = getShowRegenerate({
message: { type: 'answer', source: 2 },
meta: { isFromLatestGroup: false, sectionId: '321' },
latestSectionId: '321',
});
expect(res1).toBeTruthy();
expect(res2).toBeTruthy();
expect(res3).toBeFalsy();
expect(res4).toBeFalsy();
expect(res5).toBeFalsy();
});