@baishuyun/coze-provider 0.0.8 → 0.0.9
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/.turbo/turbo-build.log +6 -6
- package/CHANGELOG.md +6 -0
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
- package/src/coze-language-model.ts +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
> @baishuyun/coze-provider@0.0.
|
|
3
|
+
> @baishuyun/coze-provider@0.0.8 build /Users/bbbottle/Code/bs-chat-sdk/packages/coze-provider
|
|
4
4
|
> tsup --tsconfig tsconfig.json --clean
|
|
5
5
|
|
|
6
6
|
[34mCLI[39m Building entry: src/index.ts
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
[34mCLI[39m Cleaning output folder
|
|
12
12
|
[34mCJS[39m Build start
|
|
13
13
|
[34mESM[39m Build start
|
|
14
|
-
[32mESM[39m [1mdist/index.mjs [22m[32m44.72 KB[39m
|
|
15
|
-
[32mESM[39m [1mdist/index.mjs.map [22m[32m85.63 KB[39m
|
|
16
|
-
[32mESM[39m ⚡️ Build success in 19ms
|
|
17
14
|
[32mCJS[39m [1mdist/index.js [22m[32m46.81 KB[39m
|
|
18
15
|
[32mCJS[39m [1mdist/index.js.map [22m[32m86.03 KB[39m
|
|
19
|
-
[32mCJS[39m ⚡️ Build success in
|
|
16
|
+
[32mCJS[39m ⚡️ Build success in 32ms
|
|
17
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m44.72 KB[39m
|
|
18
|
+
[32mESM[39m [1mdist/index.mjs.map [22m[32m85.63 KB[39m
|
|
19
|
+
[32mESM[39m ⚡️ Build success in 32ms
|
|
20
20
|
DTS Build start
|
|
21
|
-
DTS ⚡️ Build success in
|
|
21
|
+
DTS ⚡️ Build success in 1097ms
|
|
22
22
|
DTS dist/index.d.ts 1.57 KB
|
|
23
23
|
DTS dist/index.d.mts 1.57 KB
|
package/CHANGELOG.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -409,7 +409,8 @@ var CozeLanguageModel = class {
|
|
|
409
409
|
const body = {
|
|
410
410
|
bot_id: this.config.botId,
|
|
411
411
|
auto_save_history: false,
|
|
412
|
-
user_id:
|
|
412
|
+
user_id: "7543191937730215936",
|
|
413
|
+
// || user_id || idFromToken || 'guest_' + Date.now(),
|
|
413
414
|
stream: true,
|
|
414
415
|
additional_messages: messages
|
|
415
416
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/coze-provider.ts","../src/const.ts","../src/coze-language-model.ts","../src/utils/prompt-to-model-msg.ts","../src/utils/excel2json.ts","../src/utils/create-error-stream.ts","../src/evt-sample.ts","../src/stream-trasnformer/llm-chunk-injector-transform-stream.ts","../src/stream-trasnformer/mcp-chunk-filter-transform-stream.ts","../src/utils/mcp-to-llm-chunk.ts","../src/stream-trasnformer/llm-part-transform-stream.ts","../src/stream-trasnformer/fields-json-transform-stream.ts","../src/utils/enqueue-text-info.ts","../src/utils/fields-json-rebuild/rebuild-text.ts","../src/utils/build-widget-name.ts","../src/utils/fields-json-rebuild/rebuild-number.ts","../src/utils/fields-json-rebuild/rebuild-select.ts","../src/utils/fields-json-rebuild/rebuild-radio-group.ts","../src/utils/fields-json-rebuild/rebuild-date-time.ts","../src/utils/fields-json-rebuild/default-builder.ts","../src/utils/fields-json-rebuild/rebuild-dept-group.ts","../src/utils/fields-json-rebuild/rebuild-sn.ts","../src/utils/fields-json-rebuild/rebuild-dept.ts","../src/utils/fields-json-rebuild/rebuild-user-group.ts","../src/utils/fields-json-rebuild/rebuild-data-linker.ts","../src/utils/fields-json-rebuild/rebuild-data-loader.ts","../src/utils/fields-json-rebuild/rebuild-user.ts","../src/utils/fields-json-rebuild/rebuild-signature.ts","../src/utils/fields-json-rebuild/rebuild-image.ts","../src/utils/fields-json-rebuild/rebuild-upload.ts","../src/utils/fields-json-rebuild/rebuild-checkbox-group.ts","../src/utils/fields-json-rebuild/rebuild-line.ts","../src/utils/fields-json-rebuild/rebuild-combo-checker.ts","../src/utils/fields-json-rebuild/rebuild-location.ts","../src/utils/fields-json-rebuild/rebuild-textarea.ts","../src/utils/fields-json-rebuild/rebuild-button.ts","../src/utils/fields-json-rebuild/rebuild-address.ts","../src/utils/fields-json-rebuild/rebuild-subform.ts","../src/utils/fields-json-rebuild/rebuild-data-query.ts","../src/utils/fields-json-rebuild/index.ts","../src/stream-trasnformer/suggestion-transform-stream.ts"],"sourcesContent":["export { createCoze } from \"./coze-provider\";\nexport { createFieldsJsonTransformStream } from \"./stream-trasnformer/fields-json-transform-stream\";\nexport { default as SuggestionTransformStream } from \"./stream-trasnformer/suggestion-transform-stream\";\nexport { createTextInfoEnqueuer } from \"./utils/enqueue-text-info\";\n","import {\n LanguageModelV2,\n LanguageModelV2StreamPart,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\n\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { CozeChatModelId } from './types';\nimport { VERSION } from './const';\nimport { CozeLanguageModel } from './coze-language-model';\n\nexport interface CozeProviderSettings {\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n\n botId: string;\n\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n\n extraStreamTransformers?: (() => TransformStream<LanguageModelV2StreamPart, any>)[];\n}\n\nexport interface CozeProvider extends ProviderV2 {\n (modelId: CozeChatModelId): LanguageModelV2;\n\n languageModel(modelId: CozeChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek chat model for text generation.\n*/\n chat(modelId: CozeChatModelId): LanguageModelV2;\n}\n\nexport function createCoze(\n options: CozeProviderSettings = {\n botId: '',\n }\n): CozeProvider {\n const baseURL = withoutTrailingSlash(options.baseURL);\n\n const agentPartHeader = withUserAgentSuffix(options.headers || {}, `ai-sdk/coze/${VERSION}`);\n const authorizationHeader = `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'COZE_API_KEY',\n description: '',\n })}`;\n\n const getHeaders = () => ({\n ...agentPartHeader,\n Authorization: authorizationHeader,\n 'content-type': 'application/json',\n });\n\n const createLanguageModel = (modelId: CozeChatModelId) => {\n return new CozeLanguageModel(modelId, {\n botId: options.botId,\n provider: `coze.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n extraStreamTransformers: options.extraStreamTransformers || [],\n });\n };\n\n const provider = (modelId: CozeChatModelId) => createLanguageModel(modelId);\n\n provider.specificationVersion = 'v3' as const;\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n\n return provider;\n}\n","export const VERSION = \"0.0.1\";\n","import {\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2ResponseMetadata,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2Headers,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport { CozeChatConfig } from './types';\nimport { ServerSentEventTransformStream } from 'parse-sse';\nimport { TextDecoderStream } from 'stream/web';\nimport { convertPromptToMessages } from './utils/prompt-to-model-msg';\nimport { createErrorStream } from './utils/create-error-stream';\nimport { LLMChunkInjectorTransformStream } from './stream-trasnformer/llm-chunk-injector-transform-stream';\nimport MCPChunkFilterTransformStream from './stream-trasnformer/mcp-chunk-filter-transform-stream';\nimport LLMPartTrasnformStream from './stream-trasnformer/llm-part-transform-stream';\n\nexport class CozeLanguageModel implements LanguageModelV2 {\n specificationVersion: 'v2' = 'v2';\n provider: string;\n modelId: string;\n supportedUrls: Record<string, RegExp[]> | PromiseLike<Record<string, RegExp[]>>;\n\n private readonly config: CozeChatConfig;\n\n constructor(modelId: string, config: CozeChatConfig) {\n this.modelId = modelId;\n this.provider = config.provider || 'coze';\n this.supportedUrls = config.supportedUrls?.() || {};\n this.config = config;\n }\n\n doGenerate(options: LanguageModelV2CallOptions): PromiseLike<{\n content: Array<LanguageModelV2Content>;\n finishReason: LanguageModelV2FinishReason;\n usage: LanguageModelV2Usage;\n providerMetadata?: SharedV2ProviderMetadata;\n request?: { body?: unknown };\n response?: LanguageModelV2ResponseMetadata & {\n headers?: SharedV2Headers;\n body?: unknown;\n };\n warnings: Array<LanguageModelV2CallWarning>;\n }> {\n throw new Error('Method not implemented.');\n }\n\n isVisibleMsgPart(evtData: any) {\n if (evtData.type === 'knowledge' && evtData.role === 'assistant') {\n return false;\n }\n\n return true;\n }\n\n async doStream(options: LanguageModelV2CallOptions): Promise<{\n stream: ReadableStream<LanguageModelV2StreamPart>;\n request?: { body?: unknown };\n response?: { headers?: SharedV2Headers };\n }> {\n const messages = convertPromptToMessages(options.prompt);\n const warnings: LanguageModelV2CallWarning[] = [];\n\n const url = this.config.url({\n path: '/chat',\n });\n\n const user_id = options.headers ? options.headers['x-user-id'] : '';\n const user_var = options.headers ? options.headers['x-user-var'] : '';\n const user_token = options.headers ? options.headers['x-user-token'] : '';\n const idFromToken = user_token?.slice(-16);\n\n let customVar;\n if (user_var) {\n try {\n customVar = JSON.parse(user_var);\n } catch (e) {\n console.warn('x-user-var parse error', e);\n }\n }\n\n const body = {\n bot_id: this.config.botId,\n auto_save_history: false,\n user_id: user_id || idFromToken || 'guest_' + Date.now(),\n stream: true,\n additional_messages: messages,\n };\n\n if (customVar) {\n (body as any).custom_var = customVar;\n }\n\n const headers = this.config.headers();\n\n const response = await fetch(url, {\n method: 'POST',\n headers: headers,\n credentials: 'include',\n body: JSON.stringify(body),\n });\n\n if (!response.ok || !response.body) {\n // if (true) {\n const rawError = await response.text();\n let errorDetail;\n try {\n errorDetail = JSON.parse(rawError); // 尝试解析为 JSON\n } catch {\n errorDetail = rawError; // 非 JSON 直接使用\n }\n\n // 创建一个包含错误信息的流,让 UI 层处理\n const errorMessage =\n typeof errorDetail === 'object' && errorDetail?.msg\n ? errorDetail.msg\n : `Coze API error: ${response.status} ${response.statusText}`;\n\n console.error(errorMessage);\n\n return {\n stream: createErrorStream('会话异常,请重试'),\n };\n }\n\n let externalTransformers = (this.config.extraStreamTransformers || []).map((factory) =>\n factory()\n );\n\n /// 不同阶段,可能需要不同的流处理逻辑\n const stage = options.headers ? options.headers['x-user-stage'] : '';\n const isBuildStage = stage === 'build';\n const isFillStage = stage === 'fill';\n\n const result = response.body\n // 将字节流解码为文本流\n .pipeThrough(\n new TextDecoderStream() as ReadableWritablePair<\n string | undefined,\n Uint8Array<ArrayBufferLike>\n >\n )\n // 解析为 SSE 事件流\n .pipeThrough(new ServerSentEventTransformStream())\n // 过滤不可见消息部分,比如知识库调用,和一些指令性质无需展示在聊天中的通信内容\n .pipeThrough(new MCPChunkFilterTransformStream(isBuildStage || isFillStage))\n // 补充特殊 llm chunk\n .pipeThrough(new LLMChunkInjectorTransformStream())\n // 转换为 LanguageModelV2StreamPart 格式\n .pipeThrough(new LLMPartTrasnformStream());\n\n let finalResult = result;\n\n if (externalTransformers.length > 0) {\n finalResult = externalTransformers.reduce(\n (stream, transformer) => stream.pipeThrough(transformer),\n result // 初始累积值(原始流)\n );\n }\n\n return {\n stream: finalResult as ReadableStream<LanguageModelV2StreamPart>,\n };\n }\n}\n","import {\n LanguageModelV2FilePart,\n LanguageModelV2Message,\n LanguageModelV2Prompt,\n LanguageModelV2TextPart,\n} from '@ai-sdk/provider';\nimport { RoleType } from '@coze/api';\nimport { Attachment } from '@baishuyun/types/src/chat';\nimport { excel2json } from './excel2json';\nimport { parseMultiModalMessage } from './parse-multi-modal-message';\n\nconst decoder = new TextDecoder('utf-8');\n\nconst data2csvText = (data: Uint8Array) => {\n return decoder.decode(data);\n};\n\ntype userMsg = {\n role: 'user';\n content: Array<LanguageModelV2TextPart | LanguageModelV2FilePart>;\n};\n\nconst isMultiModalMsg = (message: userMsg) =>\n message.content.some((part) => {\n return (part.providerOptions?.uploadMetadata?.contentType as string)?.startsWith('image/');\n });\n\nconst parseMessageContent = (message: LanguageModelV2Message, isMultiModalMsg?: boolean) => {\n // if (isMultiModalMsg) {\n // return parseMultiModalMessage(message as userMsg);\n // }\n\n const result = (message.content as Array<LanguageModelV2TextPart | LanguageModelV2FilePart>)\n .map((part) => {\n if (part.type === 'text') {\n return part.text;\n }\n\n const isCsv = part.mediaType === 'text/csv';\n const isTxt = part.mediaType === 'text/plain';\n const isImg = part.mediaType?.startsWith('image/');\n const isExcel =\n part.mediaType === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n\n if (isImg) {\n const meta = part.providerOptions?.uploadMetadata as Attachment;\n return meta?.parsedData as string;\n }\n\n if (isExcel) {\n return excel2json(part.data as Uint8Array);\n }\n\n if (isCsv || isTxt) {\n return data2csvText(part.data as Uint8Array);\n }\n\n return '';\n })\n .join('');\n\n return result;\n};\n\nexport const convertPromptToMessages = (messages: LanguageModelV2Prompt) => {\n return messages.map((message) => {\n // const multiModal = isMultiModalMsg(message as userMsg);\n\n switch (message.role) {\n case 'user':\n return {\n role: RoleType.User,\n // content: parseMessageContent(message, multiModal) || \"\",\n // content_type: multiModal ? \"object_string\" : \"text\",\n content: parseMessageContent(message) || '',\n content_type: 'text',\n };\n break;\n\n case 'assistant':\n return {\n role: RoleType.Assistant,\n content: (message.content as Array<LanguageModelV2TextPart>)\n .map((part: LanguageModelV2TextPart) => (part.type === 'text' ? part.text : ''))\n .join(''),\n content_type: 'text',\n };\n break;\n }\n });\n};\n","import XLSX from \"xlsx\";\n\nexport const excel2json = (file: Uint8Array) => {\n // 直接从 ArrayBuffer 读取\n const workbook = XLSX.read(file, {\n type: \"array\", // 或 'buffer'\n cellStyles: true,\n cellFormula: true,\n cellDates: true,\n cellNF: true,\n sheetStubs: true,\n bookVBA: true,\n });\n\n const result = {\n sheets: [] as {\n name: string;\n data: unknown[];\n range: string | undefined;\n merges: XLSX.Range[];\n }[],\n };\n\n workbook.SheetNames.forEach((sheetName) => {\n const worksheet = workbook.Sheets[sheetName];\n\n // 转换为二维数组(保留空单元格)\n const data = XLSX.utils.sheet_to_json(worksheet, {\n header: 1, // 使用数组格式\n defval: null, // 空单元格默认值\n raw: false, // 格式化值\n dateNF: \"yyyy-mm-dd\", // 日期格式\n });\n\n result.sheets.push({\n name: sheetName,\n data: data,\n range: worksheet[\"!ref\"],\n merges: worksheet[\"!merges\"] || [],\n });\n });\n\n return JSON.stringify(result);\n};\n","import { LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { generateId } from '@ai-sdk/provider-utils';\n\n/**\n * 创建一个包含错误信息的流\n * @param error 错误信息\n * @returns ReadableStream<LanguageModelV2StreamPart>\n */\nexport const createErrorStream = (error: string): ReadableStream<LanguageModelV2StreamPart> => {\n return new ReadableStream<LanguageModelV2StreamPart>({\n start(controller) {\n const id = generateId();\n controller.enqueue({\n id,\n type: 'text-start',\n });\n controller.enqueue({\n id,\n type: 'text-delta',\n providerMetadata: {\n raw: { data: { type: 'agent-error', error } },\n },\n delta: error,\n });\n controller.enqueue({\n type: 'text-end',\n id,\n });\n controller.close();\n },\n });\n};\n","/**\n * 事件数据取样,某些流 chunk 处理,需要用到前后的 chunk 信息,因此设计一个类缓存相邻 chunk,用于处理依据\n */\nexport class EvtSample {\n private _evtSampleMap: Map<string, any> = new Map();\n private _key1: string = \"1\";\n private _key2: string = \"2\";\n private _maxSample = 2;\n\n public addEventSample(evt: any) {\n if (this._evtSampleMap.size >= this._maxSample) {\n const evt2 = this._evtSampleMap.get(this._key2);\n this._evtSampleMap.set(this._key1, evt2);\n this._evtSampleMap.set(this._key2, evt);\n return;\n }\n\n this._evtSampleMap.set((this._evtSampleMap.size + 1).toString(), evt);\n }\n\n public getFirstSample() {\n return this._evtSampleMap.get(this._key1);\n }\n\n public getSecondSample() {\n return this._evtSampleMap.get(this._key2);\n }\n}\n","import { LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { StreamChatData } from '@coze/api';\nimport { EvtSample } from '../evt-sample';\n\n/**\n * 补充特殊的 llm chunk, reasoning-end, text-start\n */\nexport class LLMChunkInjectorTransformStream extends TransformStream<\n StreamChatData,\n | StreamChatData\n | (LanguageModelV2StreamPart & {\n disableTransform: boolean;\n })\n> {\n private eventSampleMap = new EvtSample();\n\n constructor() {\n super({\n transform: (\n part: StreamChatData,\n controller: TransformStreamDefaultController<\n StreamChatData | (LanguageModelV2StreamPart & { disableTransform: boolean })\n >\n ) => {\n // 添加事件样本(原逻辑中的addEventSample)\n this.eventSampleMap.addEventSample(part);\n\n // 处理sample1/sample2特殊判断逻辑\n const sample1 = this.eventSampleMap.getFirstSample();\n const sample2 = this.eventSampleMap.getSecondSample();\n\n // handle reasoning end\n if (\n sample1 &&\n sample2 &&\n sample1.data.reasoning_content &&\n !sample2.data.reasoning_content\n ) {\n controller.enqueue({\n disableTransform: true,\n type: 'reasoning-end',\n id: sample1.data.conversation_id,\n });\n }\n\n // handle text-start\n if (sample1 && sample2 && !sample1.data.content && sample2.data.content) {\n controller.enqueue({\n disableTransform: true,\n type: 'text-start',\n id: sample2.data.conversation_id,\n });\n }\n\n // 传递part到下一个转换流\n controller.enqueue(part);\n },\n });\n }\n}\n","import { ChatEventType, StreamChatData } from '@coze/api';\nimport { ServerSentEvent } from 'parse-sse';\n\nexport default class MCPChunkFilterTransformStream extends TransformStream {\n isVisibleMsgPart(evtData: any, part: any, omitTextEndChunk?: boolean) {\n if (evtData.type === 'knowledge' && evtData.role === 'assistant') {\n return false;\n }\n\n // Omit text-end chunk if the flag is set\n if (\n omitTextEndChunk &&\n part.event === ChatEventType.CONVERSATION_MESSAGE_COMPLETED &&\n part.data.type !== 'follow_up'\n ) {\n return false;\n }\n\n if (part.event === 'conversation.message.completed' && evtData.type == 'verbose') {\n return false;\n }\n\n return true;\n }\n\n constructor(omitTextEndChunk: boolean = false) {\n super({\n transform: (\n evt: ServerSentEvent,\n controller: TransformStreamDefaultController<StreamChatData>\n ) => {\n if (!evt) return;\n\n // 解析evt为part对象(原逻辑中的part构建)\n const part = {\n event: evt.type,\n data: JSON.parse(evt.data) || {},\n } as StreamChatData;\n\n // 过滤逻辑:仅传递满足条件的part\n if (this.isVisibleMsgPart(part.data, part, omitTextEndChunk)) {\n controller.enqueue(part);\n }\n },\n });\n }\n}\n","import { LanguageModelV2StreamPart, SharedV2ProviderMetadata } from '@ai-sdk/provider';\nimport { ChatEventType } from '@coze/api';\n\nexport const mcp2llmChunk = (part: any): LanguageModelV2StreamPart | null => {\n const fullData = JSON.stringify(part);\n\n switch (part.event) {\n case ChatEventType.CONVERSATION_CHAT_CREATED:\n return {\n type: 'raw',\n rawValue: part.data,\n };\n break;\n\n case ChatEventType.CONVERSATION_CHAT_IN_PROGRESS:\n return {\n // type: \"text-delta\",\n // id: part.data.conversation_id,\n // delta: part.data.content || \"\",\n // providerMetadata: {\n // raw: { data: fullData },\n // },\n type: 'raw',\n rawValue: part.data,\n };\n break;\n\n case ChatEventType.CONVERSATION_MESSAGE_DELTA:\n const isReasoning = Boolean(part.data.reasoning_content);\n return {\n type: isReasoning ? 'reasoning-delta' : 'text-delta',\n delta: isReasoning ? part.data.reasoning_content : part.data.content,\n id: part.data.conversation_id,\n providerMetadata: {},\n };\n break;\n\n case ChatEventType.CONVERSATION_MESSAGE_COMPLETED:\n if (part.data && part.data.type === 'follow_up') {\n return {\n type: 'raw',\n rawValue: part.data,\n };\n }\n\n if (part.status === 'completed') {\n return {\n type: 'text-end',\n id: part.data.conversation_id,\n // delta: part.data.content || part.data.reasoning_content || \"\",\n providerMetadata: {},\n };\n }\n\n return {\n type: 'raw',\n rawValue: part.data,\n };\n\n break;\n\n case ChatEventType.CONVERSATION_CHAT_COMPLETED:\n // Yield finish event with usage information\n return {\n type: 'finish',\n finishReason: 'stop',\n usage: {\n inputTokens: part.data.usage?.input_count || 0,\n outputTokens: part.data.usage?.output_count || 0,\n totalTokens: part.data.usage?.total_count || 0,\n },\n };\n break;\n\n case ChatEventType.DONE:\n // Stream completed successfully\n return {\n type: 'finish',\n finishReason: 'stop',\n usage: {\n inputTokens: part.data.usage?.input_count || 0,\n outputTokens: part.data.usage?.output_count || 0,\n totalTokens: part.data.usage?.total_count || 0,\n },\n };\n break;\n\n case ChatEventType.ERROR:\n // Handle errors\n console.error('[ERROR]', part.data);\n return {\n type: 'error',\n error: new Error(`Coze streaming error: ${JSON.stringify(part.data)}`),\n };\n\n default:\n // Handle unknown event types\n console.warn('Unknown event type:', part.event);\n return {\n type: 'error',\n error: 'Unknown event type' + part.event,\n };\n }\n\n return {\n type: 'error',\n error: 'unknown',\n };\n};\n","import { ChatEventType, StreamChatData } from '@coze/api';\nimport { mcp2llmChunk } from '../utils/mcp-to-llm-chunk';\nimport { LanguageModelV2StreamPart } from '@ai-sdk/provider';\n\nexport default class LLMPartTrasnformStream extends TransformStream {\n constructor() {\n super({\n transform: (\n part: StreamChatData | (LanguageModelV2StreamPart & { disableTransform: boolean }),\n controller: TransformStreamDefaultController<LanguageModelV2StreamPart | undefined>\n ) => {\n // Bypass transform if disableTransform flag is set\n const { disableTransform } = part as any;\n if (disableTransform) {\n controller.enqueue(part as any);\n return;\n }\n\n try {\n const chunk = mcp2llmChunk(part as any);\n if (chunk) {\n controller.enqueue(chunk as any);\n }\n } catch (error) {\n console.error('transform coze evt error');\n }\n },\n });\n }\n}\n","import { LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { JSONParser } from '@streamparser/json';\nimport { createTextInfoEnqueuer } from '../utils/enqueue-text-info';\nimport { rebuildFieldsJsonStructure } from '../utils/fields-json-rebuild';\n\nexport const createFieldsJsonTransformStream = (enableJsonParser: boolean) => {\n let parser: JSONParser;\n let id: string;\n\n const chunkGuard = (chunk: LanguageModelV2StreamPart): boolean => {\n if (!enableJsonParser) {\n return false;\n }\n\n if (chunk.type !== 'text-delta' || !('delta' in chunk)) {\n return false;\n }\n\n return true;\n };\n\n const transformer = {\n flush: (controller: TransformStreamDefaultController<any>) => {\n try {\n // parser?.end();\n controller.terminate(); // 信号通知下游可读流已关闭\n } catch (e) {\n controller.error('stop error' + e);\n }\n },\n transform: (\n chunk: LanguageModelV2StreamPart,\n controller: TransformStreamDefaultController<LanguageModelV2StreamPart>\n ) => {\n if (!parser) {\n return;\n }\n\n // console.log(\"chunk arrived\", chunk);\n\n try {\n if (chunkGuard(chunk)) {\n if ('id' in chunk && 'delta' in chunk) {\n id = chunk.id;\n parser.write(chunk.delta);\n }\n } else {\n controller.enqueue(chunk);\n }\n } catch (e) {\n controller.error(e);\n }\n },\n start: (controller: TransformStreamDefaultController<any>) => {\n parser = new JSONParser({\n paths: ['$.*'],\n });\n\n const enqueueTextDelta = enableJsonParser\n ? createTextInfoEnqueuer(controller)\n : (content: string) => {};\n\n // manualChunkForfieldsBeginTips(controller);\n // enqueueTextDelta(\"开始构建字段\");\n\n parser.onValue = (parsedInfo: any) => {\n const value = parsedInfo.value;\n\n if (value.widget) {\n value.widget.widgetName = `_widget_${Date.now()}`;\n }\n\n\n enqueueTextDelta(\n JSON.stringify(value),\n JSON.stringify({\n type: 'mcp-fields-json',\n field: rebuildFieldsJsonStructure(value),\n }),\n id\n );\n };\n\n let errorLogged = false;\n parser.onError = (err: any) => {\n // controller.enqueue({\n // type: \"error\",\n // error: \"JsonWidgetStream: JSON Parsing Error:\" + err.message,\n // });\n if (!errorLogged) {\n console.error('JsonWidgetStream: JSON Parsing Error:', err);\n errorLogged = true;\n }\n };\n\n parser.onEnd = () => {\n enqueueTextDelta(\n ' ',\n JSON.stringify({\n appendConfirm: 'save-fields',\n })\n );\n };\n },\n };\n\n return new TransformStream<LanguageModelV2StreamPart, any>(transformer);\n};\n","import { JSONValue, LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { generateId } from '@ai-sdk/provider-utils';\n\nexport type TextInfoEnqueuer = (textInfo: string, metaPayload?: JSONValue, id?: string) => void;\n\nexport const createTextInfoEnqueuer =\n (controller: TransformStreamDefaultController<LanguageModelV2StreamPart>) =>\n (\n textInfo: string,\n metaPayload?: JSONValue,\n id: string = generateId(),\n deltaOnly: boolean = false\n ) => {\n const i = id ?? generateId();\n\n const startPart: LanguageModelV2StreamPart = {\n type: 'text-start',\n id: i,\n };\n\n const deltaPart: LanguageModelV2StreamPart = {\n type: 'text-delta',\n id: i,\n delta: textInfo,\n providerMetadata: metaPayload\n ? {\n raw: { data: metaPayload },\n }\n : undefined,\n };\n\n const endPart: LanguageModelV2StreamPart = {\n type: 'text-end',\n id: i,\n };\n\n if (deltaOnly) {\n controller.enqueue(deltaPart);\n return;\n }\n\n controller.enqueue(startPart);\n controller.enqueue(deltaPart);\n controller.enqueue(endPart);\n };\n","const REG_EX_MAP: Record<string, string> = {\n 手机号码: \"^((\\\\(\\\\d{2,3}\\\\))|(\\\\d{3}\\\\-))?1\\\\d{10}$\",\n 电话号码: \"^(0[0-9]{2,3}\\\\-)?([2-9][0-9]{6,7})+(\\\\-[0-9]{1,4})?$\",\n 邮政编码: \"^\\\\d{6}$\",\n 身份证号码: \"(^\\\\d{15}$)|(^\\\\d{18}$)|(^\\\\d{17}(\\\\d|X|x)$)\",\n 邮箱: \"^([a-zA-Z0-9_\\\\.\\\\-])+\\\\@(([a-zA-Z0-9\\\\-])+\\\\.)+([a-zA-Z0-9]{2,4})+$\",\n 时分: \"(^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}$)\",\n 时分秒:\n \"(^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$)\",\n 图片链接: \"imageurl\",\n 二维码图片: \"qrcode\",\n 条形码图片: \"barcode\",\n 自定义: \"custom\",\n};\n\nexport const rebuildText = (truncatedJson: unknown) => {\n const { widget, labelStyle, label, ...rest } = (truncatedJson as any) || {};\n\n const regex = REG_EX_MAP[labelStyle] || \"\";\n return {\n widget: {\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n // triggerEvent: 0,\n customCls: null,\n height: 34,\n width: 350,\n text: null,\n value: \"\", //默认值 没有默认值的话 整个value不存在\n enable: true,\n visible: true,\n // hint: placeholder,\n allowBlank: true,\n rely: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n // regex, //格式 ^((\\(\\d{2,3}\\))|(\\d{3}\\-))?1\\d{10}$ 手机号码 ^(0[0-9]{2,3}\\-)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?$ 电话号码 ^\\d{6}$ 邮政编码 (^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$) 身份证号码 ^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$ 邮箱 (^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}$) 时分 (^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$) 时分秒 imageurl 图片链接 qrcode 二维码图片 barcode 条形码图片 custom 自定义\n noRepeat: true,\n scan: null,\n // textMode,\n generateQR: false,\n eventAlert: true,\n alertinfo: {\n icon: \"error\",\n // tip: placeholder,\n // msg: placeholder,\n },\n enterClearText: true,\n ...widget,\n regex,\n type: \"text\",\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const buildWidgetName: (prefix?: string, index?: number) => string = (\n prefix: string = \"_widget\",\n index?: number,\n) => {\n const baseName = `${prefix}_${Date.now()}`;\n\n if (index === undefined) {\n return baseName;\n }\n\n const idxLength = index.toString().length;\n const slicedBaseName = baseName.slice(0, -idxLength);\n\n return `${slicedBaseName}${index}`;\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildNumber = (value: unknown): unknown => {\n const { widget, label, ...rest } = (value as any) || {};\n return {\n widget: {\n type: \"number\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: false,\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n // regex,\n // hint: placeholder,\n noRepeat: false,\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n allowDecimals: true, //允许小数,默认值 true,已废弃\n allowNegative: true, //允许负数,默认值 true ,已废弃\n // maxNumber: max, //限定数值范围 最大值\n // minNumber: min, //限定数值范围 最小值\n displayMode: \"percent\", // 新的格式, percent 百分比 number 数值\n precision: null, //保留小数位数\n thousandsSeparator: false, //显示千分符\n notround: true, //不四舍五入\n format: \"\", //旧的格式,新的由多个属性来控制,前端代码会用其他几个参数拼接出正确的这个值。 其中结尾有% 代表百分比 ,没有%代表数字 ,然后小数点后面的0的个数代表 保留的小数位数,如果小数点后面没有0代表(如0.%),代表没有设置 保留小数位数,保留用户输入的所有小数\n afterSuffix: {\n //单位\n zh_cn: \"\", //中文的\n en_us: \"\", //英文的\n zh_tw: \"\", //繁体的\n },\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const rebuildSelect = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"combo\",\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n mode: 1,\n allowAddLinkData: false,\n // items: options,\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n customCls: null,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const rebuildRadioGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n // items: options,\n layout: \"vertical\",\n stopCancel: false,\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n customCls: null,\n value: null,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n ...widget,\n type: \"radiogroup\",\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n labelStyle: label,\n };\n};\n","export const rebuildDatetime = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"datetime\",\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n widgetName: `_widget_${Date.now()}`,\n\n widgetNameAlias: \"\",\n customCls: null,\n value: \"today\", //默认值, today 填写当前时间 ,如果是数字,如 1762957800000 ,是自定义的时间,为所选时间的时间戳的毫秒级,\n rely: null,\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n hint: \"\",\n dateLimit: {\n //日期范围\n week: {\n //可选择星期\n enable: false, //是否开启可选择星期\n value: [\n //星期 星期一到天,用1-7代表\n 1, 2, 6,\n ],\n },\n start: {\n //最早可选时间\n enable: false, //是否开启最早可选时间\n mode: \"dynamic\", //模式: dynamic 动态 static 固定值 fieldValue 字段值\n value: \"yesterday\", //限定的值: today 今天 yesterday 昨天 tomorrow 明天 7day_before 七天前 7day_after 七天后 30day_before 30天前 30day_after 30天后\n },\n end: {\n //最晚可选时间\n enable: false, //是否开启最晚可选时间\n mode: \"static\", //模式: dynamic 动态 static 固定值 fieldValue 字段值\n value: 1762093800000, //限定的值:这种数字的为 选择的固定值,时间的时间戳,毫秒级别 ,如果为 _widget_1762154537014 这种,为字段的值,这个字段需要也是日期字段,和当前这个字段是同一个 format的\n },\n },\n\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const defaultBuilder = (truncatedJson: unknown) => {\n return truncatedJson;\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDeptGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"deptgroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildSn = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"sn\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: 0,\n customCls: null,\n width: 350,\n enable: true,\n visible: true,\n // rules: rules,\n importMode: 1, //导入模式 1 excel末尾递增 2 excel最大值递增 3 excel/表单最大值比较递增\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDept = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"dept\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildUserGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"usergroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n limitWidget: null, //可选范围 由部门字段确定,如果有值 是 _widget_1762226067008 这种,另一个部门字段的id。和limit互斥,limit将为[]\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDataLinker = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n rely: {\n widgets: [],\n },\n linkFilter: {},\n allowAdd: true, //允许新增关联表数据\n refType: \"form\", //关联表的类型,只能是form\n ...widget,\n linkFields: [],\n labelStyle: label,\n type: \"linkdata\",\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nconst tmpMapFields2Fields = (mapFieldsFromTruncatedJson: unknown[]) => {\n if (!mapFieldsFromTruncatedJson || !mapFieldsFromTruncatedJson.length) {\n return mapFieldsFromTruncatedJson;\n }\n\n return mapFieldsFromTruncatedJson.map((mf: any, index: number) => {\n return {\n id: index,\n\n // name: \"_widget_1761976674767\",\n // form: \"a2f34ef882158a3e97da4ef7\",\n // tag: buildWidgetName(\"f_\", index),\n\n title: mf.field,\n text: mf.field,\n icon: `icon-widget-${mf.type}`,\n type: mf.type,\n isEditable: true,\n group: \"dimension,filter,select\",\n formula: \"\",\n };\n });\n};\n\nconst tmpMapFields2MapFields = (mapFieldsFromTruncatedJson: unknown[]) => {\n if (!mapFieldsFromTruncatedJson || !mapFieldsFromTruncatedJson.length) {\n return mapFieldsFromTruncatedJson;\n }\n\n return mapFieldsFromTruncatedJson.map((mf: any) => {\n return {\n mode: \"depend\",\n ...mf,\n };\n });\n};\n\nexport const rebuildDataLoader = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"dataload\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n width: 350,\n text: label,\n enable: true,\n visible: true,\n allowBlank: true,\n allowAddData: true, // 允许新增数据源数据\n ...widget,\n mode: \"list\", //一直是 list 应该是废弃的\n loaddataconfig: {\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n },\n dataloadmode: [\"add\", \"cover\"],\n filter: {\n cond: [],\n rel: \"and\",\n },\n defaultSort: [],\n treeFields: {},\n mode: \"list\",\n selectFields: [],\n triggerControl: null,\n triggerWidget: null,\n triggerFieldMode: \"none\",\n triggerField: null,\n forms: widget?.loaddataconfig?.forms,\n selectArg: [],\n selectRel: \"and\",\n fields: tmpMapFields2Fields(widget?.loaddataconfig?.mapFields),\n mapFields: tmpMapFields2MapFields(widget?.loaddataconfig?.mapFields),\n },\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildUser = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"user\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n limitWidget: null, //可选范围 由部门字段确定,如果有值 是 _widget_1762226067008 这种,另一个部门字段的id。和limit互斥,limit将为[]\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildSignature = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"signature\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n rely: null,\n ...widget,\n labelStyle: label,\n },\n description: null,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildImage = (truncatedJson: unknown) => {\n const { widget, label, ...rest }: any = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"image\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 100,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n download: true, //打包下载\n is_file_down: true, //操作权限 可下载\n check_image_exif: true, //照片支持查看EXIF扩展信息\n online_edit: false,\n online_edit_record: false,\n fileType: [\n //支持上传的类型,默认,不可以设置\n \"jpg\",\n \"jpeg\",\n \"png\",\n \"gif\",\n \"bmp\",\n \"tif\",\n ],\n compressed: true, //三方图片压缩\n wxOriginalComponent: true, //微信/企业微信原生拍照模式\n onlyCamera: false, //仅允许拍照上传\n preview: true, //是否可以预览 默认 不可以设置\n watermarkSwitch: true, //水印属性\n watermarkPosition: \"center\", //水印位置\n watermarkFieldTitle: true, //是否显示水印字段标题\n watermarkSize: \"14\", //水印字体大小 不可以设置\n watermarkFixedField: {},\n previewWidth: 450, //预览的宽 默认 不可以设置\n previewHeight: 450, //预览的高 默认 不可以设置\n browserCompress: true, //浏览器图片压缩\n quality: 0.7, //压缩图片比例,开启 浏览器图片压缩 后才能设置\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildUploader = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"upload\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n maxFileCount: 50, //允许多文件上传 1为不可以 50为可以\n download: true, //打包下载\n is_file_down: true, //操作权限 可下载\n check_image_exif: true, //照片支持查看EXIF扩展信息\n online_edit: true, //允许文档在线编辑\n online_edit_record: true, //是否查看协作记录\n fileSizeLimit: 10485760, //设置单个文件大小上限,单位是字节,范围 1M-20M\n // fileType,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildCheckboxGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"checkboxgroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n layout: \"vertical\",\n allowAddOptions: false, //允许成员填写时添加新选项\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildLine = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"separator\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 12,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildComboChecker = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"combocheck\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n mode: \"\",\n allowAddOptions: false, //允许成员填写时添加新选项\n allowAddLinkData: false,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildLocation = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"location\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n adjustable: true, //允许移动端微调\n lnglatVisible: true, //显示经纬度坐标\n autoLocation: true, //移动端自动触发定位\n enablePcLocation: true, //允许PC端定位并选择位置\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildTextarea = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"textarea\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: false,\n customCls: null,\n height: 140,\n width: 734,\n value: \"\",\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n autoHeight: true, //根据内容自适应高度\n maxLength: 5000, //限制输入最大字符数 不限制的话,整个maxLength不存在\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildButton = (truncatedJson: unknown = {}) => {\n const { widget, label, ...rest } = truncatedJson as any;\n\n return {\n widget: {\n type: \"button\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: 0,\n customCls: null,\n height: 36,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: false,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n funMode: \"popupreport\",\n },\n background: {\n //颜色\n mode: \"color\",\n position: \"center\",\n },\n mode: \"all\", //模式 all 扩展 popupreport 弹出报表 popupform 弹出表单 print 页面打印 popuppage 弹出外部网页\n theme: \"default\", //风格 default 默认,有边框有底色 style1 有边框无底色 none 无边框无底色\n eventAlert: false, //是否显示提醒框\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildAddress = (truncatedJson: unknown = {}) => {\n const { widget, label, ...rest } = truncatedJson as any;\n\n return {\n widget: {\n type: \"address\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n width: 720,\n enable: true,\n visible: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n needDetail: true,\n eventMode: 1, //公式联动触发模式 1 默认,省市县/详细地址内容改变都触发 2 只有省市县改变才触发 3 只有详细地址改变才触发\n seleceMapAddress: true, //开启经纬度定位\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { rebuildFieldsJsonStructure } from \".\";\nimport { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildSubform = (originObj: unknown = {}) => {\n const { widget, label, ...rest } = originObj as any;\n return {\n widget: {\n type: \"subform\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n labelStyle: label,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n items: (widget.items || []).map((item: any, index: number) => {\n const result = rebuildFieldsJsonStructure(item, true);\n\n result.widget.widgetName = buildWidgetName(\"_widget\", index);\n\n return result;\n }),\n sortable: true, //启用子表单数据排序\n allowImportV2: false, //从excel导入数据\n sticky_column: {\n //PC端冻结前 n 列\n limit: 2, //多少列 范围 1-3\n enable: true, //是否开启\n },\n sticky_column_mobile: {\n //移动端冻结前 n 列\n limit: 1, //多少列 范围 1-3\n enable: true, //是否开启\n },\n mobileStyle: \"table\", //移动端显示样式 list 纵向展开 table 横向表格\n subform_create: true, //可新增记录\n subform_insert: true, //可插入记录\n subform_edit: true, //可编辑已有记录\n subform_delete: true, //可删除已有记录\n subform_fill: true, //允许填报数据\n subform_import: true, //允许导入数据\n subform_dataload: true, //允许数据加载\n loaddataconfig: {\n //数据加载设置\n mode: \"tree\",\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n },\n },\n allowLoadData: false, //是否开启数据加载\n allowAddData: true, //允许新增数据源数据\n subformloaddataTitle: \"数据加载\", //数据加载显示的标题\n subFieldShowRules: [], //子字段显隐规则\n quick_fill: true, //从excel填报数据\n },\n description: null,\n label,\n lineWidth: 12,\n tab: null,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDataQuery = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n linkFilter: {},\n rely: {\n widgets: [],\n },\n showMode: \"one\", //显示数据条数 one 一条 many 多条\n allowAdd: true, //允许新增关联表数据,只有 refType 为 form才可以选择true\n refType: \"form\", //关联表的类型,根据 linkForm 表的类型决定的。 form 表单 etl_table 视图 aggregate_table 聚合表\n showType: \"none\", //数据显示模式 none 默认 label 标题\n addExtendSet: [],\n ...widget,\n linkFields: [],\n labelStyle: label,\n type: \"linkquery\",\n },\n description: null,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { type FieldType } from '@baishuyun/types';\nimport { rebuildText } from './rebuild-text';\nimport { rebuildNumber } from './rebuild-number';\nimport { rebuildSelect } from './rebuild-select';\nimport { rebuildRadioGroup } from './rebuild-radio-group';\nimport { rebuildDatetime } from './rebuild-date-time';\nimport { defaultBuilder } from './default-builder';\nimport { rebuildDeptGroup } from './rebuild-dept-group';\nimport { rebuildSn } from './rebuild-sn';\nimport { rebuildDept } from './rebuild-dept';\nimport { rebuildUserGroup } from './rebuild-user-group';\nimport { rebuildDataLinker } from './rebuild-data-linker';\nimport { rebuildDataLoader } from './rebuild-data-loader';\nimport { rebuildUser } from './rebuild-user';\nimport { rebuildSignature } from './rebuild-signature';\nimport { rebuildImage } from './rebuild-image';\nimport { rebuildUploader } from './rebuild-upload';\nimport { rebuildCheckboxGroup } from './rebuild-checkbox-group';\nimport { rebuildLine } from './rebuild-line';\nimport { rebuildComboChecker } from './rebuild-combo-checker';\nimport { rebuildLocation } from './rebuild-location';\nimport { rebuildTextarea } from './rebuild-textarea';\nimport { rebuildButton } from './rebuild-button';\nimport { rebuildAddress } from './rebuild-address';\nimport { rebuildSubform } from './rebuild-subform';\nimport { rebuildDataQuery } from './rebuild-data-query';\n\n/**\n * 字段类型重建工具映射\n */\nconst RebuilderMap: Record<FieldType, (origin: unknown) => unknown> = {\n address: rebuildAddress,\n button: rebuildButton,\n textarea: rebuildTextarea,\n datetime: rebuildDatetime,\n text: rebuildText,\n password: rebuildText,\n location: rebuildLocation,\n radiogroup: rebuildRadioGroup,\n radio: rebuildRadioGroup,\n combo: rebuildSelect,\n combocheck: rebuildComboChecker,\n separator: rebuildLine,\n checkboxgroup: rebuildCheckboxGroup,\n upload: rebuildUploader,\n number: rebuildNumber,\n image: rebuildImage,\n signature: rebuildSignature,\n user: rebuildUser,\n dataload: rebuildDataLoader,\n linkdata: rebuildDataLinker,\n linkquery: rebuildDataQuery,\n usergroup: rebuildUserGroup,\n subform: rebuildSubform,\n dept: rebuildDept,\n sn: rebuildSn,\n deptgroup: rebuildDeptGroup,\n unknown: defaultBuilder,\n};\n\n/**\n * 补全字段表示的 json 结构\n */\nexport const rebuildFieldsJsonStructure = (truncatedJson: any, subItemsOnly = false) => {\n // 校验基础结构\n if (!truncatedJson || !truncatedJson.widget || !truncatedJson.widget.type) {\n return truncatedJson;\n }\n\n // 根据字段类型选择对应的重建器\n const fieldType = (truncatedJson.widget.type as FieldType) || 'unknown';\n\n // 防止子表单内出现子表单字段,导致无限递归\n if (subItemsOnly && fieldType === 'subform') {\n return defaultBuilder(truncatedJson);\n }\n\n const rebuilder = RebuilderMap[fieldType] || defaultBuilder;\n\n // 执行重建\n return rebuilder(truncatedJson);\n};\n","import {\n createTextInfoEnqueuer,\n TextInfoEnqueuer,\n} from \"../utils/enqueue-text-info\";\n\nexport default class SuggestionTransformStream extends TransformStream<\n any,\n any\n> {\n constructor(enable: boolean) {\n let enqueuer: TextInfoEnqueuer;\n super({\n start(controller) {\n enqueuer = createTextInfoEnqueuer(controller);\n },\n transform(chunk, controller) {\n if (\n enable &&\n chunk.type === \"raw\" &&\n chunk.rawValue.type === \"follow_up\" &&\n enqueuer\n ) {\n enqueuer(\n chunk.rawValue.content,\n JSON.stringify({\n type: \"suggestion\",\n }),\n );\n } else {\n controller.enqueue(chunk);\n }\n },\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,sBAKO;AAEP,IAAAA,yBAKO;;;ACZA,IAAM,UAAU;;;ACavB,uBAA+C;AAC/C,iBAAkC;;;ACRlC,iBAAyB;;;ACNzB,kBAAiB;AAEV,IAAM,aAAa,CAAC,SAAqB;AAE9C,QAAM,WAAW,YAAAC,QAAK,KAAK,MAAM;AAAA,IAC/B,MAAM;AAAA;AAAA,IACN,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA,EACX,CAAC;AAED,QAAM,SAAS;AAAA,IACb,QAAQ,CAAC;AAAA,EAMX;AAEA,WAAS,WAAW,QAAQ,CAAC,cAAc;AACzC,UAAM,YAAY,SAAS,OAAO,SAAS;AAG3C,UAAM,OAAO,YAAAA,QAAK,MAAM,cAAc,WAAW;AAAA,MAC/C,QAAQ;AAAA;AAAA,MACR,QAAQ;AAAA;AAAA,MACR,KAAK;AAAA;AAAA,MACL,QAAQ;AAAA;AAAA,IACV,CAAC;AAED,WAAO,OAAO,KAAK;AAAA,MACjB,MAAM;AAAA,MACN;AAAA,MACA,OAAO,UAAU,MAAM;AAAA,MACvB,QAAQ,UAAU,SAAS,KAAK,CAAC;AAAA,IACnC,CAAC;AAAA,EACH,CAAC;AAED,SAAO,KAAK,UAAU,MAAM;AAC9B;;;ADhCA,IAAM,UAAU,IAAI,YAAY,OAAO;AAEvC,IAAM,eAAe,CAAC,SAAqB;AACzC,SAAO,QAAQ,OAAO,IAAI;AAC5B;AAYA,IAAM,sBAAsB,CAAC,SAAiC,oBAA8B;AAK1F,QAAM,SAAU,QAAQ,QACrB,IAAI,CAAC,SAAS;AACb,QAAI,KAAK,SAAS,QAAQ;AACxB,aAAO,KAAK;AAAA,IACd;AAEA,UAAM,QAAQ,KAAK,cAAc;AACjC,UAAM,QAAQ,KAAK,cAAc;AACjC,UAAM,QAAQ,KAAK,WAAW,WAAW,QAAQ;AACjD,UAAM,UACJ,KAAK,cAAc;AAErB,QAAI,OAAO;AACT,YAAM,OAAO,KAAK,iBAAiB;AACnC,aAAO,MAAM;AAAA,IACf;AAEA,QAAI,SAAS;AACX,aAAO,WAAW,KAAK,IAAkB;AAAA,IAC3C;AAEA,QAAI,SAAS,OAAO;AAClB,aAAO,aAAa,KAAK,IAAkB;AAAA,IAC7C;AAEA,WAAO;AAAA,EACT,CAAC,EACA,KAAK,EAAE;AAEV,SAAO;AACT;AAEO,IAAM,0BAA0B,CAAC,aAAoC;AAC1E,SAAO,SAAS,IAAI,CAAC,YAAY;AAG/B,YAAQ,QAAQ,MAAM;AAAA,MACpB,KAAK;AACH,eAAO;AAAA,UACL,MAAM,oBAAS;AAAA;AAAA;AAAA,UAGf,SAAS,oBAAoB,OAAO,KAAK;AAAA,UACzC,cAAc;AAAA,QAChB;AACA;AAAA,MAEF,KAAK;AACH,eAAO;AAAA,UACL,MAAM,oBAAS;AAAA,UACf,SAAU,QAAQ,QACf,IAAI,CAAC,SAAmC,KAAK,SAAS,SAAS,KAAK,OAAO,EAAG,EAC9E,KAAK,EAAE;AAAA,UACV,cAAc;AAAA,QAChB;AACA;AAAA,IACJ;AAAA,EACF,CAAC;AACH;;;AEzFA,4BAA2B;AAOpB,IAAM,oBAAoB,CAAC,UAA6D;AAC7F,SAAO,IAAI,eAA0C;AAAA,IACnD,MAAM,YAAY;AAChB,YAAM,SAAK,kCAAW;AACtB,iBAAW,QAAQ;AAAA,QACjB;AAAA,QACA,MAAM;AAAA,MACR,CAAC;AACD,iBAAW,QAAQ;AAAA,QACjB;AAAA,QACA,MAAM;AAAA,QACN,kBAAkB;AAAA,UAChB,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,MAAM,EAAE;AAAA,QAC9C;AAAA,QACA,OAAO;AAAA,MACT,CAAC;AACD,iBAAW,QAAQ;AAAA,QACjB,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AACD,iBAAW,MAAM;AAAA,IACnB;AAAA,EACF,CAAC;AACH;;;AC5BO,IAAM,YAAN,MAAgB;AAAA,EACb,gBAAkC,oBAAI,IAAI;AAAA,EAC1C,QAAgB;AAAA,EAChB,QAAgB;AAAA,EAChB,aAAa;AAAA,EAEd,eAAe,KAAU;AAC9B,QAAI,KAAK,cAAc,QAAQ,KAAK,YAAY;AAC9C,YAAM,OAAO,KAAK,cAAc,IAAI,KAAK,KAAK;AAC9C,WAAK,cAAc,IAAI,KAAK,OAAO,IAAI;AACvC,WAAK,cAAc,IAAI,KAAK,OAAO,GAAG;AACtC;AAAA,IACF;AAEA,SAAK,cAAc,KAAK,KAAK,cAAc,OAAO,GAAG,SAAS,GAAG,GAAG;AAAA,EACtE;AAAA,EAEO,iBAAiB;AACtB,WAAO,KAAK,cAAc,IAAI,KAAK,KAAK;AAAA,EAC1C;AAAA,EAEO,kBAAkB;AACvB,WAAO,KAAK,cAAc,IAAI,KAAK,KAAK;AAAA,EAC1C;AACF;;;ACpBO,IAAM,kCAAN,cAA8C,gBAMnD;AAAA,EACQ,iBAAiB,IAAI,UAAU;AAAA,EAEvC,cAAc;AACZ,UAAM;AAAA,MACJ,WAAW,CACT,MACA,eAGG;AAEH,aAAK,eAAe,eAAe,IAAI;AAGvC,cAAM,UAAU,KAAK,eAAe,eAAe;AACnD,cAAM,UAAU,KAAK,eAAe,gBAAgB;AAGpD,YACE,WACA,WACA,QAAQ,KAAK,qBACb,CAAC,QAAQ,KAAK,mBACd;AACA,qBAAW,QAAQ;AAAA,YACjB,kBAAkB;AAAA,YAClB,MAAM;AAAA,YACN,IAAI,QAAQ,KAAK;AAAA,UACnB,CAAC;AAAA,QACH;AAGA,YAAI,WAAW,WAAW,CAAC,QAAQ,KAAK,WAAW,QAAQ,KAAK,SAAS;AACvE,qBAAW,QAAQ;AAAA,YACjB,kBAAkB;AAAA,YAClB,MAAM;AAAA,YACN,IAAI,QAAQ,KAAK;AAAA,UACnB,CAAC;AAAA,QACH;AAGA,mBAAW,QAAQ,IAAI;AAAA,MACzB;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AC3DA,IAAAC,cAA8C;AAG9C,IAAqB,gCAArB,cAA2D,gBAAgB;AAAA,EACzE,iBAAiB,SAAc,MAAW,kBAA4B;AACpE,QAAI,QAAQ,SAAS,eAAe,QAAQ,SAAS,aAAa;AAChE,aAAO;AAAA,IACT;AAGA,QACE,oBACA,KAAK,UAAU,0BAAc,kCAC7B,KAAK,KAAK,SAAS,aACnB;AACA,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,UAAU,oCAAoC,QAAQ,QAAQ,WAAW;AAChF,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,YAAY,mBAA4B,OAAO;AAC7C,UAAM;AAAA,MACJ,WAAW,CACT,KACA,eACG;AACH,YAAI,CAAC,IAAK;AAGV,cAAM,OAAO;AAAA,UACX,OAAO,IAAI;AAAA,UACX,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC;AAAA,QACjC;AAGA,YAAI,KAAK,iBAAiB,KAAK,MAAM,MAAM,gBAAgB,GAAG;AAC5D,qBAAW,QAAQ,IAAI;AAAA,QACzB;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AC7CA,IAAAC,cAA8B;AAEvB,IAAM,eAAe,CAAC,SAAgD;AAC3E,QAAM,WAAW,KAAK,UAAU,IAAI;AAEpC,UAAQ,KAAK,OAAO;AAAA,IAClB,KAAK,0BAAc;AACjB,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,KAAK;AAAA,MACjB;AACA;AAAA,IAEF,KAAK,0BAAc;AACjB,aAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOL,MAAM;AAAA,QACN,UAAU,KAAK;AAAA,MACjB;AACA;AAAA,IAEF,KAAK,0BAAc;AACjB,YAAM,cAAc,QAAQ,KAAK,KAAK,iBAAiB;AACvD,aAAO;AAAA,QACL,MAAM,cAAc,oBAAoB;AAAA,QACxC,OAAO,cAAc,KAAK,KAAK,oBAAoB,KAAK,KAAK;AAAA,QAC7D,IAAI,KAAK,KAAK;AAAA,QACd,kBAAkB,CAAC;AAAA,MACrB;AACA;AAAA,IAEF,KAAK,0BAAc;AACjB,UAAI,KAAK,QAAQ,KAAK,KAAK,SAAS,aAAa;AAC/C,eAAO;AAAA,UACL,MAAM;AAAA,UACN,UAAU,KAAK;AAAA,QACjB;AAAA,MACF;AAEA,UAAI,KAAK,WAAW,aAAa;AAC/B,eAAO;AAAA,UACL,MAAM;AAAA,UACN,IAAI,KAAK,KAAK;AAAA;AAAA,UAEd,kBAAkB,CAAC;AAAA,QACrB;AAAA,MACF;AAEA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,KAAK;AAAA,MACjB;AAEA;AAAA,IAEF,KAAK,0BAAc;AAEjB,aAAO;AAAA,QACL,MAAM;AAAA,QACN,cAAc;AAAA,QACd,OAAO;AAAA,UACL,aAAa,KAAK,KAAK,OAAO,eAAe;AAAA,UAC7C,cAAc,KAAK,KAAK,OAAO,gBAAgB;AAAA,UAC/C,aAAa,KAAK,KAAK,OAAO,eAAe;AAAA,QAC/C;AAAA,MACF;AACA;AAAA,IAEF,KAAK,0BAAc;AAEjB,aAAO;AAAA,QACL,MAAM;AAAA,QACN,cAAc;AAAA,QACd,OAAO;AAAA,UACL,aAAa,KAAK,KAAK,OAAO,eAAe;AAAA,UAC7C,cAAc,KAAK,KAAK,OAAO,gBAAgB;AAAA,UAC/C,aAAa,KAAK,KAAK,OAAO,eAAe;AAAA,QAC/C;AAAA,MACF;AACA;AAAA,IAEF,KAAK,0BAAc;AAEjB,cAAQ,MAAM,WAAW,KAAK,IAAI;AAClC,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,IAAI,MAAM,yBAAyB,KAAK,UAAU,KAAK,IAAI,CAAC,EAAE;AAAA,MACvE;AAAA,IAEF;AAEE,cAAQ,KAAK,uBAAuB,KAAK,KAAK;AAC9C,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,uBAAuB,KAAK;AAAA,MACrC;AAAA,EACJ;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AACF;;;ACxGA,IAAqB,yBAArB,cAAoD,gBAAgB;AAAA,EAClE,cAAc;AACZ,UAAM;AAAA,MACJ,WAAW,CACT,MACA,eACG;AAEH,cAAM,EAAE,iBAAiB,IAAI;AAC7B,YAAI,kBAAkB;AACpB,qBAAW,QAAQ,IAAW;AAC9B;AAAA,QACF;AAEA,YAAI;AACF,gBAAM,QAAQ,aAAa,IAAW;AACtC,cAAI,OAAO;AACT,uBAAW,QAAQ,KAAY;AAAA,UACjC;AAAA,QACF,SAAS,OAAO;AACd,kBAAQ,MAAM,0BAA0B;AAAA,QAC1C;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ARRO,IAAM,oBAAN,MAAmD;AAAA,EACxD,uBAA6B;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EAEiB;AAAA,EAEjB,YAAY,SAAiB,QAAwB;AACnD,SAAK,UAAU;AACf,SAAK,WAAW,OAAO,YAAY;AACnC,SAAK,gBAAgB,OAAO,gBAAgB,KAAK,CAAC;AAClD,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,WAAW,SAWR;AACD,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAAA,EAEA,iBAAiB,SAAc;AAC7B,QAAI,QAAQ,SAAS,eAAe,QAAQ,SAAS,aAAa;AAChE,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,SAAS,SAIZ;AACD,UAAM,WAAW,wBAAwB,QAAQ,MAAM;AACvD,UAAM,WAAyC,CAAC;AAEhD,UAAM,MAAM,KAAK,OAAO,IAAI;AAAA,MAC1B,MAAM;AAAA,IACR,CAAC;AAED,UAAM,UAAU,QAAQ,UAAU,QAAQ,QAAQ,WAAW,IAAI;AACjE,UAAM,WAAW,QAAQ,UAAU,QAAQ,QAAQ,YAAY,IAAI;AACnE,UAAM,aAAa,QAAQ,UAAU,QAAQ,QAAQ,cAAc,IAAI;AACvE,UAAM,cAAc,YAAY,MAAM,GAAG;AAEzC,QAAI;AACJ,QAAI,UAAU;AACZ,UAAI;AACF,oBAAY,KAAK,MAAM,QAAQ;AAAA,MACjC,SAAS,GAAG;AACV,gBAAQ,KAAK,0BAA0B,CAAC;AAAA,MAC1C;AAAA,IACF;AAEA,UAAM,OAAO;AAAA,MACX,QAAQ,KAAK,OAAO;AAAA,MACpB,mBAAmB;AAAA,MACnB,SAAS,WAAW,eAAe,WAAW,KAAK,IAAI;AAAA,MACvD,QAAQ;AAAA,MACR,qBAAqB;AAAA,IACvB;AAEA,QAAI,WAAW;AACb,MAAC,KAAa,aAAa;AAAA,IAC7B;AAEA,UAAM,UAAU,KAAK,OAAO,QAAQ;AAEpC,UAAM,WAAW,MAAM,MAAM,KAAK;AAAA,MAChC,QAAQ;AAAA,MACR;AAAA,MACA,aAAa;AAAA,MACb,MAAM,KAAK,UAAU,IAAI;AAAA,IAC3B,CAAC;AAED,QAAI,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM;AAElC,YAAM,WAAW,MAAM,SAAS,KAAK;AACrC,UAAI;AACJ,UAAI;AACF,sBAAc,KAAK,MAAM,QAAQ;AAAA,MACnC,QAAQ;AACN,sBAAc;AAAA,MAChB;AAGA,YAAM,eACJ,OAAO,gBAAgB,YAAY,aAAa,MAC5C,YAAY,MACZ,mBAAmB,SAAS,MAAM,IAAI,SAAS,UAAU;AAE/D,cAAQ,MAAM,YAAY;AAE1B,aAAO;AAAA,QACL,QAAQ,kBAAkB,kDAAU;AAAA,MACtC;AAAA,IACF;AAEA,QAAI,wBAAwB,KAAK,OAAO,2BAA2B,CAAC,GAAG;AAAA,MAAI,CAAC,YAC1E,QAAQ;AAAA,IACV;AAGA,UAAM,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,cAAc,IAAI;AAClE,UAAM,eAAe,UAAU;AAC/B,UAAM,cAAc,UAAU;AAE9B,UAAM,SAAS,SAAS,KAErB;AAAA,MACC,IAAI,6BAAkB;AAAA,IAIxB,EAEC,YAAY,IAAI,gDAA+B,CAAC,EAEhD,YAAY,IAAI,8BAA8B,gBAAgB,WAAW,CAAC,EAE1E,YAAY,IAAI,gCAAgC,CAAC,EAEjD,YAAY,IAAI,uBAAuB,CAAC;AAE3C,QAAI,cAAc;AAElB,QAAI,qBAAqB,SAAS,GAAG;AACnC,oBAAc,qBAAqB;AAAA,QACjC,CAAC,QAAQ,gBAAgB,OAAO,YAAY,WAAW;AAAA,QACvD;AAAA;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL,QAAQ;AAAA,IACV;AAAA,EACF;AACF;;;AFtHO,SAAS,WACd,UAAgC;AAAA,EAC9B,OAAO;AACT,GACc;AACd,QAAM,cAAU,6CAAqB,QAAQ,OAAO;AAEpD,QAAM,sBAAkB,4CAAoB,QAAQ,WAAW,CAAC,GAAG,eAAe,OAAO,EAAE;AAC3F,QAAM,sBAAsB,cAAU,mCAAW;AAAA,IAC/C,QAAQ,QAAQ;AAAA,IAChB,yBAAyB;AAAA,IACzB,aAAa;AAAA,EACf,CAAC,CAAC;AAEF,QAAM,aAAa,OAAO;AAAA,IACxB,GAAG;AAAA,IACH,eAAe;AAAA,IACf,gBAAgB;AAAA,EAClB;AAEA,QAAM,sBAAsB,CAAC,YAA6B;AACxD,WAAO,IAAI,kBAAkB,SAAS;AAAA,MACpC,OAAO,QAAQ;AAAA,MACf,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,yBAAyB,QAAQ,2BAA2B,CAAC;AAAA,IAC/D,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,CAAC,YAA6B,oBAAoB,OAAO;AAE1E,WAAS,uBAAuB;AAChC,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAEhB,WAAS,iBAAiB,CAAC,YAAoB;AAC7C,UAAM,IAAI,iCAAiB,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA,EACzE;AACA,WAAS,aAAa,CAAC,YAAoB;AACzC,UAAM,IAAI,iCAAiB,EAAE,SAAS,WAAW,aAAa,CAAC;AAAA,EACjE;AACA,WAAS,qBAAqB,CAAC,YAAoB;AACjD,UAAM,IAAI,iCAAiB,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA,EACzE;AAEA,SAAO;AACT;;;AWjGA,kBAA2B;;;ACA3B,IAAAC,yBAA2B;AAIpB,IAAM,yBACX,CAAC,eACD,CACE,UACA,aACA,SAAa,mCAAW,GACxB,YAAqB,UAClB;AACH,QAAM,IAAI,UAAM,mCAAW;AAE3B,QAAM,YAAuC;AAAA,IAC3C,MAAM;AAAA,IACN,IAAI;AAAA,EACN;AAEA,QAAM,YAAuC;AAAA,IAC3C,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,kBAAkB,cACd;AAAA,MACE,KAAK,EAAE,MAAM,YAAY;AAAA,IAC3B,IACA;AAAA,EACN;AAEA,QAAM,UAAqC;AAAA,IACzC,MAAM;AAAA,IACN,IAAI;AAAA,EACN;AAEA,MAAI,WAAW;AACb,eAAW,QAAQ,SAAS;AAC5B;AAAA,EACF;AAEA,aAAW,QAAQ,SAAS;AAC5B,aAAW,QAAQ,SAAS;AAC5B,aAAW,QAAQ,OAAO;AAC5B;;;AC5CF,IAAM,aAAqC;AAAA,EACzC,0BAAM;AAAA,EACN,0BAAM;AAAA,EACN,0BAAM;AAAA,EACN,gCAAO;AAAA,EACP,cAAI;AAAA,EACJ,cAAI;AAAA,EACJ,oBACE;AAAA,EACF,0BAAM;AAAA,EACN,gCAAO;AAAA,EACP,gCAAO;AAAA,EACP,oBAAK;AACP;AAEO,IAAM,cAAc,CAAC,kBAA2B;AACrD,QAAM,EAAE,QAAQ,YAAY,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAE1E,QAAM,QAAQ,WAAW,UAAU,KAAK;AACxC,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,YAAY,WAAW,KAAK,IAAI,CAAC;AAAA,MACjC,iBAAiB;AAAA;AAAA,MAEjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA;AAAA,MAET,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA;AAAA,MAEA,UAAU;AAAA,MACV,MAAM;AAAA;AAAA,MAEN,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,WAAW;AAAA,QACT,MAAM;AAAA;AAAA;AAAA,MAGR;AAAA,MACA,gBAAgB;AAAA,MAChB,GAAG;AAAA,MACH;AAAA,MACA,MAAM;AAAA,MACN,YAAY;AAAA,IACd;AAAA;AAAA,IAEA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;ACjEO,IAAM,kBAA+D,CAC1E,SAAiB,WACjB,UACG;AACH,QAAM,WAAW,GAAG,MAAM,IAAI,KAAK,IAAI,CAAC;AAExC,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,MAAM,SAAS,EAAE;AACnC,QAAM,iBAAiB,SAAS,MAAM,GAAG,CAAC,SAAS;AAEnD,SAAO,GAAG,cAAc,GAAG,KAAK;AAClC;;;ACZO,IAAM,gBAAgB,CAAC,UAA4B;AACxD,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,SAAiB,CAAC;AACtD,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA;AAAA;AAAA,MAGA,UAAU;AAAA,MACV,WAAW;AAAA,QACT,MAAM;AAAA,QACN,KAAK;AAAA,MACP;AAAA,MACA,eAAe;AAAA;AAAA,MACf,eAAe;AAAA;AAAA;AAAA;AAAA,MAGf,aAAa;AAAA;AAAA,MACb,WAAW;AAAA;AAAA,MACX,oBAAoB;AAAA;AAAA,MACpB,UAAU;AAAA;AAAA,MACV,QAAQ;AAAA;AAAA,MACR,aAAa;AAAA;AAAA,QAEX,OAAO;AAAA;AAAA,QACP,OAAO;AAAA;AAAA,QACP,OAAO;AAAA;AAAA,MACT;AAAA,MACA,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA;AAAA,IAEA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;ACzDO,IAAM,gBAAgB,CAAC,kBAA2B;AACvD,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAC9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,kBAAkB;AAAA;AAAA,MAElB,YAAY,WAAW,KAAK,IAAI,CAAC;AAAA,MACjC,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,aAAa;AAAA;AAAA,MACb,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA;AAAA,IAEA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;ACpCO,IAAM,oBAAoB,CAAC,kBAA2B;AAC3D,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAC9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA;AAAA,MAEP,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,YAAY,WAAW,KAAK,IAAI,CAAC;AAAA,MACjC,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,aAAa;AAAA;AAAA,MACb,GAAG;AAAA,MACH,MAAM;AAAA,IACR;AAAA;AAAA,IAEA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,IACH,YAAY;AAAA,EACd;AACF;;;ACnCO,IAAM,kBAAkB,CAAC,kBAA2B;AACzD,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAE9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,YAAY,WAAW,KAAK,IAAI,CAAC;AAAA,MAEjC,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,OAAO;AAAA;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,MAAM;AAAA,MACN,WAAW;AAAA;AAAA,QAET,MAAM;AAAA;AAAA,UAEJ,QAAQ;AAAA;AAAA,UACR,OAAO;AAAA;AAAA,YAEL;AAAA,YAAG;AAAA,YAAG;AAAA,UACR;AAAA,QACF;AAAA,QACA,OAAO;AAAA;AAAA,UAEL,QAAQ;AAAA;AAAA,UACR,MAAM;AAAA;AAAA,UACN,OAAO;AAAA;AAAA,QACT;AAAA,QACA,KAAK;AAAA;AAAA,UAEH,QAAQ;AAAA;AAAA,UACR,MAAM;AAAA;AAAA,UACN,OAAO;AAAA;AAAA,QACT;AAAA,MACF;AAAA,MAEA,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;AC5DO,IAAM,iBAAiB,CAAC,kBAA2B;AACxD,SAAO;AACT;;;ACAO,IAAM,mBAAmB,CAAC,kBAA2B;AAC1D,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAE9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,OAAO,CAAC;AAAA,MACR,aAAa;AAAA,MACb,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;ACnCO,IAAM,YAAY,CAAC,kBAA2B;AACnD,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAC9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,WAAW;AAAA,MACX,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA;AAAA,MAET,YAAY;AAAA;AAAA,MACZ,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA;AAAA,IAEA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;ACvBO,IAAM,cAAc,CAAC,kBAA2B;AACrD,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAC9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,OAAO,CAAC;AAAA,MACR,aAAa;AAAA,MACb,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;AClCO,IAAM,mBAAmB,CAAC,kBAA2B;AAC1D,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAC9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,OAAO,CAAC;AAAA,MACR,aAAa;AAAA;AAAA,MACb,aAAa;AAAA,MACb,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA;AAAA,IAEA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;ACpCO,IAAM,oBAAoB,CAAC,kBAA2B;AAC3D,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAE9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,MAAM;AAAA,QACJ,SAAS,CAAC;AAAA,MACZ;AAAA,MACA,YAAY,CAAC;AAAA,MACb,UAAU;AAAA;AAAA,MACV,SAAS;AAAA;AAAA,MACT,GAAG;AAAA,MACH,YAAY,CAAC;AAAA,MACb,YAAY;AAAA,MACZ,MAAM;AAAA,IACR;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;AC3BA,IAAM,sBAAsB,CAAC,+BAA0C;AACrE,MAAI,CAAC,8BAA8B,CAAC,2BAA2B,QAAQ;AACrE,WAAO;AAAA,EACT;AAEA,SAAO,2BAA2B,IAAI,CAAC,IAAS,UAAkB;AAChE,WAAO;AAAA,MACL,IAAI;AAAA;AAAA;AAAA;AAAA,MAMJ,OAAO,GAAG;AAAA,MACV,MAAM,GAAG;AAAA,MACT,MAAM,eAAe,GAAG,IAAI;AAAA,MAC5B,MAAM,GAAG;AAAA,MACT,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,SAAS;AAAA,IACX;AAAA,EACF,CAAC;AACH;AAEA,IAAM,yBAAyB,CAAC,+BAA0C;AACxE,MAAI,CAAC,8BAA8B,CAAC,2BAA2B,QAAQ;AACrE,WAAO;AAAA,EACT;AAEA,SAAO,2BAA2B,IAAI,CAAC,OAAY;AACjD,WAAO;AAAA,MACL,MAAM;AAAA,MACN,GAAG;AAAA,IACL;AAAA,EACF,CAAC;AACH;AAEO,IAAM,oBAAoB,CAAC,kBAA2B;AAC3D,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAC9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,cAAc;AAAA;AAAA,MACd,GAAG;AAAA,MACH,MAAM;AAAA;AAAA,MACN,gBAAgB;AAAA,QACd,WAAW;AAAA,UACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,UACxC,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,kBAAkB;AAAA,QACpB;AAAA,QACA,cAAc,CAAC,OAAO,OAAO;AAAA,QAC7B,QAAQ;AAAA,UACN,MAAM,CAAC;AAAA,UACP,KAAK;AAAA,QACP;AAAA,QACA,aAAa,CAAC;AAAA,QACd,YAAY,CAAC;AAAA,QACb,MAAM;AAAA,QACN,cAAc,CAAC;AAAA,QACf,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACf,kBAAkB;AAAA,QAClB,cAAc;AAAA,QACd,OAAO,QAAQ,gBAAgB;AAAA,QAC/B,WAAW,CAAC;AAAA,QACZ,WAAW;AAAA,QACX,QAAQ,oBAAoB,QAAQ,gBAAgB,SAAS;AAAA,QAC7D,WAAW,uBAAuB,QAAQ,gBAAgB,SAAS;AAAA,MACrE;AAAA,MACA,YAAY;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;ACtFO,IAAM,cAAc,CAAC,kBAA2B;AACrD,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAC9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,OAAO,CAAC;AAAA,MACR,aAAa;AAAA;AAAA,MACb,aAAa;AAAA,MACb,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA;AAAA,IAEA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;ACpCO,IAAM,mBAAmB,CAAC,kBAA2B;AAC1D,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAC9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;ACvBO,IAAM,eAAe,CAAC,kBAA2B;AACtD,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAU,iBAAyB,CAAC;AAEnE,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA;AAAA,MACV,cAAc;AAAA;AAAA,MACd,kBAAkB;AAAA;AAAA,MAClB,aAAa;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA;AAAA,QAER;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAY;AAAA;AAAA,MACZ,qBAAqB;AAAA;AAAA,MACrB,YAAY;AAAA;AAAA,MACZ,SAAS;AAAA;AAAA,MACT,iBAAiB;AAAA;AAAA,MACjB,mBAAmB;AAAA;AAAA,MACnB,qBAAqB;AAAA;AAAA,MACrB,eAAe;AAAA;AAAA,MACf,qBAAqB,CAAC;AAAA,MACtB,cAAc;AAAA;AAAA,MACd,eAAe;AAAA;AAAA,MACf,iBAAiB;AAAA;AAAA,MACjB,SAAS;AAAA;AAAA,MACT,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;AC1DO,IAAM,kBAAkB,CAAC,kBAA2B;AACzD,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAC9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,cAAc;AAAA;AAAA,MACd,UAAU;AAAA;AAAA,MACV,cAAc;AAAA;AAAA,MACd,kBAAkB;AAAA;AAAA,MAClB,aAAa;AAAA;AAAA,MACb,oBAAoB;AAAA;AAAA,MACpB,eAAe;AAAA;AAAA;AAAA,MAEf,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA;AAAA,IAEA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;AC5BO,IAAM,uBAAuB,CAAC,kBAA2B;AAC9D,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAC9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,aAAa;AAAA;AAAA,MACb,QAAQ;AAAA,MACR,iBAAiB;AAAA;AAAA,MACjB,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;AChCO,IAAM,cAAc,CAAC,kBAA2B;AACrD,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAC9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;ACnBO,IAAM,sBAAsB,CAAC,kBAA2B;AAC7D,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAC9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,aAAa;AAAA;AAAA,MACb,MAAM;AAAA,MACN,iBAAiB;AAAA;AAAA,MACjB,kBAAkB;AAAA,MAClB,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;ACnCO,IAAM,kBAAkB,CAAC,kBAA2B;AACzD,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAE9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,YAAY;AAAA;AAAA,MACZ,eAAe;AAAA;AAAA,MACf,cAAc;AAAA;AAAA,MACd,kBAAkB;AAAA;AAAA,MAClB,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;AClCO,IAAM,kBAAkB,CAAC,kBAA2B;AACzD,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAC9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,WAAW;AAAA,QACT,MAAM;AAAA,QACN,KAAK;AAAA,MACP;AAAA,MACA,YAAY;AAAA;AAAA,MACZ,WAAW;AAAA;AAAA,MACX,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA;AAAA,IAEA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;ACzCO,IAAM,gBAAgB,CAAC,gBAAyB,CAAC,MAAM;AAC5D,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAI;AAEnC,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,YAAY;AAAA;AAAA,QAEV,MAAM;AAAA,QACN,UAAU;AAAA,MACZ;AAAA,MACA,MAAM;AAAA;AAAA,MACN,OAAO;AAAA;AAAA,MACP,YAAY;AAAA;AAAA,MACZ,WAAW;AAAA,QACT,MAAM;AAAA,QACN,KAAK;AAAA,MACP;AAAA,MAEA,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;AC3CO,IAAM,iBAAiB,CAAC,gBAAyB,CAAC,MAAM;AAC7D,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAI;AAEnC,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,YAAY;AAAA,MACZ,WAAW;AAAA;AAAA,MACX,kBAAkB;AAAA;AAAA,MAClB,GAAG;AAAA,MACH,YAAY;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;AChCO,IAAM,iBAAiB,CAAC,YAAqB,CAAC,MAAM;AACzD,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAI;AACnC,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,WAAW;AAAA,QACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,QACxC,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,SAAS;AAAA,MACX;AAAA,MACA,QAAQ,OAAO,SAAS,CAAC,GAAG,IAAI,CAAC,MAAW,UAAkB;AAC5D,cAAM,SAAS,2BAA2B,MAAM,IAAI;AAEpD,eAAO,OAAO,aAAa,gBAAgB,WAAW,KAAK;AAE3D,eAAO;AAAA,MACT,CAAC;AAAA,MACD,UAAU;AAAA;AAAA,MACV,eAAe;AAAA;AAAA,MACf,eAAe;AAAA;AAAA,QAEb,OAAO;AAAA;AAAA,QACP,QAAQ;AAAA;AAAA,MACV;AAAA,MACA,sBAAsB;AAAA;AAAA,QAEpB,OAAO;AAAA;AAAA,QACP,QAAQ;AAAA;AAAA,MACV;AAAA,MACA,aAAa;AAAA;AAAA,MACb,gBAAgB;AAAA;AAAA,MAChB,gBAAgB;AAAA;AAAA,MAChB,cAAc;AAAA;AAAA,MACd,gBAAgB;AAAA;AAAA,MAChB,cAAc;AAAA;AAAA,MACd,gBAAgB;AAAA;AAAA,MAChB,kBAAkB;AAAA;AAAA,MAClB,gBAAgB;AAAA;AAAA,QAEd,MAAM;AAAA,QACN,WAAW;AAAA,UACT,MAAM,CAAC,YAAY,UAAU,WAAW;AAAA,UACxC,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,kBAAkB;AAAA,QACpB;AAAA,MACF;AAAA,MACA,eAAe;AAAA;AAAA,MACf,cAAc;AAAA;AAAA,MACd,sBAAsB;AAAA;AAAA,MACtB,mBAAmB,CAAC;AAAA;AAAA,MACpB,YAAY;AAAA;AAAA,IACd;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,EACP;AACF;;;ACpEO,IAAM,mBAAmB,CAAC,kBAA2B;AAC1D,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAK,iBAAyB,CAAC;AAE9D,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,YAAY,gBAAgB;AAAA,MAC5B,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,YAAY,CAAC;AAAA,MACb,MAAM;AAAA,QACJ,SAAS,CAAC;AAAA,MACZ;AAAA,MACA,UAAU;AAAA;AAAA,MACV,UAAU;AAAA;AAAA,MACV,SAAS;AAAA;AAAA,MACT,UAAU;AAAA;AAAA,MACV,cAAc,CAAC;AAAA,MACf,GAAG;AAAA,MACH,YAAY,CAAC;AAAA,MACb,YAAY;AAAA,MACZ,MAAM;AAAA,IACR;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;;;ACHA,IAAM,eAAgE;AAAA,EACpE,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AAAA,EACX,SAAS;AAAA,EACT,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,SAAS;AACX;AAKO,IAAM,6BAA6B,CAAC,eAAoB,eAAe,UAAU;AAEtF,MAAI,CAAC,iBAAiB,CAAC,cAAc,UAAU,CAAC,cAAc,OAAO,MAAM;AACzE,WAAO;AAAA,EACT;AAGA,QAAM,YAAa,cAAc,OAAO,QAAsB;AAG9D,MAAI,gBAAgB,cAAc,WAAW;AAC3C,WAAO,eAAe,aAAa;AAAA,EACrC;AAEA,QAAM,YAAY,aAAa,SAAS,KAAK;AAG7C,SAAO,UAAU,aAAa;AAChC;;;A5B5EO,IAAM,kCAAkC,CAAC,qBAA8B;AAC5E,MAAI;AACJ,MAAI;AAEJ,QAAM,aAAa,CAAC,UAA8C;AAChE,QAAI,CAAC,kBAAkB;AACrB,aAAO;AAAA,IACT;AAEA,QAAI,MAAM,SAAS,gBAAgB,EAAE,WAAW,QAAQ;AACtD,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,cAAc;AAAA,IAClB,OAAO,CAAC,eAAsD;AAC5D,UAAI;AAEF,mBAAW,UAAU;AAAA,MACvB,SAAS,GAAG;AACV,mBAAW,MAAM,eAAe,CAAC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,WAAW,CACT,OACA,eACG;AACH,UAAI,CAAC,QAAQ;AACX;AAAA,MACF;AAIA,UAAI;AACF,YAAI,WAAW,KAAK,GAAG;AACrB,cAAI,QAAQ,SAAS,WAAW,OAAO;AACrC,iBAAK,MAAM;AACX,mBAAO,MAAM,MAAM,KAAK;AAAA,UAC1B;AAAA,QACF,OAAO;AACL,qBAAW,QAAQ,KAAK;AAAA,QAC1B;AAAA,MACF,SAAS,GAAG;AACV,mBAAW,MAAM,CAAC;AAAA,MACpB;AAAA,IACF;AAAA,IACA,OAAO,CAAC,eAAsD;AAC5D,eAAS,IAAI,uBAAW;AAAA,QACtB,OAAO,CAAC,KAAK;AAAA,MACf,CAAC;AAED,YAAM,mBAAmB,mBACrB,uBAAuB,UAAU,IACjC,CAAC,YAAoB;AAAA,MAAC;AAK1B,aAAO,UAAU,CAAC,eAAoB;AACpC,cAAM,QAAQ,WAAW;AAEzB,YAAI,MAAM,QAAQ;AAChB,gBAAM,OAAO,aAAa,WAAW,KAAK,IAAI,CAAC;AAAA,QACjD;AAGA;AAAA,UACE,KAAK,UAAU,KAAK;AAAA,UACpB,KAAK,UAAU;AAAA,YACb,MAAM;AAAA,YACN,OAAO,2BAA2B,KAAK;AAAA,UACzC,CAAC;AAAA,UACD;AAAA,QACF;AAAA,MACF;AAEA,UAAI,cAAc;AAClB,aAAO,UAAU,CAAC,QAAa;AAK7B,YAAI,CAAC,aAAa;AAChB,kBAAQ,MAAM,yCAAyC,GAAG;AAC1D,wBAAc;AAAA,QAChB;AAAA,MACF;AAEA,aAAO,QAAQ,MAAM;AACnB;AAAA,UACE;AAAA,UACA,KAAK,UAAU;AAAA,YACb,eAAe;AAAA,UACjB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,gBAAgD,WAAW;AACxE;;;A6BtGA,IAAqB,4BAArB,cAAuD,gBAGrD;AAAA,EACA,YAAY,QAAiB;AAC3B,QAAI;AACJ,UAAM;AAAA,MACJ,MAAM,YAAY;AAChB,mBAAW,uBAAuB,UAAU;AAAA,MAC9C;AAAA,MACA,UAAU,OAAO,YAAY;AAC3B,YACE,UACA,MAAM,SAAS,SACf,MAAM,SAAS,SAAS,eACxB,UACA;AACA;AAAA,YACE,MAAM,SAAS;AAAA,YACf,KAAK,UAAU;AAAA,cACb,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AAAA,QACF,OAAO;AACL,qBAAW,QAAQ,KAAK;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;","names":["import_provider_utils","XLSX","import_api","import_api","import_provider_utils"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/coze-provider.ts","../src/const.ts","../src/coze-language-model.ts","../src/utils/prompt-to-model-msg.ts","../src/utils/excel2json.ts","../src/utils/create-error-stream.ts","../src/evt-sample.ts","../src/stream-trasnformer/llm-chunk-injector-transform-stream.ts","../src/stream-trasnformer/mcp-chunk-filter-transform-stream.ts","../src/utils/mcp-to-llm-chunk.ts","../src/stream-trasnformer/llm-part-transform-stream.ts","../src/stream-trasnformer/fields-json-transform-stream.ts","../src/utils/enqueue-text-info.ts","../src/utils/fields-json-rebuild/rebuild-text.ts","../src/utils/build-widget-name.ts","../src/utils/fields-json-rebuild/rebuild-number.ts","../src/utils/fields-json-rebuild/rebuild-select.ts","../src/utils/fields-json-rebuild/rebuild-radio-group.ts","../src/utils/fields-json-rebuild/rebuild-date-time.ts","../src/utils/fields-json-rebuild/default-builder.ts","../src/utils/fields-json-rebuild/rebuild-dept-group.ts","../src/utils/fields-json-rebuild/rebuild-sn.ts","../src/utils/fields-json-rebuild/rebuild-dept.ts","../src/utils/fields-json-rebuild/rebuild-user-group.ts","../src/utils/fields-json-rebuild/rebuild-data-linker.ts","../src/utils/fields-json-rebuild/rebuild-data-loader.ts","../src/utils/fields-json-rebuild/rebuild-user.ts","../src/utils/fields-json-rebuild/rebuild-signature.ts","../src/utils/fields-json-rebuild/rebuild-image.ts","../src/utils/fields-json-rebuild/rebuild-upload.ts","../src/utils/fields-json-rebuild/rebuild-checkbox-group.ts","../src/utils/fields-json-rebuild/rebuild-line.ts","../src/utils/fields-json-rebuild/rebuild-combo-checker.ts","../src/utils/fields-json-rebuild/rebuild-location.ts","../src/utils/fields-json-rebuild/rebuild-textarea.ts","../src/utils/fields-json-rebuild/rebuild-button.ts","../src/utils/fields-json-rebuild/rebuild-address.ts","../src/utils/fields-json-rebuild/rebuild-subform.ts","../src/utils/fields-json-rebuild/rebuild-data-query.ts","../src/utils/fields-json-rebuild/index.ts","../src/stream-trasnformer/suggestion-transform-stream.ts"],"sourcesContent":["export { createCoze } from \"./coze-provider\";\nexport { createFieldsJsonTransformStream } from \"./stream-trasnformer/fields-json-transform-stream\";\nexport { default as SuggestionTransformStream } from \"./stream-trasnformer/suggestion-transform-stream\";\nexport { createTextInfoEnqueuer } from \"./utils/enqueue-text-info\";\n","import {\n LanguageModelV2,\n LanguageModelV2StreamPart,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\n\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { CozeChatModelId } from './types';\nimport { VERSION } from './const';\nimport { CozeLanguageModel } from './coze-language-model';\n\nexport interface CozeProviderSettings {\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n\n botId: string;\n\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n\n extraStreamTransformers?: (() => TransformStream<LanguageModelV2StreamPart, any>)[];\n}\n\nexport interface CozeProvider extends ProviderV2 {\n (modelId: CozeChatModelId): LanguageModelV2;\n\n languageModel(modelId: CozeChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek chat model for text generation.\n*/\n chat(modelId: CozeChatModelId): LanguageModelV2;\n}\n\nexport function createCoze(\n options: CozeProviderSettings = {\n botId: '',\n }\n): CozeProvider {\n const baseURL = withoutTrailingSlash(options.baseURL);\n\n const agentPartHeader = withUserAgentSuffix(options.headers || {}, `ai-sdk/coze/${VERSION}`);\n const authorizationHeader = `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'COZE_API_KEY',\n description: '',\n })}`;\n\n const getHeaders = () => ({\n ...agentPartHeader,\n Authorization: authorizationHeader,\n 'content-type': 'application/json',\n });\n\n const createLanguageModel = (modelId: CozeChatModelId) => {\n return new CozeLanguageModel(modelId, {\n botId: options.botId,\n provider: `coze.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n extraStreamTransformers: options.extraStreamTransformers || [],\n });\n };\n\n const provider = (modelId: CozeChatModelId) => createLanguageModel(modelId);\n\n provider.specificationVersion = 'v3' as const;\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n\n return provider;\n}\n","export const VERSION = \"0.0.1\";\n","import {\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2ResponseMetadata,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2Headers,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport { CozeChatConfig } from './types';\nimport { ServerSentEventTransformStream } from 'parse-sse';\nimport { TextDecoderStream } from 'stream/web';\nimport { convertPromptToMessages } from './utils/prompt-to-model-msg';\nimport { createErrorStream } from './utils/create-error-stream';\nimport { LLMChunkInjectorTransformStream } from './stream-trasnformer/llm-chunk-injector-transform-stream';\nimport MCPChunkFilterTransformStream from './stream-trasnformer/mcp-chunk-filter-transform-stream';\nimport LLMPartTrasnformStream from './stream-trasnformer/llm-part-transform-stream';\n\nexport class CozeLanguageModel implements LanguageModelV2 {\n specificationVersion: 'v2' = 'v2';\n provider: string;\n modelId: string;\n supportedUrls: Record<string, RegExp[]> | PromiseLike<Record<string, RegExp[]>>;\n\n private readonly config: CozeChatConfig;\n\n constructor(modelId: string, config: CozeChatConfig) {\n this.modelId = modelId;\n this.provider = config.provider || 'coze';\n this.supportedUrls = config.supportedUrls?.() || {};\n this.config = config;\n }\n\n doGenerate(options: LanguageModelV2CallOptions): PromiseLike<{\n content: Array<LanguageModelV2Content>;\n finishReason: LanguageModelV2FinishReason;\n usage: LanguageModelV2Usage;\n providerMetadata?: SharedV2ProviderMetadata;\n request?: { body?: unknown };\n response?: LanguageModelV2ResponseMetadata & {\n headers?: SharedV2Headers;\n body?: unknown;\n };\n warnings: Array<LanguageModelV2CallWarning>;\n }> {\n throw new Error('Method not implemented.');\n }\n\n isVisibleMsgPart(evtData: any) {\n if (evtData.type === 'knowledge' && evtData.role === 'assistant') {\n return false;\n }\n\n return true;\n }\n\n async doStream(options: LanguageModelV2CallOptions): Promise<{\n stream: ReadableStream<LanguageModelV2StreamPart>;\n request?: { body?: unknown };\n response?: { headers?: SharedV2Headers };\n }> {\n const messages = convertPromptToMessages(options.prompt);\n const warnings: LanguageModelV2CallWarning[] = [];\n\n const url = this.config.url({\n path: '/chat',\n });\n\n const user_id = options.headers ? options.headers['x-user-id'] : '';\n const user_var = options.headers ? options.headers['x-user-var'] : '';\n const user_token = options.headers ? options.headers['x-user-token'] : '';\n const idFromToken = user_token?.slice(-16);\n\n let customVar;\n if (user_var) {\n try {\n customVar = JSON.parse(user_var);\n } catch (e) {\n console.warn('x-user-var parse error', e);\n }\n }\n\n const body = {\n bot_id: this.config.botId,\n auto_save_history: false,\n user_id: '7543191937730215936', // || user_id || idFromToken || 'guest_' + Date.now(),\n stream: true,\n additional_messages: messages,\n };\n\n if (customVar) {\n (body as any).custom_var = customVar;\n }\n\n const headers = this.config.headers();\n\n const response = await fetch(url, {\n method: 'POST',\n headers: headers,\n credentials: 'include',\n body: JSON.stringify(body),\n });\n\n if (!response.ok || !response.body) {\n // if (true) {\n const rawError = await response.text();\n let errorDetail;\n try {\n errorDetail = JSON.parse(rawError); // 尝试解析为 JSON\n } catch {\n errorDetail = rawError; // 非 JSON 直接使用\n }\n\n // 创建一个包含错误信息的流,让 UI 层处理\n const errorMessage =\n typeof errorDetail === 'object' && errorDetail?.msg\n ? errorDetail.msg\n : `Coze API error: ${response.status} ${response.statusText}`;\n\n console.error(errorMessage);\n\n return {\n stream: createErrorStream('会话异常,请重试'),\n };\n }\n\n let externalTransformers = (this.config.extraStreamTransformers || []).map((factory) =>\n factory()\n );\n\n /// 不同阶段,可能需要不同的流处理逻辑\n const stage = options.headers ? options.headers['x-user-stage'] : '';\n const isBuildStage = stage === 'build';\n const isFillStage = stage === 'fill';\n\n const result = response.body\n // 将字节流解码为文本流\n .pipeThrough(\n new TextDecoderStream() as ReadableWritablePair<\n string | undefined,\n Uint8Array<ArrayBufferLike>\n >\n )\n // 解析为 SSE 事件流\n .pipeThrough(new ServerSentEventTransformStream())\n // 过滤不可见消息部分,比如知识库调用,和一些指令性质无需展示在聊天中的通信内容\n .pipeThrough(new MCPChunkFilterTransformStream(isBuildStage || isFillStage))\n // 补充特殊 llm chunk\n .pipeThrough(new LLMChunkInjectorTransformStream())\n // 转换为 LanguageModelV2StreamPart 格式\n .pipeThrough(new LLMPartTrasnformStream());\n\n let finalResult = result;\n\n if (externalTransformers.length > 0) {\n finalResult = externalTransformers.reduce(\n (stream, transformer) => stream.pipeThrough(transformer),\n result // 初始累积值(原始流)\n );\n }\n\n return {\n stream: finalResult as ReadableStream<LanguageModelV2StreamPart>,\n };\n }\n}\n","import {\n LanguageModelV2FilePart,\n LanguageModelV2Message,\n LanguageModelV2Prompt,\n LanguageModelV2TextPart,\n} from '@ai-sdk/provider';\nimport { RoleType } from '@coze/api';\nimport { Attachment } from '@baishuyun/types/src/chat';\nimport { excel2json } from './excel2json';\nimport { parseMultiModalMessage } from './parse-multi-modal-message';\n\nconst decoder = new TextDecoder('utf-8');\n\nconst data2csvText = (data: Uint8Array) => {\n return decoder.decode(data);\n};\n\ntype userMsg = {\n role: 'user';\n content: Array<LanguageModelV2TextPart | LanguageModelV2FilePart>;\n};\n\nconst isMultiModalMsg = (message: userMsg) =>\n message.content.some((part) => {\n return (part.providerOptions?.uploadMetadata?.contentType as string)?.startsWith('image/');\n });\n\nconst parseMessageContent = (message: LanguageModelV2Message, isMultiModalMsg?: boolean) => {\n // if (isMultiModalMsg) {\n // return parseMultiModalMessage(message as userMsg);\n // }\n\n const result = (message.content as Array<LanguageModelV2TextPart | LanguageModelV2FilePart>)\n .map((part) => {\n if (part.type === 'text') {\n return part.text;\n }\n\n const isCsv = part.mediaType === 'text/csv';\n const isTxt = part.mediaType === 'text/plain';\n const isImg = part.mediaType?.startsWith('image/');\n const isExcel =\n part.mediaType === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n\n if (isImg) {\n const meta = part.providerOptions?.uploadMetadata as Attachment;\n return meta?.parsedData as string;\n }\n\n if (isExcel) {\n return excel2json(part.data as Uint8Array);\n }\n\n if (isCsv || isTxt) {\n return data2csvText(part.data as Uint8Array);\n }\n\n return '';\n })\n .join('');\n\n return result;\n};\n\nexport const convertPromptToMessages = (messages: LanguageModelV2Prompt) => {\n return messages.map((message) => {\n // const multiModal = isMultiModalMsg(message as userMsg);\n\n switch (message.role) {\n case 'user':\n return {\n role: RoleType.User,\n // content: parseMessageContent(message, multiModal) || \"\",\n // content_type: multiModal ? \"object_string\" : \"text\",\n content: parseMessageContent(message) || '',\n content_type: 'text',\n };\n break;\n\n case 'assistant':\n return {\n role: RoleType.Assistant,\n content: (message.content as Array<LanguageModelV2TextPart>)\n .map((part: LanguageModelV2TextPart) => (part.type === 'text' ? part.text : ''))\n .join(''),\n content_type: 'text',\n };\n break;\n }\n });\n};\n","import XLSX from \"xlsx\";\n\nexport const excel2json = (file: Uint8Array) => {\n // 直接从 ArrayBuffer 读取\n const workbook = XLSX.read(file, {\n type: \"array\", // 或 'buffer'\n cellStyles: true,\n cellFormula: true,\n cellDates: true,\n cellNF: true,\n sheetStubs: true,\n bookVBA: true,\n });\n\n const result = {\n sheets: [] as {\n name: string;\n data: unknown[];\n range: string | undefined;\n merges: XLSX.Range[];\n }[],\n };\n\n workbook.SheetNames.forEach((sheetName) => {\n const worksheet = workbook.Sheets[sheetName];\n\n // 转换为二维数组(保留空单元格)\n const data = XLSX.utils.sheet_to_json(worksheet, {\n header: 1, // 使用数组格式\n defval: null, // 空单元格默认值\n raw: false, // 格式化值\n dateNF: \"yyyy-mm-dd\", // 日期格式\n });\n\n result.sheets.push({\n name: sheetName,\n data: data,\n range: worksheet[\"!ref\"],\n merges: worksheet[\"!merges\"] || [],\n });\n });\n\n return JSON.stringify(result);\n};\n","import { LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { generateId } from '@ai-sdk/provider-utils';\n\n/**\n * 创建一个包含错误信息的流\n * @param error 错误信息\n * @returns ReadableStream<LanguageModelV2StreamPart>\n */\nexport const createErrorStream = (error: string): ReadableStream<LanguageModelV2StreamPart> => {\n return new ReadableStream<LanguageModelV2StreamPart>({\n start(controller) {\n const id = generateId();\n controller.enqueue({\n id,\n type: 'text-start',\n });\n controller.enqueue({\n id,\n type: 'text-delta',\n providerMetadata: {\n raw: { data: { type: 'agent-error', error } },\n },\n delta: error,\n });\n controller.enqueue({\n type: 'text-end',\n id,\n });\n controller.close();\n },\n });\n};\n","/**\n * 事件数据取样,某些流 chunk 处理,需要用到前后的 chunk 信息,因此设计一个类缓存相邻 chunk,用于处理依据\n */\nexport class EvtSample {\n private _evtSampleMap: Map<string, any> = new Map();\n private _key1: string = \"1\";\n private _key2: string = \"2\";\n private _maxSample = 2;\n\n public addEventSample(evt: any) {\n if (this._evtSampleMap.size >= this._maxSample) {\n const evt2 = this._evtSampleMap.get(this._key2);\n this._evtSampleMap.set(this._key1, evt2);\n this._evtSampleMap.set(this._key2, evt);\n return;\n }\n\n this._evtSampleMap.set((this._evtSampleMap.size + 1).toString(), evt);\n }\n\n public getFirstSample() {\n return this._evtSampleMap.get(this._key1);\n }\n\n public getSecondSample() {\n return this._evtSampleMap.get(this._key2);\n }\n}\n","import { LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { StreamChatData } from '@coze/api';\nimport { EvtSample } from '../evt-sample';\n\n/**\n * 补充特殊的 llm chunk, reasoning-end, text-start\n */\nexport class LLMChunkInjectorTransformStream extends TransformStream<\n StreamChatData,\n | StreamChatData\n | (LanguageModelV2StreamPart & {\n disableTransform: boolean;\n })\n> {\n private eventSampleMap = new EvtSample();\n\n constructor() {\n super({\n transform: (\n part: StreamChatData,\n controller: TransformStreamDefaultController<\n StreamChatData | (LanguageModelV2StreamPart & { disableTransform: boolean })\n >\n ) => {\n // 添加事件样本(原逻辑中的addEventSample)\n this.eventSampleMap.addEventSample(part);\n\n // 处理sample1/sample2特殊判断逻辑\n const sample1 = this.eventSampleMap.getFirstSample();\n const sample2 = this.eventSampleMap.getSecondSample();\n\n // handle reasoning end\n if (\n sample1 &&\n sample2 &&\n sample1.data.reasoning_content &&\n !sample2.data.reasoning_content\n ) {\n controller.enqueue({\n disableTransform: true,\n type: 'reasoning-end',\n id: sample1.data.conversation_id,\n });\n }\n\n // handle text-start\n if (sample1 && sample2 && !sample1.data.content && sample2.data.content) {\n controller.enqueue({\n disableTransform: true,\n type: 'text-start',\n id: sample2.data.conversation_id,\n });\n }\n\n // 传递part到下一个转换流\n controller.enqueue(part);\n },\n });\n }\n}\n","import { ChatEventType, StreamChatData } from '@coze/api';\nimport { ServerSentEvent } from 'parse-sse';\n\nexport default class MCPChunkFilterTransformStream extends TransformStream {\n isVisibleMsgPart(evtData: any, part: any, omitTextEndChunk?: boolean) {\n if (evtData.type === 'knowledge' && evtData.role === 'assistant') {\n return false;\n }\n\n // Omit text-end chunk if the flag is set\n if (\n omitTextEndChunk &&\n part.event === ChatEventType.CONVERSATION_MESSAGE_COMPLETED &&\n part.data.type !== 'follow_up'\n ) {\n return false;\n }\n\n if (part.event === 'conversation.message.completed' && evtData.type == 'verbose') {\n return false;\n }\n\n return true;\n }\n\n constructor(omitTextEndChunk: boolean = false) {\n super({\n transform: (\n evt: ServerSentEvent,\n controller: TransformStreamDefaultController<StreamChatData>\n ) => {\n if (!evt) return;\n\n // 解析evt为part对象(原逻辑中的part构建)\n const part = {\n event: evt.type,\n data: JSON.parse(evt.data) || {},\n } as StreamChatData;\n\n // 过滤逻辑:仅传递满足条件的part\n if (this.isVisibleMsgPart(part.data, part, omitTextEndChunk)) {\n controller.enqueue(part);\n }\n },\n });\n }\n}\n","import { LanguageModelV2StreamPart, SharedV2ProviderMetadata } from '@ai-sdk/provider';\nimport { ChatEventType } from '@coze/api';\n\nexport const mcp2llmChunk = (part: any): LanguageModelV2StreamPart | null => {\n const fullData = JSON.stringify(part);\n\n switch (part.event) {\n case ChatEventType.CONVERSATION_CHAT_CREATED:\n return {\n type: 'raw',\n rawValue: part.data,\n };\n break;\n\n case ChatEventType.CONVERSATION_CHAT_IN_PROGRESS:\n return {\n // type: \"text-delta\",\n // id: part.data.conversation_id,\n // delta: part.data.content || \"\",\n // providerMetadata: {\n // raw: { data: fullData },\n // },\n type: 'raw',\n rawValue: part.data,\n };\n break;\n\n case ChatEventType.CONVERSATION_MESSAGE_DELTA:\n const isReasoning = Boolean(part.data.reasoning_content);\n return {\n type: isReasoning ? 'reasoning-delta' : 'text-delta',\n delta: isReasoning ? part.data.reasoning_content : part.data.content,\n id: part.data.conversation_id,\n providerMetadata: {},\n };\n break;\n\n case ChatEventType.CONVERSATION_MESSAGE_COMPLETED:\n if (part.data && part.data.type === 'follow_up') {\n return {\n type: 'raw',\n rawValue: part.data,\n };\n }\n\n if (part.status === 'completed') {\n return {\n type: 'text-end',\n id: part.data.conversation_id,\n // delta: part.data.content || part.data.reasoning_content || \"\",\n providerMetadata: {},\n };\n }\n\n return {\n type: 'raw',\n rawValue: part.data,\n };\n\n break;\n\n case ChatEventType.CONVERSATION_CHAT_COMPLETED:\n // Yield finish event with usage information\n return {\n type: 'finish',\n finishReason: 'stop',\n usage: {\n inputTokens: part.data.usage?.input_count || 0,\n outputTokens: part.data.usage?.output_count || 0,\n totalTokens: part.data.usage?.total_count || 0,\n },\n };\n break;\n\n case ChatEventType.DONE:\n // Stream completed successfully\n return {\n type: 'finish',\n finishReason: 'stop',\n usage: {\n inputTokens: part.data.usage?.input_count || 0,\n outputTokens: part.data.usage?.output_count || 0,\n totalTokens: part.data.usage?.total_count || 0,\n },\n };\n break;\n\n case ChatEventType.ERROR:\n // Handle errors\n console.error('[ERROR]', part.data);\n return {\n type: 'error',\n error: new Error(`Coze streaming error: ${JSON.stringify(part.data)}`),\n };\n\n default:\n // Handle unknown event types\n console.warn('Unknown event type:', part.event);\n return {\n type: 'error',\n error: 'Unknown event type' + part.event,\n };\n }\n\n return {\n type: 'error',\n error: 'unknown',\n };\n};\n","import { ChatEventType, StreamChatData } from '@coze/api';\nimport { mcp2llmChunk } from '../utils/mcp-to-llm-chunk';\nimport { LanguageModelV2StreamPart } from '@ai-sdk/provider';\n\nexport default class LLMPartTrasnformStream extends TransformStream {\n constructor() {\n super({\n transform: (\n part: StreamChatData | (LanguageModelV2StreamPart & { disableTransform: boolean }),\n controller: TransformStreamDefaultController<LanguageModelV2StreamPart | undefined>\n ) => {\n // Bypass transform if disableTransform flag is set\n const { disableTransform } = part as any;\n if (disableTransform) {\n controller.enqueue(part as any);\n return;\n }\n\n try {\n const chunk = mcp2llmChunk(part as any);\n if (chunk) {\n controller.enqueue(chunk as any);\n }\n } catch (error) {\n console.error('transform coze evt error');\n }\n },\n });\n }\n}\n","import { LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { JSONParser } from '@streamparser/json';\nimport { createTextInfoEnqueuer } from '../utils/enqueue-text-info';\nimport { rebuildFieldsJsonStructure } from '../utils/fields-json-rebuild';\n\nexport const createFieldsJsonTransformStream = (enableJsonParser: boolean) => {\n let parser: JSONParser;\n let id: string;\n\n const chunkGuard = (chunk: LanguageModelV2StreamPart): boolean => {\n if (!enableJsonParser) {\n return false;\n }\n\n if (chunk.type !== 'text-delta' || !('delta' in chunk)) {\n return false;\n }\n\n return true;\n };\n\n const transformer = {\n flush: (controller: TransformStreamDefaultController<any>) => {\n try {\n // parser?.end();\n controller.terminate(); // 信号通知下游可读流已关闭\n } catch (e) {\n controller.error('stop error' + e);\n }\n },\n transform: (\n chunk: LanguageModelV2StreamPart,\n controller: TransformStreamDefaultController<LanguageModelV2StreamPart>\n ) => {\n if (!parser) {\n return;\n }\n\n // console.log(\"chunk arrived\", chunk);\n\n try {\n if (chunkGuard(chunk)) {\n if ('id' in chunk && 'delta' in chunk) {\n id = chunk.id;\n parser.write(chunk.delta);\n }\n } else {\n controller.enqueue(chunk);\n }\n } catch (e) {\n controller.error(e);\n }\n },\n start: (controller: TransformStreamDefaultController<any>) => {\n parser = new JSONParser({\n paths: ['$.*'],\n });\n\n const enqueueTextDelta = enableJsonParser\n ? createTextInfoEnqueuer(controller)\n : (content: string) => {};\n\n // manualChunkForfieldsBeginTips(controller);\n // enqueueTextDelta(\"开始构建字段\");\n\n parser.onValue = (parsedInfo: any) => {\n const value = parsedInfo.value;\n\n if (value.widget) {\n value.widget.widgetName = `_widget_${Date.now()}`;\n }\n\n\n enqueueTextDelta(\n JSON.stringify(value),\n JSON.stringify({\n type: 'mcp-fields-json',\n field: rebuildFieldsJsonStructure(value),\n }),\n id\n );\n };\n\n let errorLogged = false;\n parser.onError = (err: any) => {\n // controller.enqueue({\n // type: \"error\",\n // error: \"JsonWidgetStream: JSON Parsing Error:\" + err.message,\n // });\n if (!errorLogged) {\n console.error('JsonWidgetStream: JSON Parsing Error:', err);\n errorLogged = true;\n }\n };\n\n parser.onEnd = () => {\n enqueueTextDelta(\n ' ',\n JSON.stringify({\n appendConfirm: 'save-fields',\n })\n );\n };\n },\n };\n\n return new TransformStream<LanguageModelV2StreamPart, any>(transformer);\n};\n","import { JSONValue, LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { generateId } from '@ai-sdk/provider-utils';\n\nexport type TextInfoEnqueuer = (textInfo: string, metaPayload?: JSONValue, id?: string) => void;\n\nexport const createTextInfoEnqueuer =\n (controller: TransformStreamDefaultController<LanguageModelV2StreamPart>) =>\n (\n textInfo: string,\n metaPayload?: JSONValue,\n id: string = generateId(),\n deltaOnly: boolean = false\n ) => {\n const i = id ?? generateId();\n\n const startPart: LanguageModelV2StreamPart = {\n type: 'text-start',\n id: i,\n };\n\n const deltaPart: LanguageModelV2StreamPart = {\n type: 'text-delta',\n id: i,\n delta: textInfo,\n providerMetadata: metaPayload\n ? {\n raw: { data: metaPayload },\n }\n : undefined,\n };\n\n const endPart: LanguageModelV2StreamPart = {\n type: 'text-end',\n id: i,\n };\n\n if (deltaOnly) {\n controller.enqueue(deltaPart);\n return;\n }\n\n controller.enqueue(startPart);\n controller.enqueue(deltaPart);\n controller.enqueue(endPart);\n };\n","const REG_EX_MAP: Record<string, string> = {\n 手机号码: \"^((\\\\(\\\\d{2,3}\\\\))|(\\\\d{3}\\\\-))?1\\\\d{10}$\",\n 电话号码: \"^(0[0-9]{2,3}\\\\-)?([2-9][0-9]{6,7})+(\\\\-[0-9]{1,4})?$\",\n 邮政编码: \"^\\\\d{6}$\",\n 身份证号码: \"(^\\\\d{15}$)|(^\\\\d{18}$)|(^\\\\d{17}(\\\\d|X|x)$)\",\n 邮箱: \"^([a-zA-Z0-9_\\\\.\\\\-])+\\\\@(([a-zA-Z0-9\\\\-])+\\\\.)+([a-zA-Z0-9]{2,4})+$\",\n 时分: \"(^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}$)\",\n 时分秒:\n \"(^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$)\",\n 图片链接: \"imageurl\",\n 二维码图片: \"qrcode\",\n 条形码图片: \"barcode\",\n 自定义: \"custom\",\n};\n\nexport const rebuildText = (truncatedJson: unknown) => {\n const { widget, labelStyle, label, ...rest } = (truncatedJson as any) || {};\n\n const regex = REG_EX_MAP[labelStyle] || \"\";\n return {\n widget: {\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n // triggerEvent: 0,\n customCls: null,\n height: 34,\n width: 350,\n text: null,\n value: \"\", //默认值 没有默认值的话 整个value不存在\n enable: true,\n visible: true,\n // hint: placeholder,\n allowBlank: true,\n rely: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n // regex, //格式 ^((\\(\\d{2,3}\\))|(\\d{3}\\-))?1\\d{10}$ 手机号码 ^(0[0-9]{2,3}\\-)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?$ 电话号码 ^\\d{6}$ 邮政编码 (^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$) 身份证号码 ^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$ 邮箱 (^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}$) 时分 (^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$) 时分秒 imageurl 图片链接 qrcode 二维码图片 barcode 条形码图片 custom 自定义\n noRepeat: true,\n scan: null,\n // textMode,\n generateQR: false,\n eventAlert: true,\n alertinfo: {\n icon: \"error\",\n // tip: placeholder,\n // msg: placeholder,\n },\n enterClearText: true,\n ...widget,\n regex,\n type: \"text\",\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const buildWidgetName: (prefix?: string, index?: number) => string = (\n prefix: string = \"_widget\",\n index?: number,\n) => {\n const baseName = `${prefix}_${Date.now()}`;\n\n if (index === undefined) {\n return baseName;\n }\n\n const idxLength = index.toString().length;\n const slicedBaseName = baseName.slice(0, -idxLength);\n\n return `${slicedBaseName}${index}`;\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildNumber = (value: unknown): unknown => {\n const { widget, label, ...rest } = (value as any) || {};\n return {\n widget: {\n type: \"number\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: false,\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n // regex,\n // hint: placeholder,\n noRepeat: false,\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n allowDecimals: true, //允许小数,默认值 true,已废弃\n allowNegative: true, //允许负数,默认值 true ,已废弃\n // maxNumber: max, //限定数值范围 最大值\n // minNumber: min, //限定数值范围 最小值\n displayMode: \"percent\", // 新的格式, percent 百分比 number 数值\n precision: null, //保留小数位数\n thousandsSeparator: false, //显示千分符\n notround: true, //不四舍五入\n format: \"\", //旧的格式,新的由多个属性来控制,前端代码会用其他几个参数拼接出正确的这个值。 其中结尾有% 代表百分比 ,没有%代表数字 ,然后小数点后面的0的个数代表 保留的小数位数,如果小数点后面没有0代表(如0.%),代表没有设置 保留小数位数,保留用户输入的所有小数\n afterSuffix: {\n //单位\n zh_cn: \"\", //中文的\n en_us: \"\", //英文的\n zh_tw: \"\", //繁体的\n },\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const rebuildSelect = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"combo\",\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n mode: 1,\n allowAddLinkData: false,\n // items: options,\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n customCls: null,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const rebuildRadioGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n // items: options,\n layout: \"vertical\",\n stopCancel: false,\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n customCls: null,\n value: null,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n ...widget,\n type: \"radiogroup\",\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n labelStyle: label,\n };\n};\n","export const rebuildDatetime = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"datetime\",\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n widgetName: `_widget_${Date.now()}`,\n\n widgetNameAlias: \"\",\n customCls: null,\n value: \"today\", //默认值, today 填写当前时间 ,如果是数字,如 1762957800000 ,是自定义的时间,为所选时间的时间戳的毫秒级,\n rely: null,\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n hint: \"\",\n dateLimit: {\n //日期范围\n week: {\n //可选择星期\n enable: false, //是否开启可选择星期\n value: [\n //星期 星期一到天,用1-7代表\n 1, 2, 6,\n ],\n },\n start: {\n //最早可选时间\n enable: false, //是否开启最早可选时间\n mode: \"dynamic\", //模式: dynamic 动态 static 固定值 fieldValue 字段值\n value: \"yesterday\", //限定的值: today 今天 yesterday 昨天 tomorrow 明天 7day_before 七天前 7day_after 七天后 30day_before 30天前 30day_after 30天后\n },\n end: {\n //最晚可选时间\n enable: false, //是否开启最晚可选时间\n mode: \"static\", //模式: dynamic 动态 static 固定值 fieldValue 字段值\n value: 1762093800000, //限定的值:这种数字的为 选择的固定值,时间的时间戳,毫秒级别 ,如果为 _widget_1762154537014 这种,为字段的值,这个字段需要也是日期字段,和当前这个字段是同一个 format的\n },\n },\n\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const defaultBuilder = (truncatedJson: unknown) => {\n return truncatedJson;\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDeptGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"deptgroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildSn = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"sn\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: 0,\n customCls: null,\n width: 350,\n enable: true,\n visible: true,\n // rules: rules,\n importMode: 1, //导入模式 1 excel末尾递增 2 excel最大值递增 3 excel/表单最大值比较递增\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDept = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"dept\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildUserGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"usergroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n limitWidget: null, //可选范围 由部门字段确定,如果有值 是 _widget_1762226067008 这种,另一个部门字段的id。和limit互斥,limit将为[]\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDataLinker = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n rely: {\n widgets: [],\n },\n linkFilter: {},\n allowAdd: true, //允许新增关联表数据\n refType: \"form\", //关联表的类型,只能是form\n ...widget,\n linkFields: [],\n labelStyle: label,\n type: \"linkdata\",\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nconst tmpMapFields2Fields = (mapFieldsFromTruncatedJson: unknown[]) => {\n if (!mapFieldsFromTruncatedJson || !mapFieldsFromTruncatedJson.length) {\n return mapFieldsFromTruncatedJson;\n }\n\n return mapFieldsFromTruncatedJson.map((mf: any, index: number) => {\n return {\n id: index,\n\n // name: \"_widget_1761976674767\",\n // form: \"a2f34ef882158a3e97da4ef7\",\n // tag: buildWidgetName(\"f_\", index),\n\n title: mf.field,\n text: mf.field,\n icon: `icon-widget-${mf.type}`,\n type: mf.type,\n isEditable: true,\n group: \"dimension,filter,select\",\n formula: \"\",\n };\n });\n};\n\nconst tmpMapFields2MapFields = (mapFieldsFromTruncatedJson: unknown[]) => {\n if (!mapFieldsFromTruncatedJson || !mapFieldsFromTruncatedJson.length) {\n return mapFieldsFromTruncatedJson;\n }\n\n return mapFieldsFromTruncatedJson.map((mf: any) => {\n return {\n mode: \"depend\",\n ...mf,\n };\n });\n};\n\nexport const rebuildDataLoader = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"dataload\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n width: 350,\n text: label,\n enable: true,\n visible: true,\n allowBlank: true,\n allowAddData: true, // 允许新增数据源数据\n ...widget,\n mode: \"list\", //一直是 list 应该是废弃的\n loaddataconfig: {\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n },\n dataloadmode: [\"add\", \"cover\"],\n filter: {\n cond: [],\n rel: \"and\",\n },\n defaultSort: [],\n treeFields: {},\n mode: \"list\",\n selectFields: [],\n triggerControl: null,\n triggerWidget: null,\n triggerFieldMode: \"none\",\n triggerField: null,\n forms: widget?.loaddataconfig?.forms,\n selectArg: [],\n selectRel: \"and\",\n fields: tmpMapFields2Fields(widget?.loaddataconfig?.mapFields),\n mapFields: tmpMapFields2MapFields(widget?.loaddataconfig?.mapFields),\n },\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildUser = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"user\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n limitWidget: null, //可选范围 由部门字段确定,如果有值 是 _widget_1762226067008 这种,另一个部门字段的id。和limit互斥,limit将为[]\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildSignature = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"signature\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n rely: null,\n ...widget,\n labelStyle: label,\n },\n description: null,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildImage = (truncatedJson: unknown) => {\n const { widget, label, ...rest }: any = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"image\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 100,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n download: true, //打包下载\n is_file_down: true, //操作权限 可下载\n check_image_exif: true, //照片支持查看EXIF扩展信息\n online_edit: false,\n online_edit_record: false,\n fileType: [\n //支持上传的类型,默认,不可以设置\n \"jpg\",\n \"jpeg\",\n \"png\",\n \"gif\",\n \"bmp\",\n \"tif\",\n ],\n compressed: true, //三方图片压缩\n wxOriginalComponent: true, //微信/企业微信原生拍照模式\n onlyCamera: false, //仅允许拍照上传\n preview: true, //是否可以预览 默认 不可以设置\n watermarkSwitch: true, //水印属性\n watermarkPosition: \"center\", //水印位置\n watermarkFieldTitle: true, //是否显示水印字段标题\n watermarkSize: \"14\", //水印字体大小 不可以设置\n watermarkFixedField: {},\n previewWidth: 450, //预览的宽 默认 不可以设置\n previewHeight: 450, //预览的高 默认 不可以设置\n browserCompress: true, //浏览器图片压缩\n quality: 0.7, //压缩图片比例,开启 浏览器图片压缩 后才能设置\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildUploader = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"upload\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n maxFileCount: 50, //允许多文件上传 1为不可以 50为可以\n download: true, //打包下载\n is_file_down: true, //操作权限 可下载\n check_image_exif: true, //照片支持查看EXIF扩展信息\n online_edit: true, //允许文档在线编辑\n online_edit_record: true, //是否查看协作记录\n fileSizeLimit: 10485760, //设置单个文件大小上限,单位是字节,范围 1M-20M\n // fileType,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildCheckboxGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"checkboxgroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n layout: \"vertical\",\n allowAddOptions: false, //允许成员填写时添加新选项\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildLine = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"separator\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 12,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildComboChecker = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"combocheck\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n mode: \"\",\n allowAddOptions: false, //允许成员填写时添加新选项\n allowAddLinkData: false,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildLocation = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"location\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n adjustable: true, //允许移动端微调\n lnglatVisible: true, //显示经纬度坐标\n autoLocation: true, //移动端自动触发定位\n enablePcLocation: true, //允许PC端定位并选择位置\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildTextarea = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"textarea\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: false,\n customCls: null,\n height: 140,\n width: 734,\n value: \"\",\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n autoHeight: true, //根据内容自适应高度\n maxLength: 5000, //限制输入最大字符数 不限制的话,整个maxLength不存在\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildButton = (truncatedJson: unknown = {}) => {\n const { widget, label, ...rest } = truncatedJson as any;\n\n return {\n widget: {\n type: \"button\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: 0,\n customCls: null,\n height: 36,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: false,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n funMode: \"popupreport\",\n },\n background: {\n //颜色\n mode: \"color\",\n position: \"center\",\n },\n mode: \"all\", //模式 all 扩展 popupreport 弹出报表 popupform 弹出表单 print 页面打印 popuppage 弹出外部网页\n theme: \"default\", //风格 default 默认,有边框有底色 style1 有边框无底色 none 无边框无底色\n eventAlert: false, //是否显示提醒框\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildAddress = (truncatedJson: unknown = {}) => {\n const { widget, label, ...rest } = truncatedJson as any;\n\n return {\n widget: {\n type: \"address\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n width: 720,\n enable: true,\n visible: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n needDetail: true,\n eventMode: 1, //公式联动触发模式 1 默认,省市县/详细地址内容改变都触发 2 只有省市县改变才触发 3 只有详细地址改变才触发\n seleceMapAddress: true, //开启经纬度定位\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { rebuildFieldsJsonStructure } from \".\";\nimport { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildSubform = (originObj: unknown = {}) => {\n const { widget, label, ...rest } = originObj as any;\n return {\n widget: {\n type: \"subform\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n labelStyle: label,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n items: (widget.items || []).map((item: any, index: number) => {\n const result = rebuildFieldsJsonStructure(item, true);\n\n result.widget.widgetName = buildWidgetName(\"_widget\", index);\n\n return result;\n }),\n sortable: true, //启用子表单数据排序\n allowImportV2: false, //从excel导入数据\n sticky_column: {\n //PC端冻结前 n 列\n limit: 2, //多少列 范围 1-3\n enable: true, //是否开启\n },\n sticky_column_mobile: {\n //移动端冻结前 n 列\n limit: 1, //多少列 范围 1-3\n enable: true, //是否开启\n },\n mobileStyle: \"table\", //移动端显示样式 list 纵向展开 table 横向表格\n subform_create: true, //可新增记录\n subform_insert: true, //可插入记录\n subform_edit: true, //可编辑已有记录\n subform_delete: true, //可删除已有记录\n subform_fill: true, //允许填报数据\n subform_import: true, //允许导入数据\n subform_dataload: true, //允许数据加载\n loaddataconfig: {\n //数据加载设置\n mode: \"tree\",\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n },\n },\n allowLoadData: false, //是否开启数据加载\n allowAddData: true, //允许新增数据源数据\n subformloaddataTitle: \"数据加载\", //数据加载显示的标题\n subFieldShowRules: [], //子字段显隐规则\n quick_fill: true, //从excel填报数据\n },\n description: null,\n label,\n lineWidth: 12,\n tab: null,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDataQuery = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n linkFilter: {},\n rely: {\n widgets: [],\n },\n showMode: \"one\", //显示数据条数 one 一条 many 多条\n allowAdd: true, //允许新增关联表数据,只有 refType 为 form才可以选择true\n refType: \"form\", //关联表的类型,根据 linkForm 表的类型决定的。 form 表单 etl_table 视图 aggregate_table 聚合表\n showType: \"none\", //数据显示模式 none 默认 label 标题\n addExtendSet: [],\n ...widget,\n linkFields: [],\n labelStyle: label,\n type: \"linkquery\",\n },\n description: null,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { type FieldType } from '@baishuyun/types';\nimport { rebuildText } from './rebuild-text';\nimport { rebuildNumber } from './rebuild-number';\nimport { rebuildSelect } from './rebuild-select';\nimport { rebuildRadioGroup } from './rebuild-radio-group';\nimport { rebuildDatetime } from './rebuild-date-time';\nimport { defaultBuilder } from './default-builder';\nimport { rebuildDeptGroup } from './rebuild-dept-group';\nimport { rebuildSn } from './rebuild-sn';\nimport { rebuildDept } from './rebuild-dept';\nimport { rebuildUserGroup } from './rebuild-user-group';\nimport { rebuildDataLinker } from './rebuild-data-linker';\nimport { rebuildDataLoader } from './rebuild-data-loader';\nimport { rebuildUser } from './rebuild-user';\nimport { rebuildSignature } from './rebuild-signature';\nimport { rebuildImage } from './rebuild-image';\nimport { rebuildUploader } from './rebuild-upload';\nimport { rebuildCheckboxGroup } from './rebuild-checkbox-group';\nimport { rebuildLine } from './rebuild-line';\nimport { rebuildComboChecker } from './rebuild-combo-checker';\nimport { rebuildLocation } from './rebuild-location';\nimport { rebuildTextarea } from './rebuild-textarea';\nimport { rebuildButton } from './rebuild-button';\nimport { rebuildAddress } from './rebuild-address';\nimport { rebuildSubform } from './rebuild-subform';\nimport { rebuildDataQuery } from './rebuild-data-query';\n\n/**\n * 字段类型重建工具映射\n */\nconst RebuilderMap: Record<FieldType, (origin: unknown) => unknown> = {\n address: rebuildAddress,\n button: rebuildButton,\n textarea: rebuildTextarea,\n datetime: rebuildDatetime,\n text: rebuildText,\n password: rebuildText,\n location: rebuildLocation,\n radiogroup: rebuildRadioGroup,\n radio: rebuildRadioGroup,\n combo: rebuildSelect,\n combocheck: rebuildComboChecker,\n separator: rebuildLine,\n checkboxgroup: rebuildCheckboxGroup,\n upload: rebuildUploader,\n number: rebuildNumber,\n image: rebuildImage,\n signature: rebuildSignature,\n user: rebuildUser,\n dataload: rebuildDataLoader,\n linkdata: rebuildDataLinker,\n linkquery: rebuildDataQuery,\n usergroup: rebuildUserGroup,\n subform: rebuildSubform,\n dept: rebuildDept,\n sn: rebuildSn,\n deptgroup: rebuildDeptGroup,\n unknown: defaultBuilder,\n};\n\n/**\n * 补全字段表示的 json 结构\n */\nexport const rebuildFieldsJsonStructure = (truncatedJson: any, subItemsOnly = false) => {\n // 校验基础结构\n if (!truncatedJson || !truncatedJson.widget || !truncatedJson.widget.type) {\n return truncatedJson;\n }\n\n // 根据字段类型选择对应的重建器\n const fieldType = (truncatedJson.widget.type as FieldType) || 'unknown';\n\n // 防止子表单内出现子表单字段,导致无限递归\n if (subItemsOnly && fieldType === 'subform') {\n return defaultBuilder(truncatedJson);\n }\n\n const rebuilder = RebuilderMap[fieldType] || defaultBuilder;\n\n // 执行重建\n return rebuilder(truncatedJson);\n};\n","import {\n createTextInfoEnqueuer,\n TextInfoEnqueuer,\n} from \"../utils/enqueue-text-info\";\n\nexport default class SuggestionTransformStream extends TransformStream<\n any,\n any\n> {\n constructor(enable: boolean) {\n let enqueuer: TextInfoEnqueuer;\n super({\n start(controller) {\n enqueuer = createTextInfoEnqueuer(controller);\n },\n transform(chunk, controller) {\n if (\n enable &&\n chunk.type === \"raw\" &&\n chunk.rawValue.type === \"follow_up\" &&\n enqueuer\n ) {\n enqueuer(\n chunk.rawValue.content,\n JSON.stringify({\n type: \"suggestion\",\n }),\n );\n } else {\n controller.enqueue(chunk);\n }\n },\n });\n }\n}\n"],"mappings":"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","names":["import_provider_utils","XLSX","import_api","import_api","import_provider_utils"]}
|
package/dist/index.mjs
CHANGED
|
@@ -376,7 +376,8 @@ var CozeLanguageModel = class {
|
|
|
376
376
|
const body = {
|
|
377
377
|
bot_id: this.config.botId,
|
|
378
378
|
auto_save_history: false,
|
|
379
|
-
user_id:
|
|
379
|
+
user_id: "7543191937730215936",
|
|
380
|
+
// || user_id || idFromToken || 'guest_' + Date.now(),
|
|
380
381
|
stream: true,
|
|
381
382
|
additional_messages: messages
|
|
382
383
|
};
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/coze-provider.ts","../src/const.ts","../src/coze-language-model.ts","../src/utils/prompt-to-model-msg.ts","../src/utils/excel2json.ts","../src/utils/create-error-stream.ts","../src/evt-sample.ts","../src/stream-trasnformer/llm-chunk-injector-transform-stream.ts","../src/stream-trasnformer/mcp-chunk-filter-transform-stream.ts","../src/utils/mcp-to-llm-chunk.ts","../src/stream-trasnformer/llm-part-transform-stream.ts","../src/stream-trasnformer/fields-json-transform-stream.ts","../src/utils/enqueue-text-info.ts","../src/utils/fields-json-rebuild/rebuild-text.ts","../src/utils/build-widget-name.ts","../src/utils/fields-json-rebuild/rebuild-number.ts","../src/utils/fields-json-rebuild/rebuild-select.ts","../src/utils/fields-json-rebuild/rebuild-radio-group.ts","../src/utils/fields-json-rebuild/rebuild-date-time.ts","../src/utils/fields-json-rebuild/default-builder.ts","../src/utils/fields-json-rebuild/rebuild-dept-group.ts","../src/utils/fields-json-rebuild/rebuild-sn.ts","../src/utils/fields-json-rebuild/rebuild-dept.ts","../src/utils/fields-json-rebuild/rebuild-user-group.ts","../src/utils/fields-json-rebuild/rebuild-data-linker.ts","../src/utils/fields-json-rebuild/rebuild-data-loader.ts","../src/utils/fields-json-rebuild/rebuild-user.ts","../src/utils/fields-json-rebuild/rebuild-signature.ts","../src/utils/fields-json-rebuild/rebuild-image.ts","../src/utils/fields-json-rebuild/rebuild-upload.ts","../src/utils/fields-json-rebuild/rebuild-checkbox-group.ts","../src/utils/fields-json-rebuild/rebuild-line.ts","../src/utils/fields-json-rebuild/rebuild-combo-checker.ts","../src/utils/fields-json-rebuild/rebuild-location.ts","../src/utils/fields-json-rebuild/rebuild-textarea.ts","../src/utils/fields-json-rebuild/rebuild-button.ts","../src/utils/fields-json-rebuild/rebuild-address.ts","../src/utils/fields-json-rebuild/rebuild-subform.ts","../src/utils/fields-json-rebuild/rebuild-data-query.ts","../src/utils/fields-json-rebuild/index.ts","../src/stream-trasnformer/suggestion-transform-stream.ts"],"sourcesContent":["import {\n LanguageModelV2,\n LanguageModelV2StreamPart,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\n\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { CozeChatModelId } from './types';\nimport { VERSION } from './const';\nimport { CozeLanguageModel } from './coze-language-model';\n\nexport interface CozeProviderSettings {\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n\n botId: string;\n\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n\n extraStreamTransformers?: (() => TransformStream<LanguageModelV2StreamPart, any>)[];\n}\n\nexport interface CozeProvider extends ProviderV2 {\n (modelId: CozeChatModelId): LanguageModelV2;\n\n languageModel(modelId: CozeChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek chat model for text generation.\n*/\n chat(modelId: CozeChatModelId): LanguageModelV2;\n}\n\nexport function createCoze(\n options: CozeProviderSettings = {\n botId: '',\n }\n): CozeProvider {\n const baseURL = withoutTrailingSlash(options.baseURL);\n\n const agentPartHeader = withUserAgentSuffix(options.headers || {}, `ai-sdk/coze/${VERSION}`);\n const authorizationHeader = `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'COZE_API_KEY',\n description: '',\n })}`;\n\n const getHeaders = () => ({\n ...agentPartHeader,\n Authorization: authorizationHeader,\n 'content-type': 'application/json',\n });\n\n const createLanguageModel = (modelId: CozeChatModelId) => {\n return new CozeLanguageModel(modelId, {\n botId: options.botId,\n provider: `coze.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n extraStreamTransformers: options.extraStreamTransformers || [],\n });\n };\n\n const provider = (modelId: CozeChatModelId) => createLanguageModel(modelId);\n\n provider.specificationVersion = 'v3' as const;\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n\n return provider;\n}\n","export const VERSION = \"0.0.1\";\n","import {\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2ResponseMetadata,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2Headers,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport { CozeChatConfig } from './types';\nimport { ServerSentEventTransformStream } from 'parse-sse';\nimport { TextDecoderStream } from 'stream/web';\nimport { convertPromptToMessages } from './utils/prompt-to-model-msg';\nimport { createErrorStream } from './utils/create-error-stream';\nimport { LLMChunkInjectorTransformStream } from './stream-trasnformer/llm-chunk-injector-transform-stream';\nimport MCPChunkFilterTransformStream from './stream-trasnformer/mcp-chunk-filter-transform-stream';\nimport LLMPartTrasnformStream from './stream-trasnformer/llm-part-transform-stream';\n\nexport class CozeLanguageModel implements LanguageModelV2 {\n specificationVersion: 'v2' = 'v2';\n provider: string;\n modelId: string;\n supportedUrls: Record<string, RegExp[]> | PromiseLike<Record<string, RegExp[]>>;\n\n private readonly config: CozeChatConfig;\n\n constructor(modelId: string, config: CozeChatConfig) {\n this.modelId = modelId;\n this.provider = config.provider || 'coze';\n this.supportedUrls = config.supportedUrls?.() || {};\n this.config = config;\n }\n\n doGenerate(options: LanguageModelV2CallOptions): PromiseLike<{\n content: Array<LanguageModelV2Content>;\n finishReason: LanguageModelV2FinishReason;\n usage: LanguageModelV2Usage;\n providerMetadata?: SharedV2ProviderMetadata;\n request?: { body?: unknown };\n response?: LanguageModelV2ResponseMetadata & {\n headers?: SharedV2Headers;\n body?: unknown;\n };\n warnings: Array<LanguageModelV2CallWarning>;\n }> {\n throw new Error('Method not implemented.');\n }\n\n isVisibleMsgPart(evtData: any) {\n if (evtData.type === 'knowledge' && evtData.role === 'assistant') {\n return false;\n }\n\n return true;\n }\n\n async doStream(options: LanguageModelV2CallOptions): Promise<{\n stream: ReadableStream<LanguageModelV2StreamPart>;\n request?: { body?: unknown };\n response?: { headers?: SharedV2Headers };\n }> {\n const messages = convertPromptToMessages(options.prompt);\n const warnings: LanguageModelV2CallWarning[] = [];\n\n const url = this.config.url({\n path: '/chat',\n });\n\n const user_id = options.headers ? options.headers['x-user-id'] : '';\n const user_var = options.headers ? options.headers['x-user-var'] : '';\n const user_token = options.headers ? options.headers['x-user-token'] : '';\n const idFromToken = user_token?.slice(-16);\n\n let customVar;\n if (user_var) {\n try {\n customVar = JSON.parse(user_var);\n } catch (e) {\n console.warn('x-user-var parse error', e);\n }\n }\n\n const body = {\n bot_id: this.config.botId,\n auto_save_history: false,\n user_id: user_id || idFromToken || 'guest_' + Date.now(),\n stream: true,\n additional_messages: messages,\n };\n\n if (customVar) {\n (body as any).custom_var = customVar;\n }\n\n const headers = this.config.headers();\n\n const response = await fetch(url, {\n method: 'POST',\n headers: headers,\n credentials: 'include',\n body: JSON.stringify(body),\n });\n\n if (!response.ok || !response.body) {\n // if (true) {\n const rawError = await response.text();\n let errorDetail;\n try {\n errorDetail = JSON.parse(rawError); // 尝试解析为 JSON\n } catch {\n errorDetail = rawError; // 非 JSON 直接使用\n }\n\n // 创建一个包含错误信息的流,让 UI 层处理\n const errorMessage =\n typeof errorDetail === 'object' && errorDetail?.msg\n ? errorDetail.msg\n : `Coze API error: ${response.status} ${response.statusText}`;\n\n console.error(errorMessage);\n\n return {\n stream: createErrorStream('会话异常,请重试'),\n };\n }\n\n let externalTransformers = (this.config.extraStreamTransformers || []).map((factory) =>\n factory()\n );\n\n /// 不同阶段,可能需要不同的流处理逻辑\n const stage = options.headers ? options.headers['x-user-stage'] : '';\n const isBuildStage = stage === 'build';\n const isFillStage = stage === 'fill';\n\n const result = response.body\n // 将字节流解码为文本流\n .pipeThrough(\n new TextDecoderStream() as ReadableWritablePair<\n string | undefined,\n Uint8Array<ArrayBufferLike>\n >\n )\n // 解析为 SSE 事件流\n .pipeThrough(new ServerSentEventTransformStream())\n // 过滤不可见消息部分,比如知识库调用,和一些指令性质无需展示在聊天中的通信内容\n .pipeThrough(new MCPChunkFilterTransformStream(isBuildStage || isFillStage))\n // 补充特殊 llm chunk\n .pipeThrough(new LLMChunkInjectorTransformStream())\n // 转换为 LanguageModelV2StreamPart 格式\n .pipeThrough(new LLMPartTrasnformStream());\n\n let finalResult = result;\n\n if (externalTransformers.length > 0) {\n finalResult = externalTransformers.reduce(\n (stream, transformer) => stream.pipeThrough(transformer),\n result // 初始累积值(原始流)\n );\n }\n\n return {\n stream: finalResult as ReadableStream<LanguageModelV2StreamPart>,\n };\n }\n}\n","import {\n LanguageModelV2FilePart,\n LanguageModelV2Message,\n LanguageModelV2Prompt,\n LanguageModelV2TextPart,\n} from '@ai-sdk/provider';\nimport { RoleType } from '@coze/api';\nimport { Attachment } from '@baishuyun/types/src/chat';\nimport { excel2json } from './excel2json';\nimport { parseMultiModalMessage } from './parse-multi-modal-message';\n\nconst decoder = new TextDecoder('utf-8');\n\nconst data2csvText = (data: Uint8Array) => {\n return decoder.decode(data);\n};\n\ntype userMsg = {\n role: 'user';\n content: Array<LanguageModelV2TextPart | LanguageModelV2FilePart>;\n};\n\nconst isMultiModalMsg = (message: userMsg) =>\n message.content.some((part) => {\n return (part.providerOptions?.uploadMetadata?.contentType as string)?.startsWith('image/');\n });\n\nconst parseMessageContent = (message: LanguageModelV2Message, isMultiModalMsg?: boolean) => {\n // if (isMultiModalMsg) {\n // return parseMultiModalMessage(message as userMsg);\n // }\n\n const result = (message.content as Array<LanguageModelV2TextPart | LanguageModelV2FilePart>)\n .map((part) => {\n if (part.type === 'text') {\n return part.text;\n }\n\n const isCsv = part.mediaType === 'text/csv';\n const isTxt = part.mediaType === 'text/plain';\n const isImg = part.mediaType?.startsWith('image/');\n const isExcel =\n part.mediaType === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n\n if (isImg) {\n const meta = part.providerOptions?.uploadMetadata as Attachment;\n return meta?.parsedData as string;\n }\n\n if (isExcel) {\n return excel2json(part.data as Uint8Array);\n }\n\n if (isCsv || isTxt) {\n return data2csvText(part.data as Uint8Array);\n }\n\n return '';\n })\n .join('');\n\n return result;\n};\n\nexport const convertPromptToMessages = (messages: LanguageModelV2Prompt) => {\n return messages.map((message) => {\n // const multiModal = isMultiModalMsg(message as userMsg);\n\n switch (message.role) {\n case 'user':\n return {\n role: RoleType.User,\n // content: parseMessageContent(message, multiModal) || \"\",\n // content_type: multiModal ? \"object_string\" : \"text\",\n content: parseMessageContent(message) || '',\n content_type: 'text',\n };\n break;\n\n case 'assistant':\n return {\n role: RoleType.Assistant,\n content: (message.content as Array<LanguageModelV2TextPart>)\n .map((part: LanguageModelV2TextPart) => (part.type === 'text' ? part.text : ''))\n .join(''),\n content_type: 'text',\n };\n break;\n }\n });\n};\n","import XLSX from \"xlsx\";\n\nexport const excel2json = (file: Uint8Array) => {\n // 直接从 ArrayBuffer 读取\n const workbook = XLSX.read(file, {\n type: \"array\", // 或 'buffer'\n cellStyles: true,\n cellFormula: true,\n cellDates: true,\n cellNF: true,\n sheetStubs: true,\n bookVBA: true,\n });\n\n const result = {\n sheets: [] as {\n name: string;\n data: unknown[];\n range: string | undefined;\n merges: XLSX.Range[];\n }[],\n };\n\n workbook.SheetNames.forEach((sheetName) => {\n const worksheet = workbook.Sheets[sheetName];\n\n // 转换为二维数组(保留空单元格)\n const data = XLSX.utils.sheet_to_json(worksheet, {\n header: 1, // 使用数组格式\n defval: null, // 空单元格默认值\n raw: false, // 格式化值\n dateNF: \"yyyy-mm-dd\", // 日期格式\n });\n\n result.sheets.push({\n name: sheetName,\n data: data,\n range: worksheet[\"!ref\"],\n merges: worksheet[\"!merges\"] || [],\n });\n });\n\n return JSON.stringify(result);\n};\n","import { LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { generateId } from '@ai-sdk/provider-utils';\n\n/**\n * 创建一个包含错误信息的流\n * @param error 错误信息\n * @returns ReadableStream<LanguageModelV2StreamPart>\n */\nexport const createErrorStream = (error: string): ReadableStream<LanguageModelV2StreamPart> => {\n return new ReadableStream<LanguageModelV2StreamPart>({\n start(controller) {\n const id = generateId();\n controller.enqueue({\n id,\n type: 'text-start',\n });\n controller.enqueue({\n id,\n type: 'text-delta',\n providerMetadata: {\n raw: { data: { type: 'agent-error', error } },\n },\n delta: error,\n });\n controller.enqueue({\n type: 'text-end',\n id,\n });\n controller.close();\n },\n });\n};\n","/**\n * 事件数据取样,某些流 chunk 处理,需要用到前后的 chunk 信息,因此设计一个类缓存相邻 chunk,用于处理依据\n */\nexport class EvtSample {\n private _evtSampleMap: Map<string, any> = new Map();\n private _key1: string = \"1\";\n private _key2: string = \"2\";\n private _maxSample = 2;\n\n public addEventSample(evt: any) {\n if (this._evtSampleMap.size >= this._maxSample) {\n const evt2 = this._evtSampleMap.get(this._key2);\n this._evtSampleMap.set(this._key1, evt2);\n this._evtSampleMap.set(this._key2, evt);\n return;\n }\n\n this._evtSampleMap.set((this._evtSampleMap.size + 1).toString(), evt);\n }\n\n public getFirstSample() {\n return this._evtSampleMap.get(this._key1);\n }\n\n public getSecondSample() {\n return this._evtSampleMap.get(this._key2);\n }\n}\n","import { LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { StreamChatData } from '@coze/api';\nimport { EvtSample } from '../evt-sample';\n\n/**\n * 补充特殊的 llm chunk, reasoning-end, text-start\n */\nexport class LLMChunkInjectorTransformStream extends TransformStream<\n StreamChatData,\n | StreamChatData\n | (LanguageModelV2StreamPart & {\n disableTransform: boolean;\n })\n> {\n private eventSampleMap = new EvtSample();\n\n constructor() {\n super({\n transform: (\n part: StreamChatData,\n controller: TransformStreamDefaultController<\n StreamChatData | (LanguageModelV2StreamPart & { disableTransform: boolean })\n >\n ) => {\n // 添加事件样本(原逻辑中的addEventSample)\n this.eventSampleMap.addEventSample(part);\n\n // 处理sample1/sample2特殊判断逻辑\n const sample1 = this.eventSampleMap.getFirstSample();\n const sample2 = this.eventSampleMap.getSecondSample();\n\n // handle reasoning end\n if (\n sample1 &&\n sample2 &&\n sample1.data.reasoning_content &&\n !sample2.data.reasoning_content\n ) {\n controller.enqueue({\n disableTransform: true,\n type: 'reasoning-end',\n id: sample1.data.conversation_id,\n });\n }\n\n // handle text-start\n if (sample1 && sample2 && !sample1.data.content && sample2.data.content) {\n controller.enqueue({\n disableTransform: true,\n type: 'text-start',\n id: sample2.data.conversation_id,\n });\n }\n\n // 传递part到下一个转换流\n controller.enqueue(part);\n },\n });\n }\n}\n","import { ChatEventType, StreamChatData } from '@coze/api';\nimport { ServerSentEvent } from 'parse-sse';\n\nexport default class MCPChunkFilterTransformStream extends TransformStream {\n isVisibleMsgPart(evtData: any, part: any, omitTextEndChunk?: boolean) {\n if (evtData.type === 'knowledge' && evtData.role === 'assistant') {\n return false;\n }\n\n // Omit text-end chunk if the flag is set\n if (\n omitTextEndChunk &&\n part.event === ChatEventType.CONVERSATION_MESSAGE_COMPLETED &&\n part.data.type !== 'follow_up'\n ) {\n return false;\n }\n\n if (part.event === 'conversation.message.completed' && evtData.type == 'verbose') {\n return false;\n }\n\n return true;\n }\n\n constructor(omitTextEndChunk: boolean = false) {\n super({\n transform: (\n evt: ServerSentEvent,\n controller: TransformStreamDefaultController<StreamChatData>\n ) => {\n if (!evt) return;\n\n // 解析evt为part对象(原逻辑中的part构建)\n const part = {\n event: evt.type,\n data: JSON.parse(evt.data) || {},\n } as StreamChatData;\n\n // 过滤逻辑:仅传递满足条件的part\n if (this.isVisibleMsgPart(part.data, part, omitTextEndChunk)) {\n controller.enqueue(part);\n }\n },\n });\n }\n}\n","import { LanguageModelV2StreamPart, SharedV2ProviderMetadata } from '@ai-sdk/provider';\nimport { ChatEventType } from '@coze/api';\n\nexport const mcp2llmChunk = (part: any): LanguageModelV2StreamPart | null => {\n const fullData = JSON.stringify(part);\n\n switch (part.event) {\n case ChatEventType.CONVERSATION_CHAT_CREATED:\n return {\n type: 'raw',\n rawValue: part.data,\n };\n break;\n\n case ChatEventType.CONVERSATION_CHAT_IN_PROGRESS:\n return {\n // type: \"text-delta\",\n // id: part.data.conversation_id,\n // delta: part.data.content || \"\",\n // providerMetadata: {\n // raw: { data: fullData },\n // },\n type: 'raw',\n rawValue: part.data,\n };\n break;\n\n case ChatEventType.CONVERSATION_MESSAGE_DELTA:\n const isReasoning = Boolean(part.data.reasoning_content);\n return {\n type: isReasoning ? 'reasoning-delta' : 'text-delta',\n delta: isReasoning ? part.data.reasoning_content : part.data.content,\n id: part.data.conversation_id,\n providerMetadata: {},\n };\n break;\n\n case ChatEventType.CONVERSATION_MESSAGE_COMPLETED:\n if (part.data && part.data.type === 'follow_up') {\n return {\n type: 'raw',\n rawValue: part.data,\n };\n }\n\n if (part.status === 'completed') {\n return {\n type: 'text-end',\n id: part.data.conversation_id,\n // delta: part.data.content || part.data.reasoning_content || \"\",\n providerMetadata: {},\n };\n }\n\n return {\n type: 'raw',\n rawValue: part.data,\n };\n\n break;\n\n case ChatEventType.CONVERSATION_CHAT_COMPLETED:\n // Yield finish event with usage information\n return {\n type: 'finish',\n finishReason: 'stop',\n usage: {\n inputTokens: part.data.usage?.input_count || 0,\n outputTokens: part.data.usage?.output_count || 0,\n totalTokens: part.data.usage?.total_count || 0,\n },\n };\n break;\n\n case ChatEventType.DONE:\n // Stream completed successfully\n return {\n type: 'finish',\n finishReason: 'stop',\n usage: {\n inputTokens: part.data.usage?.input_count || 0,\n outputTokens: part.data.usage?.output_count || 0,\n totalTokens: part.data.usage?.total_count || 0,\n },\n };\n break;\n\n case ChatEventType.ERROR:\n // Handle errors\n console.error('[ERROR]', part.data);\n return {\n type: 'error',\n error: new Error(`Coze streaming error: ${JSON.stringify(part.data)}`),\n };\n\n default:\n // Handle unknown event types\n console.warn('Unknown event type:', part.event);\n return {\n type: 'error',\n error: 'Unknown event type' + part.event,\n };\n }\n\n return {\n type: 'error',\n error: 'unknown',\n };\n};\n","import { ChatEventType, StreamChatData } from '@coze/api';\nimport { mcp2llmChunk } from '../utils/mcp-to-llm-chunk';\nimport { LanguageModelV2StreamPart } from '@ai-sdk/provider';\n\nexport default class LLMPartTrasnformStream extends TransformStream {\n constructor() {\n super({\n transform: (\n part: StreamChatData | (LanguageModelV2StreamPart & { disableTransform: boolean }),\n controller: TransformStreamDefaultController<LanguageModelV2StreamPart | undefined>\n ) => {\n // Bypass transform if disableTransform flag is set\n const { disableTransform } = part as any;\n if (disableTransform) {\n controller.enqueue(part as any);\n return;\n }\n\n try {\n const chunk = mcp2llmChunk(part as any);\n if (chunk) {\n controller.enqueue(chunk as any);\n }\n } catch (error) {\n console.error('transform coze evt error');\n }\n },\n });\n }\n}\n","import { LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { JSONParser } from '@streamparser/json';\nimport { createTextInfoEnqueuer } from '../utils/enqueue-text-info';\nimport { rebuildFieldsJsonStructure } from '../utils/fields-json-rebuild';\n\nexport const createFieldsJsonTransformStream = (enableJsonParser: boolean) => {\n let parser: JSONParser;\n let id: string;\n\n const chunkGuard = (chunk: LanguageModelV2StreamPart): boolean => {\n if (!enableJsonParser) {\n return false;\n }\n\n if (chunk.type !== 'text-delta' || !('delta' in chunk)) {\n return false;\n }\n\n return true;\n };\n\n const transformer = {\n flush: (controller: TransformStreamDefaultController<any>) => {\n try {\n // parser?.end();\n controller.terminate(); // 信号通知下游可读流已关闭\n } catch (e) {\n controller.error('stop error' + e);\n }\n },\n transform: (\n chunk: LanguageModelV2StreamPart,\n controller: TransformStreamDefaultController<LanguageModelV2StreamPart>\n ) => {\n if (!parser) {\n return;\n }\n\n // console.log(\"chunk arrived\", chunk);\n\n try {\n if (chunkGuard(chunk)) {\n if ('id' in chunk && 'delta' in chunk) {\n id = chunk.id;\n parser.write(chunk.delta);\n }\n } else {\n controller.enqueue(chunk);\n }\n } catch (e) {\n controller.error(e);\n }\n },\n start: (controller: TransformStreamDefaultController<any>) => {\n parser = new JSONParser({\n paths: ['$.*'],\n });\n\n const enqueueTextDelta = enableJsonParser\n ? createTextInfoEnqueuer(controller)\n : (content: string) => {};\n\n // manualChunkForfieldsBeginTips(controller);\n // enqueueTextDelta(\"开始构建字段\");\n\n parser.onValue = (parsedInfo: any) => {\n const value = parsedInfo.value;\n\n if (value.widget) {\n value.widget.widgetName = `_widget_${Date.now()}`;\n }\n\n\n enqueueTextDelta(\n JSON.stringify(value),\n JSON.stringify({\n type: 'mcp-fields-json',\n field: rebuildFieldsJsonStructure(value),\n }),\n id\n );\n };\n\n let errorLogged = false;\n parser.onError = (err: any) => {\n // controller.enqueue({\n // type: \"error\",\n // error: \"JsonWidgetStream: JSON Parsing Error:\" + err.message,\n // });\n if (!errorLogged) {\n console.error('JsonWidgetStream: JSON Parsing Error:', err);\n errorLogged = true;\n }\n };\n\n parser.onEnd = () => {\n enqueueTextDelta(\n ' ',\n JSON.stringify({\n appendConfirm: 'save-fields',\n })\n );\n };\n },\n };\n\n return new TransformStream<LanguageModelV2StreamPart, any>(transformer);\n};\n","import { JSONValue, LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { generateId } from '@ai-sdk/provider-utils';\n\nexport type TextInfoEnqueuer = (textInfo: string, metaPayload?: JSONValue, id?: string) => void;\n\nexport const createTextInfoEnqueuer =\n (controller: TransformStreamDefaultController<LanguageModelV2StreamPart>) =>\n (\n textInfo: string,\n metaPayload?: JSONValue,\n id: string = generateId(),\n deltaOnly: boolean = false\n ) => {\n const i = id ?? generateId();\n\n const startPart: LanguageModelV2StreamPart = {\n type: 'text-start',\n id: i,\n };\n\n const deltaPart: LanguageModelV2StreamPart = {\n type: 'text-delta',\n id: i,\n delta: textInfo,\n providerMetadata: metaPayload\n ? {\n raw: { data: metaPayload },\n }\n : undefined,\n };\n\n const endPart: LanguageModelV2StreamPart = {\n type: 'text-end',\n id: i,\n };\n\n if (deltaOnly) {\n controller.enqueue(deltaPart);\n return;\n }\n\n controller.enqueue(startPart);\n controller.enqueue(deltaPart);\n controller.enqueue(endPart);\n };\n","const REG_EX_MAP: Record<string, string> = {\n 手机号码: \"^((\\\\(\\\\d{2,3}\\\\))|(\\\\d{3}\\\\-))?1\\\\d{10}$\",\n 电话号码: \"^(0[0-9]{2,3}\\\\-)?([2-9][0-9]{6,7})+(\\\\-[0-9]{1,4})?$\",\n 邮政编码: \"^\\\\d{6}$\",\n 身份证号码: \"(^\\\\d{15}$)|(^\\\\d{18}$)|(^\\\\d{17}(\\\\d|X|x)$)\",\n 邮箱: \"^([a-zA-Z0-9_\\\\.\\\\-])+\\\\@(([a-zA-Z0-9\\\\-])+\\\\.)+([a-zA-Z0-9]{2,4})+$\",\n 时分: \"(^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}$)\",\n 时分秒:\n \"(^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$)\",\n 图片链接: \"imageurl\",\n 二维码图片: \"qrcode\",\n 条形码图片: \"barcode\",\n 自定义: \"custom\",\n};\n\nexport const rebuildText = (truncatedJson: unknown) => {\n const { widget, labelStyle, label, ...rest } = (truncatedJson as any) || {};\n\n const regex = REG_EX_MAP[labelStyle] || \"\";\n return {\n widget: {\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n // triggerEvent: 0,\n customCls: null,\n height: 34,\n width: 350,\n text: null,\n value: \"\", //默认值 没有默认值的话 整个value不存在\n enable: true,\n visible: true,\n // hint: placeholder,\n allowBlank: true,\n rely: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n // regex, //格式 ^((\\(\\d{2,3}\\))|(\\d{3}\\-))?1\\d{10}$ 手机号码 ^(0[0-9]{2,3}\\-)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?$ 电话号码 ^\\d{6}$ 邮政编码 (^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$) 身份证号码 ^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$ 邮箱 (^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}$) 时分 (^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$) 时分秒 imageurl 图片链接 qrcode 二维码图片 barcode 条形码图片 custom 自定义\n noRepeat: true,\n scan: null,\n // textMode,\n generateQR: false,\n eventAlert: true,\n alertinfo: {\n icon: \"error\",\n // tip: placeholder,\n // msg: placeholder,\n },\n enterClearText: true,\n ...widget,\n regex,\n type: \"text\",\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const buildWidgetName: (prefix?: string, index?: number) => string = (\n prefix: string = \"_widget\",\n index?: number,\n) => {\n const baseName = `${prefix}_${Date.now()}`;\n\n if (index === undefined) {\n return baseName;\n }\n\n const idxLength = index.toString().length;\n const slicedBaseName = baseName.slice(0, -idxLength);\n\n return `${slicedBaseName}${index}`;\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildNumber = (value: unknown): unknown => {\n const { widget, label, ...rest } = (value as any) || {};\n return {\n widget: {\n type: \"number\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: false,\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n // regex,\n // hint: placeholder,\n noRepeat: false,\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n allowDecimals: true, //允许小数,默认值 true,已废弃\n allowNegative: true, //允许负数,默认值 true ,已废弃\n // maxNumber: max, //限定数值范围 最大值\n // minNumber: min, //限定数值范围 最小值\n displayMode: \"percent\", // 新的格式, percent 百分比 number 数值\n precision: null, //保留小数位数\n thousandsSeparator: false, //显示千分符\n notround: true, //不四舍五入\n format: \"\", //旧的格式,新的由多个属性来控制,前端代码会用其他几个参数拼接出正确的这个值。 其中结尾有% 代表百分比 ,没有%代表数字 ,然后小数点后面的0的个数代表 保留的小数位数,如果小数点后面没有0代表(如0.%),代表没有设置 保留小数位数,保留用户输入的所有小数\n afterSuffix: {\n //单位\n zh_cn: \"\", //中文的\n en_us: \"\", //英文的\n zh_tw: \"\", //繁体的\n },\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const rebuildSelect = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"combo\",\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n mode: 1,\n allowAddLinkData: false,\n // items: options,\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n customCls: null,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const rebuildRadioGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n // items: options,\n layout: \"vertical\",\n stopCancel: false,\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n customCls: null,\n value: null,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n ...widget,\n type: \"radiogroup\",\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n labelStyle: label,\n };\n};\n","export const rebuildDatetime = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"datetime\",\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n widgetName: `_widget_${Date.now()}`,\n\n widgetNameAlias: \"\",\n customCls: null,\n value: \"today\", //默认值, today 填写当前时间 ,如果是数字,如 1762957800000 ,是自定义的时间,为所选时间的时间戳的毫秒级,\n rely: null,\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n hint: \"\",\n dateLimit: {\n //日期范围\n week: {\n //可选择星期\n enable: false, //是否开启可选择星期\n value: [\n //星期 星期一到天,用1-7代表\n 1, 2, 6,\n ],\n },\n start: {\n //最早可选时间\n enable: false, //是否开启最早可选时间\n mode: \"dynamic\", //模式: dynamic 动态 static 固定值 fieldValue 字段值\n value: \"yesterday\", //限定的值: today 今天 yesterday 昨天 tomorrow 明天 7day_before 七天前 7day_after 七天后 30day_before 30天前 30day_after 30天后\n },\n end: {\n //最晚可选时间\n enable: false, //是否开启最晚可选时间\n mode: \"static\", //模式: dynamic 动态 static 固定值 fieldValue 字段值\n value: 1762093800000, //限定的值:这种数字的为 选择的固定值,时间的时间戳,毫秒级别 ,如果为 _widget_1762154537014 这种,为字段的值,这个字段需要也是日期字段,和当前这个字段是同一个 format的\n },\n },\n\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const defaultBuilder = (truncatedJson: unknown) => {\n return truncatedJson;\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDeptGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"deptgroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildSn = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"sn\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: 0,\n customCls: null,\n width: 350,\n enable: true,\n visible: true,\n // rules: rules,\n importMode: 1, //导入模式 1 excel末尾递增 2 excel最大值递增 3 excel/表单最大值比较递增\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDept = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"dept\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildUserGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"usergroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n limitWidget: null, //可选范围 由部门字段确定,如果有值 是 _widget_1762226067008 这种,另一个部门字段的id。和limit互斥,limit将为[]\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDataLinker = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n rely: {\n widgets: [],\n },\n linkFilter: {},\n allowAdd: true, //允许新增关联表数据\n refType: \"form\", //关联表的类型,只能是form\n ...widget,\n linkFields: [],\n labelStyle: label,\n type: \"linkdata\",\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nconst tmpMapFields2Fields = (mapFieldsFromTruncatedJson: unknown[]) => {\n if (!mapFieldsFromTruncatedJson || !mapFieldsFromTruncatedJson.length) {\n return mapFieldsFromTruncatedJson;\n }\n\n return mapFieldsFromTruncatedJson.map((mf: any, index: number) => {\n return {\n id: index,\n\n // name: \"_widget_1761976674767\",\n // form: \"a2f34ef882158a3e97da4ef7\",\n // tag: buildWidgetName(\"f_\", index),\n\n title: mf.field,\n text: mf.field,\n icon: `icon-widget-${mf.type}`,\n type: mf.type,\n isEditable: true,\n group: \"dimension,filter,select\",\n formula: \"\",\n };\n });\n};\n\nconst tmpMapFields2MapFields = (mapFieldsFromTruncatedJson: unknown[]) => {\n if (!mapFieldsFromTruncatedJson || !mapFieldsFromTruncatedJson.length) {\n return mapFieldsFromTruncatedJson;\n }\n\n return mapFieldsFromTruncatedJson.map((mf: any) => {\n return {\n mode: \"depend\",\n ...mf,\n };\n });\n};\n\nexport const rebuildDataLoader = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"dataload\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n width: 350,\n text: label,\n enable: true,\n visible: true,\n allowBlank: true,\n allowAddData: true, // 允许新增数据源数据\n ...widget,\n mode: \"list\", //一直是 list 应该是废弃的\n loaddataconfig: {\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n },\n dataloadmode: [\"add\", \"cover\"],\n filter: {\n cond: [],\n rel: \"and\",\n },\n defaultSort: [],\n treeFields: {},\n mode: \"list\",\n selectFields: [],\n triggerControl: null,\n triggerWidget: null,\n triggerFieldMode: \"none\",\n triggerField: null,\n forms: widget?.loaddataconfig?.forms,\n selectArg: [],\n selectRel: \"and\",\n fields: tmpMapFields2Fields(widget?.loaddataconfig?.mapFields),\n mapFields: tmpMapFields2MapFields(widget?.loaddataconfig?.mapFields),\n },\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildUser = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"user\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n limitWidget: null, //可选范围 由部门字段确定,如果有值 是 _widget_1762226067008 这种,另一个部门字段的id。和limit互斥,limit将为[]\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildSignature = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"signature\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n rely: null,\n ...widget,\n labelStyle: label,\n },\n description: null,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildImage = (truncatedJson: unknown) => {\n const { widget, label, ...rest }: any = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"image\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 100,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n download: true, //打包下载\n is_file_down: true, //操作权限 可下载\n check_image_exif: true, //照片支持查看EXIF扩展信息\n online_edit: false,\n online_edit_record: false,\n fileType: [\n //支持上传的类型,默认,不可以设置\n \"jpg\",\n \"jpeg\",\n \"png\",\n \"gif\",\n \"bmp\",\n \"tif\",\n ],\n compressed: true, //三方图片压缩\n wxOriginalComponent: true, //微信/企业微信原生拍照模式\n onlyCamera: false, //仅允许拍照上传\n preview: true, //是否可以预览 默认 不可以设置\n watermarkSwitch: true, //水印属性\n watermarkPosition: \"center\", //水印位置\n watermarkFieldTitle: true, //是否显示水印字段标题\n watermarkSize: \"14\", //水印字体大小 不可以设置\n watermarkFixedField: {},\n previewWidth: 450, //预览的宽 默认 不可以设置\n previewHeight: 450, //预览的高 默认 不可以设置\n browserCompress: true, //浏览器图片压缩\n quality: 0.7, //压缩图片比例,开启 浏览器图片压缩 后才能设置\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildUploader = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"upload\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n maxFileCount: 50, //允许多文件上传 1为不可以 50为可以\n download: true, //打包下载\n is_file_down: true, //操作权限 可下载\n check_image_exif: true, //照片支持查看EXIF扩展信息\n online_edit: true, //允许文档在线编辑\n online_edit_record: true, //是否查看协作记录\n fileSizeLimit: 10485760, //设置单个文件大小上限,单位是字节,范围 1M-20M\n // fileType,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildCheckboxGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"checkboxgroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n layout: \"vertical\",\n allowAddOptions: false, //允许成员填写时添加新选项\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildLine = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"separator\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 12,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildComboChecker = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"combocheck\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n mode: \"\",\n allowAddOptions: false, //允许成员填写时添加新选项\n allowAddLinkData: false,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildLocation = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"location\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n adjustable: true, //允许移动端微调\n lnglatVisible: true, //显示经纬度坐标\n autoLocation: true, //移动端自动触发定位\n enablePcLocation: true, //允许PC端定位并选择位置\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildTextarea = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"textarea\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: false,\n customCls: null,\n height: 140,\n width: 734,\n value: \"\",\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n autoHeight: true, //根据内容自适应高度\n maxLength: 5000, //限制输入最大字符数 不限制的话,整个maxLength不存在\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildButton = (truncatedJson: unknown = {}) => {\n const { widget, label, ...rest } = truncatedJson as any;\n\n return {\n widget: {\n type: \"button\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: 0,\n customCls: null,\n height: 36,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: false,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n funMode: \"popupreport\",\n },\n background: {\n //颜色\n mode: \"color\",\n position: \"center\",\n },\n mode: \"all\", //模式 all 扩展 popupreport 弹出报表 popupform 弹出表单 print 页面打印 popuppage 弹出外部网页\n theme: \"default\", //风格 default 默认,有边框有底色 style1 有边框无底色 none 无边框无底色\n eventAlert: false, //是否显示提醒框\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildAddress = (truncatedJson: unknown = {}) => {\n const { widget, label, ...rest } = truncatedJson as any;\n\n return {\n widget: {\n type: \"address\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n width: 720,\n enable: true,\n visible: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n needDetail: true,\n eventMode: 1, //公式联动触发模式 1 默认,省市县/详细地址内容改变都触发 2 只有省市县改变才触发 3 只有详细地址改变才触发\n seleceMapAddress: true, //开启经纬度定位\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { rebuildFieldsJsonStructure } from \".\";\nimport { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildSubform = (originObj: unknown = {}) => {\n const { widget, label, ...rest } = originObj as any;\n return {\n widget: {\n type: \"subform\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n labelStyle: label,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n items: (widget.items || []).map((item: any, index: number) => {\n const result = rebuildFieldsJsonStructure(item, true);\n\n result.widget.widgetName = buildWidgetName(\"_widget\", index);\n\n return result;\n }),\n sortable: true, //启用子表单数据排序\n allowImportV2: false, //从excel导入数据\n sticky_column: {\n //PC端冻结前 n 列\n limit: 2, //多少列 范围 1-3\n enable: true, //是否开启\n },\n sticky_column_mobile: {\n //移动端冻结前 n 列\n limit: 1, //多少列 范围 1-3\n enable: true, //是否开启\n },\n mobileStyle: \"table\", //移动端显示样式 list 纵向展开 table 横向表格\n subform_create: true, //可新增记录\n subform_insert: true, //可插入记录\n subform_edit: true, //可编辑已有记录\n subform_delete: true, //可删除已有记录\n subform_fill: true, //允许填报数据\n subform_import: true, //允许导入数据\n subform_dataload: true, //允许数据加载\n loaddataconfig: {\n //数据加载设置\n mode: \"tree\",\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n },\n },\n allowLoadData: false, //是否开启数据加载\n allowAddData: true, //允许新增数据源数据\n subformloaddataTitle: \"数据加载\", //数据加载显示的标题\n subFieldShowRules: [], //子字段显隐规则\n quick_fill: true, //从excel填报数据\n },\n description: null,\n label,\n lineWidth: 12,\n tab: null,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDataQuery = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n linkFilter: {},\n rely: {\n widgets: [],\n },\n showMode: \"one\", //显示数据条数 one 一条 many 多条\n allowAdd: true, //允许新增关联表数据,只有 refType 为 form才可以选择true\n refType: \"form\", //关联表的类型,根据 linkForm 表的类型决定的。 form 表单 etl_table 视图 aggregate_table 聚合表\n showType: \"none\", //数据显示模式 none 默认 label 标题\n addExtendSet: [],\n ...widget,\n linkFields: [],\n labelStyle: label,\n type: \"linkquery\",\n },\n description: null,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { type FieldType } from '@baishuyun/types';\nimport { rebuildText } from './rebuild-text';\nimport { rebuildNumber } from './rebuild-number';\nimport { rebuildSelect } from './rebuild-select';\nimport { rebuildRadioGroup } from './rebuild-radio-group';\nimport { rebuildDatetime } from './rebuild-date-time';\nimport { defaultBuilder } from './default-builder';\nimport { rebuildDeptGroup } from './rebuild-dept-group';\nimport { rebuildSn } from './rebuild-sn';\nimport { rebuildDept } from './rebuild-dept';\nimport { rebuildUserGroup } from './rebuild-user-group';\nimport { rebuildDataLinker } from './rebuild-data-linker';\nimport { rebuildDataLoader } from './rebuild-data-loader';\nimport { rebuildUser } from './rebuild-user';\nimport { rebuildSignature } from './rebuild-signature';\nimport { rebuildImage } from './rebuild-image';\nimport { rebuildUploader } from './rebuild-upload';\nimport { rebuildCheckboxGroup } from './rebuild-checkbox-group';\nimport { rebuildLine } from './rebuild-line';\nimport { rebuildComboChecker } from './rebuild-combo-checker';\nimport { rebuildLocation } from './rebuild-location';\nimport { rebuildTextarea } from './rebuild-textarea';\nimport { rebuildButton } from './rebuild-button';\nimport { rebuildAddress } from './rebuild-address';\nimport { rebuildSubform } from './rebuild-subform';\nimport { rebuildDataQuery } from './rebuild-data-query';\n\n/**\n * 字段类型重建工具映射\n */\nconst RebuilderMap: Record<FieldType, (origin: unknown) => unknown> = {\n address: rebuildAddress,\n button: rebuildButton,\n textarea: rebuildTextarea,\n datetime: rebuildDatetime,\n text: rebuildText,\n password: rebuildText,\n location: rebuildLocation,\n radiogroup: rebuildRadioGroup,\n radio: rebuildRadioGroup,\n combo: rebuildSelect,\n combocheck: rebuildComboChecker,\n separator: rebuildLine,\n checkboxgroup: rebuildCheckboxGroup,\n upload: rebuildUploader,\n number: rebuildNumber,\n image: rebuildImage,\n signature: rebuildSignature,\n user: rebuildUser,\n dataload: rebuildDataLoader,\n linkdata: rebuildDataLinker,\n linkquery: rebuildDataQuery,\n usergroup: rebuildUserGroup,\n subform: rebuildSubform,\n dept: rebuildDept,\n sn: rebuildSn,\n deptgroup: rebuildDeptGroup,\n unknown: defaultBuilder,\n};\n\n/**\n * 补全字段表示的 json 结构\n */\nexport const rebuildFieldsJsonStructure = (truncatedJson: any, subItemsOnly = false) => {\n // 校验基础结构\n if (!truncatedJson || !truncatedJson.widget || !truncatedJson.widget.type) {\n return truncatedJson;\n }\n\n // 根据字段类型选择对应的重建器\n const fieldType = (truncatedJson.widget.type as FieldType) || 'unknown';\n\n // 防止子表单内出现子表单字段,导致无限递归\n if (subItemsOnly && fieldType === 'subform') {\n return defaultBuilder(truncatedJson);\n }\n\n const rebuilder = RebuilderMap[fieldType] || defaultBuilder;\n\n // 执行重建\n return rebuilder(truncatedJson);\n};\n","import {\n createTextInfoEnqueuer,\n TextInfoEnqueuer,\n} from \"../utils/enqueue-text-info\";\n\nexport default class SuggestionTransformStream extends TransformStream<\n any,\n any\n> {\n constructor(enable: boolean) {\n let enqueuer: TextInfoEnqueuer;\n super({\n start(controller) {\n enqueuer = createTextInfoEnqueuer(controller);\n },\n transform(chunk, controller) {\n if (\n enable &&\n chunk.type === \"raw\" &&\n chunk.rawValue.type === \"follow_up\" &&\n enqueuer\n ) {\n enqueuer(\n chunk.rawValue.content,\n JSON.stringify({\n type: \"suggestion\",\n }),\n );\n } else {\n controller.enqueue(chunk);\n }\n },\n });\n }\n}\n"],"mappings":"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","names":["ChatEventType","generateId"]}
|
|
1
|
+
{"version":3,"sources":["../src/coze-provider.ts","../src/const.ts","../src/coze-language-model.ts","../src/utils/prompt-to-model-msg.ts","../src/utils/excel2json.ts","../src/utils/create-error-stream.ts","../src/evt-sample.ts","../src/stream-trasnformer/llm-chunk-injector-transform-stream.ts","../src/stream-trasnformer/mcp-chunk-filter-transform-stream.ts","../src/utils/mcp-to-llm-chunk.ts","../src/stream-trasnformer/llm-part-transform-stream.ts","../src/stream-trasnformer/fields-json-transform-stream.ts","../src/utils/enqueue-text-info.ts","../src/utils/fields-json-rebuild/rebuild-text.ts","../src/utils/build-widget-name.ts","../src/utils/fields-json-rebuild/rebuild-number.ts","../src/utils/fields-json-rebuild/rebuild-select.ts","../src/utils/fields-json-rebuild/rebuild-radio-group.ts","../src/utils/fields-json-rebuild/rebuild-date-time.ts","../src/utils/fields-json-rebuild/default-builder.ts","../src/utils/fields-json-rebuild/rebuild-dept-group.ts","../src/utils/fields-json-rebuild/rebuild-sn.ts","../src/utils/fields-json-rebuild/rebuild-dept.ts","../src/utils/fields-json-rebuild/rebuild-user-group.ts","../src/utils/fields-json-rebuild/rebuild-data-linker.ts","../src/utils/fields-json-rebuild/rebuild-data-loader.ts","../src/utils/fields-json-rebuild/rebuild-user.ts","../src/utils/fields-json-rebuild/rebuild-signature.ts","../src/utils/fields-json-rebuild/rebuild-image.ts","../src/utils/fields-json-rebuild/rebuild-upload.ts","../src/utils/fields-json-rebuild/rebuild-checkbox-group.ts","../src/utils/fields-json-rebuild/rebuild-line.ts","../src/utils/fields-json-rebuild/rebuild-combo-checker.ts","../src/utils/fields-json-rebuild/rebuild-location.ts","../src/utils/fields-json-rebuild/rebuild-textarea.ts","../src/utils/fields-json-rebuild/rebuild-button.ts","../src/utils/fields-json-rebuild/rebuild-address.ts","../src/utils/fields-json-rebuild/rebuild-subform.ts","../src/utils/fields-json-rebuild/rebuild-data-query.ts","../src/utils/fields-json-rebuild/index.ts","../src/stream-trasnformer/suggestion-transform-stream.ts"],"sourcesContent":["import {\n LanguageModelV2,\n LanguageModelV2StreamPart,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\n\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { CozeChatModelId } from './types';\nimport { VERSION } from './const';\nimport { CozeLanguageModel } from './coze-language-model';\n\nexport interface CozeProviderSettings {\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n\n botId: string;\n\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n\n extraStreamTransformers?: (() => TransformStream<LanguageModelV2StreamPart, any>)[];\n}\n\nexport interface CozeProvider extends ProviderV2 {\n (modelId: CozeChatModelId): LanguageModelV2;\n\n languageModel(modelId: CozeChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek chat model for text generation.\n*/\n chat(modelId: CozeChatModelId): LanguageModelV2;\n}\n\nexport function createCoze(\n options: CozeProviderSettings = {\n botId: '',\n }\n): CozeProvider {\n const baseURL = withoutTrailingSlash(options.baseURL);\n\n const agentPartHeader = withUserAgentSuffix(options.headers || {}, `ai-sdk/coze/${VERSION}`);\n const authorizationHeader = `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'COZE_API_KEY',\n description: '',\n })}`;\n\n const getHeaders = () => ({\n ...agentPartHeader,\n Authorization: authorizationHeader,\n 'content-type': 'application/json',\n });\n\n const createLanguageModel = (modelId: CozeChatModelId) => {\n return new CozeLanguageModel(modelId, {\n botId: options.botId,\n provider: `coze.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n extraStreamTransformers: options.extraStreamTransformers || [],\n });\n };\n\n const provider = (modelId: CozeChatModelId) => createLanguageModel(modelId);\n\n provider.specificationVersion = 'v3' as const;\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n\n return provider;\n}\n","export const VERSION = \"0.0.1\";\n","import {\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2ResponseMetadata,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2Headers,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport { CozeChatConfig } from './types';\nimport { ServerSentEventTransformStream } from 'parse-sse';\nimport { TextDecoderStream } from 'stream/web';\nimport { convertPromptToMessages } from './utils/prompt-to-model-msg';\nimport { createErrorStream } from './utils/create-error-stream';\nimport { LLMChunkInjectorTransformStream } from './stream-trasnformer/llm-chunk-injector-transform-stream';\nimport MCPChunkFilterTransformStream from './stream-trasnformer/mcp-chunk-filter-transform-stream';\nimport LLMPartTrasnformStream from './stream-trasnformer/llm-part-transform-stream';\n\nexport class CozeLanguageModel implements LanguageModelV2 {\n specificationVersion: 'v2' = 'v2';\n provider: string;\n modelId: string;\n supportedUrls: Record<string, RegExp[]> | PromiseLike<Record<string, RegExp[]>>;\n\n private readonly config: CozeChatConfig;\n\n constructor(modelId: string, config: CozeChatConfig) {\n this.modelId = modelId;\n this.provider = config.provider || 'coze';\n this.supportedUrls = config.supportedUrls?.() || {};\n this.config = config;\n }\n\n doGenerate(options: LanguageModelV2CallOptions): PromiseLike<{\n content: Array<LanguageModelV2Content>;\n finishReason: LanguageModelV2FinishReason;\n usage: LanguageModelV2Usage;\n providerMetadata?: SharedV2ProviderMetadata;\n request?: { body?: unknown };\n response?: LanguageModelV2ResponseMetadata & {\n headers?: SharedV2Headers;\n body?: unknown;\n };\n warnings: Array<LanguageModelV2CallWarning>;\n }> {\n throw new Error('Method not implemented.');\n }\n\n isVisibleMsgPart(evtData: any) {\n if (evtData.type === 'knowledge' && evtData.role === 'assistant') {\n return false;\n }\n\n return true;\n }\n\n async doStream(options: LanguageModelV2CallOptions): Promise<{\n stream: ReadableStream<LanguageModelV2StreamPart>;\n request?: { body?: unknown };\n response?: { headers?: SharedV2Headers };\n }> {\n const messages = convertPromptToMessages(options.prompt);\n const warnings: LanguageModelV2CallWarning[] = [];\n\n const url = this.config.url({\n path: '/chat',\n });\n\n const user_id = options.headers ? options.headers['x-user-id'] : '';\n const user_var = options.headers ? options.headers['x-user-var'] : '';\n const user_token = options.headers ? options.headers['x-user-token'] : '';\n const idFromToken = user_token?.slice(-16);\n\n let customVar;\n if (user_var) {\n try {\n customVar = JSON.parse(user_var);\n } catch (e) {\n console.warn('x-user-var parse error', e);\n }\n }\n\n const body = {\n bot_id: this.config.botId,\n auto_save_history: false,\n user_id: '7543191937730215936', // || user_id || idFromToken || 'guest_' + Date.now(),\n stream: true,\n additional_messages: messages,\n };\n\n if (customVar) {\n (body as any).custom_var = customVar;\n }\n\n const headers = this.config.headers();\n\n const response = await fetch(url, {\n method: 'POST',\n headers: headers,\n credentials: 'include',\n body: JSON.stringify(body),\n });\n\n if (!response.ok || !response.body) {\n // if (true) {\n const rawError = await response.text();\n let errorDetail;\n try {\n errorDetail = JSON.parse(rawError); // 尝试解析为 JSON\n } catch {\n errorDetail = rawError; // 非 JSON 直接使用\n }\n\n // 创建一个包含错误信息的流,让 UI 层处理\n const errorMessage =\n typeof errorDetail === 'object' && errorDetail?.msg\n ? errorDetail.msg\n : `Coze API error: ${response.status} ${response.statusText}`;\n\n console.error(errorMessage);\n\n return {\n stream: createErrorStream('会话异常,请重试'),\n };\n }\n\n let externalTransformers = (this.config.extraStreamTransformers || []).map((factory) =>\n factory()\n );\n\n /// 不同阶段,可能需要不同的流处理逻辑\n const stage = options.headers ? options.headers['x-user-stage'] : '';\n const isBuildStage = stage === 'build';\n const isFillStage = stage === 'fill';\n\n const result = response.body\n // 将字节流解码为文本流\n .pipeThrough(\n new TextDecoderStream() as ReadableWritablePair<\n string | undefined,\n Uint8Array<ArrayBufferLike>\n >\n )\n // 解析为 SSE 事件流\n .pipeThrough(new ServerSentEventTransformStream())\n // 过滤不可见消息部分,比如知识库调用,和一些指令性质无需展示在聊天中的通信内容\n .pipeThrough(new MCPChunkFilterTransformStream(isBuildStage || isFillStage))\n // 补充特殊 llm chunk\n .pipeThrough(new LLMChunkInjectorTransformStream())\n // 转换为 LanguageModelV2StreamPart 格式\n .pipeThrough(new LLMPartTrasnformStream());\n\n let finalResult = result;\n\n if (externalTransformers.length > 0) {\n finalResult = externalTransformers.reduce(\n (stream, transformer) => stream.pipeThrough(transformer),\n result // 初始累积值(原始流)\n );\n }\n\n return {\n stream: finalResult as ReadableStream<LanguageModelV2StreamPart>,\n };\n }\n}\n","import {\n LanguageModelV2FilePart,\n LanguageModelV2Message,\n LanguageModelV2Prompt,\n LanguageModelV2TextPart,\n} from '@ai-sdk/provider';\nimport { RoleType } from '@coze/api';\nimport { Attachment } from '@baishuyun/types/src/chat';\nimport { excel2json } from './excel2json';\nimport { parseMultiModalMessage } from './parse-multi-modal-message';\n\nconst decoder = new TextDecoder('utf-8');\n\nconst data2csvText = (data: Uint8Array) => {\n return decoder.decode(data);\n};\n\ntype userMsg = {\n role: 'user';\n content: Array<LanguageModelV2TextPart | LanguageModelV2FilePart>;\n};\n\nconst isMultiModalMsg = (message: userMsg) =>\n message.content.some((part) => {\n return (part.providerOptions?.uploadMetadata?.contentType as string)?.startsWith('image/');\n });\n\nconst parseMessageContent = (message: LanguageModelV2Message, isMultiModalMsg?: boolean) => {\n // if (isMultiModalMsg) {\n // return parseMultiModalMessage(message as userMsg);\n // }\n\n const result = (message.content as Array<LanguageModelV2TextPart | LanguageModelV2FilePart>)\n .map((part) => {\n if (part.type === 'text') {\n return part.text;\n }\n\n const isCsv = part.mediaType === 'text/csv';\n const isTxt = part.mediaType === 'text/plain';\n const isImg = part.mediaType?.startsWith('image/');\n const isExcel =\n part.mediaType === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n\n if (isImg) {\n const meta = part.providerOptions?.uploadMetadata as Attachment;\n return meta?.parsedData as string;\n }\n\n if (isExcel) {\n return excel2json(part.data as Uint8Array);\n }\n\n if (isCsv || isTxt) {\n return data2csvText(part.data as Uint8Array);\n }\n\n return '';\n })\n .join('');\n\n return result;\n};\n\nexport const convertPromptToMessages = (messages: LanguageModelV2Prompt) => {\n return messages.map((message) => {\n // const multiModal = isMultiModalMsg(message as userMsg);\n\n switch (message.role) {\n case 'user':\n return {\n role: RoleType.User,\n // content: parseMessageContent(message, multiModal) || \"\",\n // content_type: multiModal ? \"object_string\" : \"text\",\n content: parseMessageContent(message) || '',\n content_type: 'text',\n };\n break;\n\n case 'assistant':\n return {\n role: RoleType.Assistant,\n content: (message.content as Array<LanguageModelV2TextPart>)\n .map((part: LanguageModelV2TextPart) => (part.type === 'text' ? part.text : ''))\n .join(''),\n content_type: 'text',\n };\n break;\n }\n });\n};\n","import XLSX from \"xlsx\";\n\nexport const excel2json = (file: Uint8Array) => {\n // 直接从 ArrayBuffer 读取\n const workbook = XLSX.read(file, {\n type: \"array\", // 或 'buffer'\n cellStyles: true,\n cellFormula: true,\n cellDates: true,\n cellNF: true,\n sheetStubs: true,\n bookVBA: true,\n });\n\n const result = {\n sheets: [] as {\n name: string;\n data: unknown[];\n range: string | undefined;\n merges: XLSX.Range[];\n }[],\n };\n\n workbook.SheetNames.forEach((sheetName) => {\n const worksheet = workbook.Sheets[sheetName];\n\n // 转换为二维数组(保留空单元格)\n const data = XLSX.utils.sheet_to_json(worksheet, {\n header: 1, // 使用数组格式\n defval: null, // 空单元格默认值\n raw: false, // 格式化值\n dateNF: \"yyyy-mm-dd\", // 日期格式\n });\n\n result.sheets.push({\n name: sheetName,\n data: data,\n range: worksheet[\"!ref\"],\n merges: worksheet[\"!merges\"] || [],\n });\n });\n\n return JSON.stringify(result);\n};\n","import { LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { generateId } from '@ai-sdk/provider-utils';\n\n/**\n * 创建一个包含错误信息的流\n * @param error 错误信息\n * @returns ReadableStream<LanguageModelV2StreamPart>\n */\nexport const createErrorStream = (error: string): ReadableStream<LanguageModelV2StreamPart> => {\n return new ReadableStream<LanguageModelV2StreamPart>({\n start(controller) {\n const id = generateId();\n controller.enqueue({\n id,\n type: 'text-start',\n });\n controller.enqueue({\n id,\n type: 'text-delta',\n providerMetadata: {\n raw: { data: { type: 'agent-error', error } },\n },\n delta: error,\n });\n controller.enqueue({\n type: 'text-end',\n id,\n });\n controller.close();\n },\n });\n};\n","/**\n * 事件数据取样,某些流 chunk 处理,需要用到前后的 chunk 信息,因此设计一个类缓存相邻 chunk,用于处理依据\n */\nexport class EvtSample {\n private _evtSampleMap: Map<string, any> = new Map();\n private _key1: string = \"1\";\n private _key2: string = \"2\";\n private _maxSample = 2;\n\n public addEventSample(evt: any) {\n if (this._evtSampleMap.size >= this._maxSample) {\n const evt2 = this._evtSampleMap.get(this._key2);\n this._evtSampleMap.set(this._key1, evt2);\n this._evtSampleMap.set(this._key2, evt);\n return;\n }\n\n this._evtSampleMap.set((this._evtSampleMap.size + 1).toString(), evt);\n }\n\n public getFirstSample() {\n return this._evtSampleMap.get(this._key1);\n }\n\n public getSecondSample() {\n return this._evtSampleMap.get(this._key2);\n }\n}\n","import { LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { StreamChatData } from '@coze/api';\nimport { EvtSample } from '../evt-sample';\n\n/**\n * 补充特殊的 llm chunk, reasoning-end, text-start\n */\nexport class LLMChunkInjectorTransformStream extends TransformStream<\n StreamChatData,\n | StreamChatData\n | (LanguageModelV2StreamPart & {\n disableTransform: boolean;\n })\n> {\n private eventSampleMap = new EvtSample();\n\n constructor() {\n super({\n transform: (\n part: StreamChatData,\n controller: TransformStreamDefaultController<\n StreamChatData | (LanguageModelV2StreamPart & { disableTransform: boolean })\n >\n ) => {\n // 添加事件样本(原逻辑中的addEventSample)\n this.eventSampleMap.addEventSample(part);\n\n // 处理sample1/sample2特殊判断逻辑\n const sample1 = this.eventSampleMap.getFirstSample();\n const sample2 = this.eventSampleMap.getSecondSample();\n\n // handle reasoning end\n if (\n sample1 &&\n sample2 &&\n sample1.data.reasoning_content &&\n !sample2.data.reasoning_content\n ) {\n controller.enqueue({\n disableTransform: true,\n type: 'reasoning-end',\n id: sample1.data.conversation_id,\n });\n }\n\n // handle text-start\n if (sample1 && sample2 && !sample1.data.content && sample2.data.content) {\n controller.enqueue({\n disableTransform: true,\n type: 'text-start',\n id: sample2.data.conversation_id,\n });\n }\n\n // 传递part到下一个转换流\n controller.enqueue(part);\n },\n });\n }\n}\n","import { ChatEventType, StreamChatData } from '@coze/api';\nimport { ServerSentEvent } from 'parse-sse';\n\nexport default class MCPChunkFilterTransformStream extends TransformStream {\n isVisibleMsgPart(evtData: any, part: any, omitTextEndChunk?: boolean) {\n if (evtData.type === 'knowledge' && evtData.role === 'assistant') {\n return false;\n }\n\n // Omit text-end chunk if the flag is set\n if (\n omitTextEndChunk &&\n part.event === ChatEventType.CONVERSATION_MESSAGE_COMPLETED &&\n part.data.type !== 'follow_up'\n ) {\n return false;\n }\n\n if (part.event === 'conversation.message.completed' && evtData.type == 'verbose') {\n return false;\n }\n\n return true;\n }\n\n constructor(omitTextEndChunk: boolean = false) {\n super({\n transform: (\n evt: ServerSentEvent,\n controller: TransformStreamDefaultController<StreamChatData>\n ) => {\n if (!evt) return;\n\n // 解析evt为part对象(原逻辑中的part构建)\n const part = {\n event: evt.type,\n data: JSON.parse(evt.data) || {},\n } as StreamChatData;\n\n // 过滤逻辑:仅传递满足条件的part\n if (this.isVisibleMsgPart(part.data, part, omitTextEndChunk)) {\n controller.enqueue(part);\n }\n },\n });\n }\n}\n","import { LanguageModelV2StreamPart, SharedV2ProviderMetadata } from '@ai-sdk/provider';\nimport { ChatEventType } from '@coze/api';\n\nexport const mcp2llmChunk = (part: any): LanguageModelV2StreamPart | null => {\n const fullData = JSON.stringify(part);\n\n switch (part.event) {\n case ChatEventType.CONVERSATION_CHAT_CREATED:\n return {\n type: 'raw',\n rawValue: part.data,\n };\n break;\n\n case ChatEventType.CONVERSATION_CHAT_IN_PROGRESS:\n return {\n // type: \"text-delta\",\n // id: part.data.conversation_id,\n // delta: part.data.content || \"\",\n // providerMetadata: {\n // raw: { data: fullData },\n // },\n type: 'raw',\n rawValue: part.data,\n };\n break;\n\n case ChatEventType.CONVERSATION_MESSAGE_DELTA:\n const isReasoning = Boolean(part.data.reasoning_content);\n return {\n type: isReasoning ? 'reasoning-delta' : 'text-delta',\n delta: isReasoning ? part.data.reasoning_content : part.data.content,\n id: part.data.conversation_id,\n providerMetadata: {},\n };\n break;\n\n case ChatEventType.CONVERSATION_MESSAGE_COMPLETED:\n if (part.data && part.data.type === 'follow_up') {\n return {\n type: 'raw',\n rawValue: part.data,\n };\n }\n\n if (part.status === 'completed') {\n return {\n type: 'text-end',\n id: part.data.conversation_id,\n // delta: part.data.content || part.data.reasoning_content || \"\",\n providerMetadata: {},\n };\n }\n\n return {\n type: 'raw',\n rawValue: part.data,\n };\n\n break;\n\n case ChatEventType.CONVERSATION_CHAT_COMPLETED:\n // Yield finish event with usage information\n return {\n type: 'finish',\n finishReason: 'stop',\n usage: {\n inputTokens: part.data.usage?.input_count || 0,\n outputTokens: part.data.usage?.output_count || 0,\n totalTokens: part.data.usage?.total_count || 0,\n },\n };\n break;\n\n case ChatEventType.DONE:\n // Stream completed successfully\n return {\n type: 'finish',\n finishReason: 'stop',\n usage: {\n inputTokens: part.data.usage?.input_count || 0,\n outputTokens: part.data.usage?.output_count || 0,\n totalTokens: part.data.usage?.total_count || 0,\n },\n };\n break;\n\n case ChatEventType.ERROR:\n // Handle errors\n console.error('[ERROR]', part.data);\n return {\n type: 'error',\n error: new Error(`Coze streaming error: ${JSON.stringify(part.data)}`),\n };\n\n default:\n // Handle unknown event types\n console.warn('Unknown event type:', part.event);\n return {\n type: 'error',\n error: 'Unknown event type' + part.event,\n };\n }\n\n return {\n type: 'error',\n error: 'unknown',\n };\n};\n","import { ChatEventType, StreamChatData } from '@coze/api';\nimport { mcp2llmChunk } from '../utils/mcp-to-llm-chunk';\nimport { LanguageModelV2StreamPart } from '@ai-sdk/provider';\n\nexport default class LLMPartTrasnformStream extends TransformStream {\n constructor() {\n super({\n transform: (\n part: StreamChatData | (LanguageModelV2StreamPart & { disableTransform: boolean }),\n controller: TransformStreamDefaultController<LanguageModelV2StreamPart | undefined>\n ) => {\n // Bypass transform if disableTransform flag is set\n const { disableTransform } = part as any;\n if (disableTransform) {\n controller.enqueue(part as any);\n return;\n }\n\n try {\n const chunk = mcp2llmChunk(part as any);\n if (chunk) {\n controller.enqueue(chunk as any);\n }\n } catch (error) {\n console.error('transform coze evt error');\n }\n },\n });\n }\n}\n","import { LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { JSONParser } from '@streamparser/json';\nimport { createTextInfoEnqueuer } from '../utils/enqueue-text-info';\nimport { rebuildFieldsJsonStructure } from '../utils/fields-json-rebuild';\n\nexport const createFieldsJsonTransformStream = (enableJsonParser: boolean) => {\n let parser: JSONParser;\n let id: string;\n\n const chunkGuard = (chunk: LanguageModelV2StreamPart): boolean => {\n if (!enableJsonParser) {\n return false;\n }\n\n if (chunk.type !== 'text-delta' || !('delta' in chunk)) {\n return false;\n }\n\n return true;\n };\n\n const transformer = {\n flush: (controller: TransformStreamDefaultController<any>) => {\n try {\n // parser?.end();\n controller.terminate(); // 信号通知下游可读流已关闭\n } catch (e) {\n controller.error('stop error' + e);\n }\n },\n transform: (\n chunk: LanguageModelV2StreamPart,\n controller: TransformStreamDefaultController<LanguageModelV2StreamPart>\n ) => {\n if (!parser) {\n return;\n }\n\n // console.log(\"chunk arrived\", chunk);\n\n try {\n if (chunkGuard(chunk)) {\n if ('id' in chunk && 'delta' in chunk) {\n id = chunk.id;\n parser.write(chunk.delta);\n }\n } else {\n controller.enqueue(chunk);\n }\n } catch (e) {\n controller.error(e);\n }\n },\n start: (controller: TransformStreamDefaultController<any>) => {\n parser = new JSONParser({\n paths: ['$.*'],\n });\n\n const enqueueTextDelta = enableJsonParser\n ? createTextInfoEnqueuer(controller)\n : (content: string) => {};\n\n // manualChunkForfieldsBeginTips(controller);\n // enqueueTextDelta(\"开始构建字段\");\n\n parser.onValue = (parsedInfo: any) => {\n const value = parsedInfo.value;\n\n if (value.widget) {\n value.widget.widgetName = `_widget_${Date.now()}`;\n }\n\n\n enqueueTextDelta(\n JSON.stringify(value),\n JSON.stringify({\n type: 'mcp-fields-json',\n field: rebuildFieldsJsonStructure(value),\n }),\n id\n );\n };\n\n let errorLogged = false;\n parser.onError = (err: any) => {\n // controller.enqueue({\n // type: \"error\",\n // error: \"JsonWidgetStream: JSON Parsing Error:\" + err.message,\n // });\n if (!errorLogged) {\n console.error('JsonWidgetStream: JSON Parsing Error:', err);\n errorLogged = true;\n }\n };\n\n parser.onEnd = () => {\n enqueueTextDelta(\n ' ',\n JSON.stringify({\n appendConfirm: 'save-fields',\n })\n );\n };\n },\n };\n\n return new TransformStream<LanguageModelV2StreamPart, any>(transformer);\n};\n","import { JSONValue, LanguageModelV2StreamPart } from '@ai-sdk/provider';\nimport { generateId } from '@ai-sdk/provider-utils';\n\nexport type TextInfoEnqueuer = (textInfo: string, metaPayload?: JSONValue, id?: string) => void;\n\nexport const createTextInfoEnqueuer =\n (controller: TransformStreamDefaultController<LanguageModelV2StreamPart>) =>\n (\n textInfo: string,\n metaPayload?: JSONValue,\n id: string = generateId(),\n deltaOnly: boolean = false\n ) => {\n const i = id ?? generateId();\n\n const startPart: LanguageModelV2StreamPart = {\n type: 'text-start',\n id: i,\n };\n\n const deltaPart: LanguageModelV2StreamPart = {\n type: 'text-delta',\n id: i,\n delta: textInfo,\n providerMetadata: metaPayload\n ? {\n raw: { data: metaPayload },\n }\n : undefined,\n };\n\n const endPart: LanguageModelV2StreamPart = {\n type: 'text-end',\n id: i,\n };\n\n if (deltaOnly) {\n controller.enqueue(deltaPart);\n return;\n }\n\n controller.enqueue(startPart);\n controller.enqueue(deltaPart);\n controller.enqueue(endPart);\n };\n","const REG_EX_MAP: Record<string, string> = {\n 手机号码: \"^((\\\\(\\\\d{2,3}\\\\))|(\\\\d{3}\\\\-))?1\\\\d{10}$\",\n 电话号码: \"^(0[0-9]{2,3}\\\\-)?([2-9][0-9]{6,7})+(\\\\-[0-9]{1,4})?$\",\n 邮政编码: \"^\\\\d{6}$\",\n 身份证号码: \"(^\\\\d{15}$)|(^\\\\d{18}$)|(^\\\\d{17}(\\\\d|X|x)$)\",\n 邮箱: \"^([a-zA-Z0-9_\\\\.\\\\-])+\\\\@(([a-zA-Z0-9\\\\-])+\\\\.)+([a-zA-Z0-9]{2,4})+$\",\n 时分: \"(^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}$)\",\n 时分秒:\n \"(^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$)\",\n 图片链接: \"imageurl\",\n 二维码图片: \"qrcode\",\n 条形码图片: \"barcode\",\n 自定义: \"custom\",\n};\n\nexport const rebuildText = (truncatedJson: unknown) => {\n const { widget, labelStyle, label, ...rest } = (truncatedJson as any) || {};\n\n const regex = REG_EX_MAP[labelStyle] || \"\";\n return {\n widget: {\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n // triggerEvent: 0,\n customCls: null,\n height: 34,\n width: 350,\n text: null,\n value: \"\", //默认值 没有默认值的话 整个value不存在\n enable: true,\n visible: true,\n // hint: placeholder,\n allowBlank: true,\n rely: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n // regex, //格式 ^((\\(\\d{2,3}\\))|(\\d{3}\\-))?1\\d{10}$ 手机号码 ^(0[0-9]{2,3}\\-)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?$ 电话号码 ^\\d{6}$ 邮政编码 (^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$) 身份证号码 ^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$ 邮箱 (^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}$) 时分 (^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$) 时分秒 imageurl 图片链接 qrcode 二维码图片 barcode 条形码图片 custom 自定义\n noRepeat: true,\n scan: null,\n // textMode,\n generateQR: false,\n eventAlert: true,\n alertinfo: {\n icon: \"error\",\n // tip: placeholder,\n // msg: placeholder,\n },\n enterClearText: true,\n ...widget,\n regex,\n type: \"text\",\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const buildWidgetName: (prefix?: string, index?: number) => string = (\n prefix: string = \"_widget\",\n index?: number,\n) => {\n const baseName = `${prefix}_${Date.now()}`;\n\n if (index === undefined) {\n return baseName;\n }\n\n const idxLength = index.toString().length;\n const slicedBaseName = baseName.slice(0, -idxLength);\n\n return `${slicedBaseName}${index}`;\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildNumber = (value: unknown): unknown => {\n const { widget, label, ...rest } = (value as any) || {};\n return {\n widget: {\n type: \"number\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: false,\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n // regex,\n // hint: placeholder,\n noRepeat: false,\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n allowDecimals: true, //允许小数,默认值 true,已废弃\n allowNegative: true, //允许负数,默认值 true ,已废弃\n // maxNumber: max, //限定数值范围 最大值\n // minNumber: min, //限定数值范围 最小值\n displayMode: \"percent\", // 新的格式, percent 百分比 number 数值\n precision: null, //保留小数位数\n thousandsSeparator: false, //显示千分符\n notround: true, //不四舍五入\n format: \"\", //旧的格式,新的由多个属性来控制,前端代码会用其他几个参数拼接出正确的这个值。 其中结尾有% 代表百分比 ,没有%代表数字 ,然后小数点后面的0的个数代表 保留的小数位数,如果小数点后面没有0代表(如0.%),代表没有设置 保留小数位数,保留用户输入的所有小数\n afterSuffix: {\n //单位\n zh_cn: \"\", //中文的\n en_us: \"\", //英文的\n zh_tw: \"\", //繁体的\n },\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const rebuildSelect = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"combo\",\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n mode: 1,\n allowAddLinkData: false,\n // items: options,\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n customCls: null,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const rebuildRadioGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n // items: options,\n layout: \"vertical\",\n stopCancel: false,\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n customCls: null,\n value: null,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n ...widget,\n type: \"radiogroup\",\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n labelStyle: label,\n };\n};\n","export const rebuildDatetime = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"datetime\",\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n widgetName: `_widget_${Date.now()}`,\n\n widgetNameAlias: \"\",\n customCls: null,\n value: \"today\", //默认值, today 填写当前时间 ,如果是数字,如 1762957800000 ,是自定义的时间,为所选时间的时间戳的毫秒级,\n rely: null,\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n hint: \"\",\n dateLimit: {\n //日期范围\n week: {\n //可选择星期\n enable: false, //是否开启可选择星期\n value: [\n //星期 星期一到天,用1-7代表\n 1, 2, 6,\n ],\n },\n start: {\n //最早可选时间\n enable: false, //是否开启最早可选时间\n mode: \"dynamic\", //模式: dynamic 动态 static 固定值 fieldValue 字段值\n value: \"yesterday\", //限定的值: today 今天 yesterday 昨天 tomorrow 明天 7day_before 七天前 7day_after 七天后 30day_before 30天前 30day_after 30天后\n },\n end: {\n //最晚可选时间\n enable: false, //是否开启最晚可选时间\n mode: \"static\", //模式: dynamic 动态 static 固定值 fieldValue 字段值\n value: 1762093800000, //限定的值:这种数字的为 选择的固定值,时间的时间戳,毫秒级别 ,如果为 _widget_1762154537014 这种,为字段的值,这个字段需要也是日期字段,和当前这个字段是同一个 format的\n },\n },\n\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const defaultBuilder = (truncatedJson: unknown) => {\n return truncatedJson;\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDeptGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"deptgroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildSn = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"sn\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: 0,\n customCls: null,\n width: 350,\n enable: true,\n visible: true,\n // rules: rules,\n importMode: 1, //导入模式 1 excel末尾递增 2 excel最大值递增 3 excel/表单最大值比较递增\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDept = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"dept\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildUserGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"usergroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n limitWidget: null, //可选范围 由部门字段确定,如果有值 是 _widget_1762226067008 这种,另一个部门字段的id。和limit互斥,limit将为[]\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDataLinker = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n rely: {\n widgets: [],\n },\n linkFilter: {},\n allowAdd: true, //允许新增关联表数据\n refType: \"form\", //关联表的类型,只能是form\n ...widget,\n linkFields: [],\n labelStyle: label,\n type: \"linkdata\",\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nconst tmpMapFields2Fields = (mapFieldsFromTruncatedJson: unknown[]) => {\n if (!mapFieldsFromTruncatedJson || !mapFieldsFromTruncatedJson.length) {\n return mapFieldsFromTruncatedJson;\n }\n\n return mapFieldsFromTruncatedJson.map((mf: any, index: number) => {\n return {\n id: index,\n\n // name: \"_widget_1761976674767\",\n // form: \"a2f34ef882158a3e97da4ef7\",\n // tag: buildWidgetName(\"f_\", index),\n\n title: mf.field,\n text: mf.field,\n icon: `icon-widget-${mf.type}`,\n type: mf.type,\n isEditable: true,\n group: \"dimension,filter,select\",\n formula: \"\",\n };\n });\n};\n\nconst tmpMapFields2MapFields = (mapFieldsFromTruncatedJson: unknown[]) => {\n if (!mapFieldsFromTruncatedJson || !mapFieldsFromTruncatedJson.length) {\n return mapFieldsFromTruncatedJson;\n }\n\n return mapFieldsFromTruncatedJson.map((mf: any) => {\n return {\n mode: \"depend\",\n ...mf,\n };\n });\n};\n\nexport const rebuildDataLoader = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"dataload\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n width: 350,\n text: label,\n enable: true,\n visible: true,\n allowBlank: true,\n allowAddData: true, // 允许新增数据源数据\n ...widget,\n mode: \"list\", //一直是 list 应该是废弃的\n loaddataconfig: {\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n },\n dataloadmode: [\"add\", \"cover\"],\n filter: {\n cond: [],\n rel: \"and\",\n },\n defaultSort: [],\n treeFields: {},\n mode: \"list\",\n selectFields: [],\n triggerControl: null,\n triggerWidget: null,\n triggerFieldMode: \"none\",\n triggerField: null,\n forms: widget?.loaddataconfig?.forms,\n selectArg: [],\n selectRel: \"and\",\n fields: tmpMapFields2Fields(widget?.loaddataconfig?.mapFields),\n mapFields: tmpMapFields2MapFields(widget?.loaddataconfig?.mapFields),\n },\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildUser = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"user\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n limitWidget: null, //可选范围 由部门字段确定,如果有值 是 _widget_1762226067008 这种,另一个部门字段的id。和limit互斥,limit将为[]\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildSignature = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"signature\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n rely: null,\n ...widget,\n labelStyle: label,\n },\n description: null,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildImage = (truncatedJson: unknown) => {\n const { widget, label, ...rest }: any = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"image\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 100,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n download: true, //打包下载\n is_file_down: true, //操作权限 可下载\n check_image_exif: true, //照片支持查看EXIF扩展信息\n online_edit: false,\n online_edit_record: false,\n fileType: [\n //支持上传的类型,默认,不可以设置\n \"jpg\",\n \"jpeg\",\n \"png\",\n \"gif\",\n \"bmp\",\n \"tif\",\n ],\n compressed: true, //三方图片压缩\n wxOriginalComponent: true, //微信/企业微信原生拍照模式\n onlyCamera: false, //仅允许拍照上传\n preview: true, //是否可以预览 默认 不可以设置\n watermarkSwitch: true, //水印属性\n watermarkPosition: \"center\", //水印位置\n watermarkFieldTitle: true, //是否显示水印字段标题\n watermarkSize: \"14\", //水印字体大小 不可以设置\n watermarkFixedField: {},\n previewWidth: 450, //预览的宽 默认 不可以设置\n previewHeight: 450, //预览的高 默认 不可以设置\n browserCompress: true, //浏览器图片压缩\n quality: 0.7, //压缩图片比例,开启 浏览器图片压缩 后才能设置\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildUploader = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"upload\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n maxFileCount: 50, //允许多文件上传 1为不可以 50为可以\n download: true, //打包下载\n is_file_down: true, //操作权限 可下载\n check_image_exif: true, //照片支持查看EXIF扩展信息\n online_edit: true, //允许文档在线编辑\n online_edit_record: true, //是否查看协作记录\n fileSizeLimit: 10485760, //设置单个文件大小上限,单位是字节,范围 1M-20M\n // fileType,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildCheckboxGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"checkboxgroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n layout: \"vertical\",\n allowAddOptions: false, //允许成员填写时添加新选项\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildLine = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"separator\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 12,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildComboChecker = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"combocheck\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n mode: \"\",\n allowAddOptions: false, //允许成员填写时添加新选项\n allowAddLinkData: false,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildLocation = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"location\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n adjustable: true, //允许移动端微调\n lnglatVisible: true, //显示经纬度坐标\n autoLocation: true, //移动端自动触发定位\n enablePcLocation: true, //允许PC端定位并选择位置\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildTextarea = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"textarea\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: false,\n customCls: null,\n height: 140,\n width: 734,\n value: \"\",\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n autoHeight: true, //根据内容自适应高度\n maxLength: 5000, //限制输入最大字符数 不限制的话,整个maxLength不存在\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildButton = (truncatedJson: unknown = {}) => {\n const { widget, label, ...rest } = truncatedJson as any;\n\n return {\n widget: {\n type: \"button\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: 0,\n customCls: null,\n height: 36,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: false,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n funMode: \"popupreport\",\n },\n background: {\n //颜色\n mode: \"color\",\n position: \"center\",\n },\n mode: \"all\", //模式 all 扩展 popupreport 弹出报表 popupform 弹出表单 print 页面打印 popuppage 弹出外部网页\n theme: \"default\", //风格 default 默认,有边框有底色 style1 有边框无底色 none 无边框无底色\n eventAlert: false, //是否显示提醒框\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildAddress = (truncatedJson: unknown = {}) => {\n const { widget, label, ...rest } = truncatedJson as any;\n\n return {\n widget: {\n type: \"address\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n width: 720,\n enable: true,\n visible: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n needDetail: true,\n eventMode: 1, //公式联动触发模式 1 默认,省市县/详细地址内容改变都触发 2 只有省市县改变才触发 3 只有详细地址改变才触发\n seleceMapAddress: true, //开启经纬度定位\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { rebuildFieldsJsonStructure } from \".\";\nimport { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildSubform = (originObj: unknown = {}) => {\n const { widget, label, ...rest } = originObj as any;\n return {\n widget: {\n type: \"subform\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n labelStyle: label,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n items: (widget.items || []).map((item: any, index: number) => {\n const result = rebuildFieldsJsonStructure(item, true);\n\n result.widget.widgetName = buildWidgetName(\"_widget\", index);\n\n return result;\n }),\n sortable: true, //启用子表单数据排序\n allowImportV2: false, //从excel导入数据\n sticky_column: {\n //PC端冻结前 n 列\n limit: 2, //多少列 范围 1-3\n enable: true, //是否开启\n },\n sticky_column_mobile: {\n //移动端冻结前 n 列\n limit: 1, //多少列 范围 1-3\n enable: true, //是否开启\n },\n mobileStyle: \"table\", //移动端显示样式 list 纵向展开 table 横向表格\n subform_create: true, //可新增记录\n subform_insert: true, //可插入记录\n subform_edit: true, //可编辑已有记录\n subform_delete: true, //可删除已有记录\n subform_fill: true, //允许填报数据\n subform_import: true, //允许导入数据\n subform_dataload: true, //允许数据加载\n loaddataconfig: {\n //数据加载设置\n mode: \"tree\",\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n },\n },\n allowLoadData: false, //是否开启数据加载\n allowAddData: true, //允许新增数据源数据\n subformloaddataTitle: \"数据加载\", //数据加载显示的标题\n subFieldShowRules: [], //子字段显隐规则\n quick_fill: true, //从excel填报数据\n },\n description: null,\n label,\n lineWidth: 12,\n tab: null,\n };\n};\n","import { buildWidgetName } from \"../build-widget-name\";\n\nexport const rebuildDataQuery = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n linkFilter: {},\n rely: {\n widgets: [],\n },\n showMode: \"one\", //显示数据条数 one 一条 many 多条\n allowAdd: true, //允许新增关联表数据,只有 refType 为 form才可以选择true\n refType: \"form\", //关联表的类型,根据 linkForm 表的类型决定的。 form 表单 etl_table 视图 aggregate_table 聚合表\n showType: \"none\", //数据显示模式 none 默认 label 标题\n addExtendSet: [],\n ...widget,\n linkFields: [],\n labelStyle: label,\n type: \"linkquery\",\n },\n description: null,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { type FieldType } from '@baishuyun/types';\nimport { rebuildText } from './rebuild-text';\nimport { rebuildNumber } from './rebuild-number';\nimport { rebuildSelect } from './rebuild-select';\nimport { rebuildRadioGroup } from './rebuild-radio-group';\nimport { rebuildDatetime } from './rebuild-date-time';\nimport { defaultBuilder } from './default-builder';\nimport { rebuildDeptGroup } from './rebuild-dept-group';\nimport { rebuildSn } from './rebuild-sn';\nimport { rebuildDept } from './rebuild-dept';\nimport { rebuildUserGroup } from './rebuild-user-group';\nimport { rebuildDataLinker } from './rebuild-data-linker';\nimport { rebuildDataLoader } from './rebuild-data-loader';\nimport { rebuildUser } from './rebuild-user';\nimport { rebuildSignature } from './rebuild-signature';\nimport { rebuildImage } from './rebuild-image';\nimport { rebuildUploader } from './rebuild-upload';\nimport { rebuildCheckboxGroup } from './rebuild-checkbox-group';\nimport { rebuildLine } from './rebuild-line';\nimport { rebuildComboChecker } from './rebuild-combo-checker';\nimport { rebuildLocation } from './rebuild-location';\nimport { rebuildTextarea } from './rebuild-textarea';\nimport { rebuildButton } from './rebuild-button';\nimport { rebuildAddress } from './rebuild-address';\nimport { rebuildSubform } from './rebuild-subform';\nimport { rebuildDataQuery } from './rebuild-data-query';\n\n/**\n * 字段类型重建工具映射\n */\nconst RebuilderMap: Record<FieldType, (origin: unknown) => unknown> = {\n address: rebuildAddress,\n button: rebuildButton,\n textarea: rebuildTextarea,\n datetime: rebuildDatetime,\n text: rebuildText,\n password: rebuildText,\n location: rebuildLocation,\n radiogroup: rebuildRadioGroup,\n radio: rebuildRadioGroup,\n combo: rebuildSelect,\n combocheck: rebuildComboChecker,\n separator: rebuildLine,\n checkboxgroup: rebuildCheckboxGroup,\n upload: rebuildUploader,\n number: rebuildNumber,\n image: rebuildImage,\n signature: rebuildSignature,\n user: rebuildUser,\n dataload: rebuildDataLoader,\n linkdata: rebuildDataLinker,\n linkquery: rebuildDataQuery,\n usergroup: rebuildUserGroup,\n subform: rebuildSubform,\n dept: rebuildDept,\n sn: rebuildSn,\n deptgroup: rebuildDeptGroup,\n unknown: defaultBuilder,\n};\n\n/**\n * 补全字段表示的 json 结构\n */\nexport const rebuildFieldsJsonStructure = (truncatedJson: any, subItemsOnly = false) => {\n // 校验基础结构\n if (!truncatedJson || !truncatedJson.widget || !truncatedJson.widget.type) {\n return truncatedJson;\n }\n\n // 根据字段类型选择对应的重建器\n const fieldType = (truncatedJson.widget.type as FieldType) || 'unknown';\n\n // 防止子表单内出现子表单字段,导致无限递归\n if (subItemsOnly && fieldType === 'subform') {\n return defaultBuilder(truncatedJson);\n }\n\n const rebuilder = RebuilderMap[fieldType] || defaultBuilder;\n\n // 执行重建\n return rebuilder(truncatedJson);\n};\n","import {\n createTextInfoEnqueuer,\n TextInfoEnqueuer,\n} from \"../utils/enqueue-text-info\";\n\nexport default class SuggestionTransformStream extends TransformStream<\n any,\n any\n> {\n constructor(enable: boolean) {\n let enqueuer: TextInfoEnqueuer;\n super({\n start(controller) {\n enqueuer = createTextInfoEnqueuer(controller);\n },\n transform(chunk, controller) {\n if (\n enable &&\n chunk.type === \"raw\" &&\n chunk.rawValue.type === \"follow_up\" &&\n enqueuer\n ) {\n enqueuer(\n chunk.rawValue.content,\n JSON.stringify({\n type: \"suggestion\",\n }),\n );\n } else {\n controller.enqueue(chunk);\n }\n },\n });\n }\n}\n"],"mappings":"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","names":["ChatEventType","generateId"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@baishuyun/coze-provider",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"typescript": "5.8.3",
|
|
33
33
|
"vite": "^5.1.4",
|
|
34
34
|
"vite-plugin-dts": "^4.5.4",
|
|
35
|
-
"@baishuyun/types": "1.0.
|
|
36
|
-
"@baishuyun/typescript-config": "0.0.
|
|
35
|
+
"@baishuyun/types": "1.0.9",
|
|
36
|
+
"@baishuyun/typescript-config": "0.0.9"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"zod": "^3.25.76 || ^4.1.8"
|
|
@@ -86,7 +86,7 @@ export class CozeLanguageModel implements LanguageModelV2 {
|
|
|
86
86
|
const body = {
|
|
87
87
|
bot_id: this.config.botId,
|
|
88
88
|
auto_save_history: false,
|
|
89
|
-
user_id: user_id || idFromToken || 'guest_' + Date.now(),
|
|
89
|
+
user_id: '7543191937730215936', // || user_id || idFromToken || 'guest_' + Date.now(),
|
|
90
90
|
stream: true,
|
|
91
91
|
additional_messages: messages,
|
|
92
92
|
};
|