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,53 @@
/*
* 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.
*/
interface DebugUrlParams {
spaceId: string;
workflowId: string;
executeId: string;
nodeId?: string;
subExecuteId?: string;
}
/**
* 计算 DebugUrl
*/
const getDebugUrl = (params: DebugUrlParams) => {
const { spaceId, workflowId, executeId, subExecuteId, nodeId } = params;
const search = new URLSearchParams({
space_id: spaceId,
workflow_id: workflowId,
execute_id: executeId,
node_id: nodeId || '',
sub_execute_id: subExecuteId || '',
});
return `/work_flow?${search.toString()}`;
};
export const gotoDebugFlow = (params: DebugUrlParams, op?: boolean) => {
if (op) {
const { workflowId, executeId, subExecuteId, nodeId } = params;
const search = new URLSearchParams({
workflow_id: workflowId,
execute_id: executeId,
node_id: nodeId || '',
sub_execute_id: subExecuteId || '',
});
window.open(`${window.location.pathname}?${search.toString()}`);
}
const url = getDebugUrl(params);
window.open(url);
};

View File

@@ -0,0 +1,19 @@
/*
* 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.
*/
export { safeFormatJsonString } from './safe-format-json-string';
export { safeJsonParse } from './safe-json-parse';
export { gotoDebugFlow } from './debug-url';

View File

@@ -0,0 +1,28 @@
/*
* 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 { isString } from 'lodash-es';
export const safeFormatJsonString = (val: unknown): any => {
if (!isString(val)) {
return val;
}
try {
return JSON.stringify(JSON.parse(val), null, 2);
} catch {
return val;
}
};

View File

@@ -0,0 +1,35 @@
/*
* 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.
*/
interface TypeSafeJSONParseOptions {
emptyValue?: any;
needReport?: boolean;
enableBigInt?: boolean;
}
export const safeJsonParse = (
v: unknown,
options?: TypeSafeJSONParseOptions,
): unknown => {
if (typeof v === 'object') {
return v;
}
try {
return JSON.parse(String(v));
} catch {
return options?.emptyValue;
}
};