libre-webui 0.15.1 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -8
- package/backend/dist/db.d.ts.map +1 -1
- package/backend/dist/db.js +63 -0
- package/backend/dist/db.js.map +1 -1
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +4 -4
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/routes/chat.d.ts.map +1 -1
- package/backend/dist/routes/chat.js +93 -10
- package/backend/dist/routes/chat.js.map +1 -1
- package/backend/dist/routes/imageGen.d.ts.map +1 -1
- package/backend/dist/routes/imageGen.js +52 -29
- package/backend/dist/routes/imageGen.js.map +1 -1
- package/backend/dist/routes/plugins.d.ts.map +1 -1
- package/backend/dist/routes/plugins.js +226 -42
- package/backend/dist/routes/plugins.js.map +1 -1
- package/backend/dist/routes/preferences.d.ts.map +1 -1
- package/backend/dist/routes/preferences.js +5 -4
- package/backend/dist/routes/preferences.js.map +1 -1
- package/backend/dist/routes/tts.js +2 -2
- package/backend/dist/routes/tts.js.map +1 -1
- package/backend/dist/routes/work.d.ts.map +1 -1
- package/backend/dist/routes/work.js +2 -1
- package/backend/dist/routes/work.js.map +1 -1
- package/backend/dist/services/assistantCompletionService.d.ts +2 -1
- package/backend/dist/services/assistantCompletionService.d.ts.map +1 -1
- package/backend/dist/services/assistantCompletionService.js +3 -1
- package/backend/dist/services/assistantCompletionService.js.map +1 -1
- package/backend/dist/services/chatGenerationService.d.ts +5 -3
- package/backend/dist/services/chatGenerationService.d.ts.map +1 -1
- package/backend/dist/services/chatGenerationService.js +18 -6
- package/backend/dist/services/chatGenerationService.js.map +1 -1
- package/backend/dist/services/chatRequestService.d.ts +6 -4
- package/backend/dist/services/chatRequestService.d.ts.map +1 -1
- package/backend/dist/services/chatRequestService.js +10 -2
- package/backend/dist/services/chatRequestService.js.map +1 -1
- package/backend/dist/services/chatService.d.ts +2 -2
- package/backend/dist/services/chatService.d.ts.map +1 -1
- package/backend/dist/services/chatService.js +29 -17
- package/backend/dist/services/chatService.js.map +1 -1
- package/backend/dist/services/embeddingService.js +1 -1
- package/backend/dist/services/embeddingService.js.map +1 -1
- package/backend/dist/services/pluginActivationService.d.ts +11 -0
- package/backend/dist/services/pluginActivationService.d.ts.map +1 -0
- package/backend/dist/services/pluginActivationService.js +163 -0
- package/backend/dist/services/pluginActivationService.js.map +1 -0
- package/backend/dist/services/pluginCapabilityRegistryService.d.ts +1 -1
- package/backend/dist/services/pluginCapabilityRegistryService.d.ts.map +1 -1
- package/backend/dist/services/pluginCapabilityRegistryService.js +1 -1
- package/backend/dist/services/pluginCapabilityRegistryService.js.map +1 -1
- package/backend/dist/services/pluginCredentialsService.d.ts +16 -8
- package/backend/dist/services/pluginCredentialsService.d.ts.map +1 -1
- package/backend/dist/services/pluginCredentialsService.js +47 -14
- package/backend/dist/services/pluginCredentialsService.js.map +1 -1
- package/backend/dist/services/pluginEmbeddingService.d.ts +2 -2
- package/backend/dist/services/pluginEmbeddingService.d.ts.map +1 -1
- package/backend/dist/services/pluginEmbeddingService.js +33 -13
- package/backend/dist/services/pluginEmbeddingService.js.map +1 -1
- package/backend/dist/services/pluginImageGenerationService.d.ts +11 -7
- package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -1
- package/backend/dist/services/pluginImageGenerationService.js +265 -81
- package/backend/dist/services/pluginImageGenerationService.js.map +1 -1
- package/backend/dist/services/pluginService.d.ts +97 -26
- package/backend/dist/services/pluginService.d.ts.map +1 -1
- package/backend/dist/services/pluginService.js +797 -178
- package/backend/dist/services/pluginService.js.map +1 -1
- package/backend/dist/services/pluginTTSService.d.ts +4 -4
- package/backend/dist/services/pluginTTSService.d.ts.map +1 -1
- package/backend/dist/services/pluginTTSService.js +24 -28
- package/backend/dist/services/pluginTTSService.js.map +1 -1
- package/backend/dist/services/pluginVariablesService.d.ts +6 -1
- package/backend/dist/services/pluginVariablesService.d.ts.map +1 -1
- package/backend/dist/services/pluginVariablesService.js +59 -1
- package/backend/dist/services/pluginVariablesService.js.map +1 -1
- package/backend/dist/services/preferencesService.d.ts +2 -2
- package/backend/dist/services/preferencesService.d.ts.map +1 -1
- package/backend/dist/services/preferencesService.js +78 -10
- package/backend/dist/services/preferencesService.js.map +1 -1
- package/backend/dist/services/titleGenerationService.d.ts +6 -4
- package/backend/dist/services/titleGenerationService.d.ts.map +1 -1
- package/backend/dist/services/titleGenerationService.js +9 -5
- package/backend/dist/services/titleGenerationService.js.map +1 -1
- package/backend/dist/services/workAgentService.d.ts +5 -2
- package/backend/dist/services/workAgentService.d.ts.map +1 -1
- package/backend/dist/services/workAgentService.js +315 -44
- package/backend/dist/services/workAgentService.js.map +1 -1
- package/backend/dist/services/workModelProviderService.d.ts +6 -3
- package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
- package/backend/dist/services/workModelProviderService.js +243 -19
- package/backend/dist/services/workModelProviderService.js.map +1 -1
- package/backend/dist/services/workRuntimeService.d.ts +18 -1
- package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
- package/backend/dist/services/workRuntimeService.js +62 -11
- package/backend/dist/services/workRuntimeService.js.map +1 -1
- package/backend/dist/services/workTaskService.d.ts +2 -0
- package/backend/dist/services/workTaskService.d.ts.map +1 -1
- package/backend/dist/services/workTaskService.js +89 -14
- package/backend/dist/services/workTaskService.js.map +1 -1
- package/backend/dist/storage.d.ts.map +1 -1
- package/backend/dist/storage.js +9 -6
- package/backend/dist/storage.js.map +1 -1
- package/backend/dist/storageMappers.d.ts +3 -0
- package/backend/dist/storageMappers.d.ts.map +1 -1
- package/backend/dist/storageMappers.js +3 -0
- package/backend/dist/storageMappers.js.map +1 -1
- package/backend/dist/types/index.d.ts +54 -1
- package/backend/dist/types/index.d.ts.map +1 -1
- package/backend/dist/types/index.js.map +1 -1
- package/backend/dist/types/work.d.ts +1 -1
- package/backend/dist/types/work.d.ts.map +1 -1
- package/backend/dist/utils/chatContext.d.ts +13 -1
- package/backend/dist/utils/chatContext.d.ts.map +1 -1
- package/backend/dist/utils/chatContext.js +52 -0
- package/backend/dist/utils/chatContext.js.map +1 -1
- package/backend/dist/utils/chatProviderSelection.d.ts +15 -0
- package/backend/dist/utils/chatProviderSelection.d.ts.map +1 -0
- package/backend/dist/utils/chatProviderSelection.js +59 -0
- package/backend/dist/utils/chatProviderSelection.js.map +1 -0
- package/backend/dist/utils/imageGenerationValidation.d.ts +3 -0
- package/backend/dist/utils/imageGenerationValidation.d.ts.map +1 -0
- package/backend/dist/utils/imageGenerationValidation.js +55 -0
- package/backend/dist/utils/imageGenerationValidation.js.map +1 -0
- package/backend/dist/utils/openAIResponsesAdapter.d.ts +88 -0
- package/backend/dist/utils/openAIResponsesAdapter.d.ts.map +1 -0
- package/backend/dist/utils/openAIResponsesAdapter.js +521 -0
- package/backend/dist/utils/openAIResponsesAdapter.js.map +1 -0
- package/backend/dist/utils/pluginChatAdapter.d.ts +7 -4
- package/backend/dist/utils/pluginChatAdapter.d.ts.map +1 -1
- package/backend/dist/utils/pluginChatAdapter.js +33 -5
- package/backend/dist/utils/pluginChatAdapter.js.map +1 -1
- package/backend/dist/utils/pluginChatContext.d.ts.map +1 -1
- package/backend/dist/utils/pluginChatContext.js +5 -1
- package/backend/dist/utils/pluginChatContext.js.map +1 -1
- package/backend/dist/utils/pluginConnectionVariables.d.ts +6 -0
- package/backend/dist/utils/pluginConnectionVariables.d.ts.map +1 -0
- package/backend/dist/utils/pluginConnectionVariables.js +52 -0
- package/backend/dist/utils/pluginConnectionVariables.js.map +1 -0
- package/backend/dist/utils/pluginDefinitionTrust.d.ts +9 -0
- package/backend/dist/utils/pluginDefinitionTrust.d.ts.map +1 -0
- package/backend/dist/utils/pluginDefinitionTrust.js +71 -0
- package/backend/dist/utils/pluginDefinitionTrust.js.map +1 -0
- package/backend/dist/utils/pluginStreamAdapter.d.ts +3 -0
- package/backend/dist/utils/pluginStreamAdapter.d.ts.map +1 -1
- package/backend/dist/utils/pluginStreamAdapter.js +410 -0
- package/backend/dist/utils/pluginStreamAdapter.js.map +1 -1
- package/backend/dist/utils/pluginStreaming.d.ts +7 -1
- package/backend/dist/utils/pluginStreaming.d.ts.map +1 -1
- package/backend/dist/utils/pluginStreaming.js +12 -1
- package/backend/dist/utils/pluginStreaming.js.map +1 -1
- package/backend/dist/utils/pluginValidation.d.ts +20 -2
- package/backend/dist/utils/pluginValidation.d.ts.map +1 -1
- package/backend/dist/utils/pluginValidation.js +187 -17
- package/backend/dist/utils/pluginValidation.js.map +1 -1
- package/backend/dist/utils/pluginVariableValidation.d.ts +7 -0
- package/backend/dist/utils/pluginVariableValidation.d.ts.map +1 -1
- package/backend/dist/utils/pluginVariableValidation.js +79 -4
- package/backend/dist/utils/pluginVariableValidation.js.map +1 -1
- package/backend/dist/websocketServer.d.ts.map +1 -1
- package/backend/dist/websocketServer.js +16 -3
- package/backend/dist/websocketServer.js.map +1 -1
- package/backend/package.json +1 -1
- package/frontend/dist/assets/index-BVgyQN3z.js +5 -0
- package/frontend/dist/assets/index-Dme2Ozol.css +1 -0
- package/frontend/dist/index.html +3 -3
- package/frontend/dist/js/{ArtifactContainer-BHSBrlQB.js → ArtifactContainer-CbMAYwvr.js} +1 -1
- package/frontend/dist/js/{ArtifactDemoPage-BHGJmJAT.js → ArtifactDemoPage-CWDhGWrz.js} +1 -1
- package/frontend/dist/js/ArtifactSlideOutPanel-CzUpDM59.js +1 -0
- package/frontend/dist/js/ChatPage-D0fdzy7a.js +16 -0
- package/frontend/dist/js/{FirstTimeSetup-BYWAVAdE.js → FirstTimeSetup-CfnOmy9w.js} +1 -1
- package/frontend/dist/js/GalleryPage-CMkCur9v.js +1 -0
- package/frontend/dist/js/LibreClawPage-CHEfny1k.js +1 -0
- package/frontend/dist/js/ModelSelector-COnlNsVM.js +1 -0
- package/frontend/dist/js/ModelsPage-nxheiYJp.js +2 -0
- package/frontend/dist/js/PersonasPage-C2pqDsWA.js +13 -0
- package/frontend/dist/js/{RichMessageContent-BdU5vXz9.js → RichMessageContent-Cz9y-bgl.js} +1 -1
- package/frontend/dist/js/SettingsModal-B6Se68Hd.js +1 -0
- package/frontend/dist/js/UserManagementPage-DQeL-Twp.js +1 -0
- package/frontend/dist/js/WorkPage-AcZMp8OB.js +2 -0
- package/frontend/dist/js/api-Fi-lJlfu.js +19 -0
- package/frontend/dist/js/{estree-Bu_-Wi6O.js → estree-BRklD62a.js} +1 -1
- package/frontend/dist/js/{html-Ca764Rus.js → html-BgGIAGmn.js} +1 -1
- package/frontend/dist/js/{markdown-DaiQGPEs.js → markdown-CM2nBJJi.js} +1 -1
- package/frontend/dist/js/{standalone-DWWnsbIr.js → standalone-CUBo-NGt.js} +1 -1
- package/frontend/dist/js/{typescript-CatjJeHm.js → typescript-Dcy9qxSB.js} +1 -1
- package/frontend/dist/js/useBaseQuery-CFTidwqz.js +1 -0
- package/frontend/dist/js/useQuery-UsSBfWzs.js +1 -0
- package/package.json +2 -2
- package/plugins/github.json +1 -2
- package/plugins/huggingface.json +30 -30
- package/plugins/openai.json +53 -22
- package/frontend/dist/assets/index-DkShhNBf.js +0 -5
- package/frontend/dist/assets/index-bdSWBsAM.css +0 -1
- package/frontend/dist/js/ArtifactSlideOutPanel-s8vcE5Ea.js +0 -1
- package/frontend/dist/js/ChatPage-B6Hm_pdu.js +0 -16
- package/frontend/dist/js/GalleryPage-CH4f65q8.js +0 -1
- package/frontend/dist/js/LibreClawPage-CcH7M3mJ.js +0 -1
- package/frontend/dist/js/ModelSelector-T1KZtIde.js +0 -1
- package/frontend/dist/js/ModelsPage-C1bM_Yoc.js +0 -2
- package/frontend/dist/js/PersonasPage-T_PrhnPG.js +0 -13
- package/frontend/dist/js/SettingsModal-BVj-D1L4.js +0 -1
- package/frontend/dist/js/UserManagementPage-Pix71oRW.js +0 -1
- package/frontend/dist/js/WorkPage-DdOVGyj_.js +0 -2
- package/frontend/dist/js/api-Do6u0tMM.js +0 -19
- package/frontend/dist/js/useBaseQuery-CVNuhuID.js +0 -1
- package/frontend/dist/js/useQuery-CYhC_da4.js +0 -1
|
@@ -0,0 +1,521 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Libre WebUI
|
|
3
|
+
* Copyright (C) 2025 Kroonen AI, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { createHash } from 'node:crypto';
|
|
18
|
+
export const OPENAI_RESPONSES_OUTPUT_ITEMS_METADATA_KEY = 'openAIResponsesOutputItems';
|
|
19
|
+
export const OPENAI_RESPONSES_INCOMPLETE_REASON_METADATA_KEY = 'openAIResponsesIncompleteReason';
|
|
20
|
+
export const OPENAI_RESPONSES_STATE_SCOPE_METADATA_KEY = 'openAIResponsesStateScope';
|
|
21
|
+
export const OPENAI_RESPONSES_STATE_DROPPED_METADATA_KEY = 'openAIResponsesStateDropped';
|
|
22
|
+
export const OPENAI_RESPONSES_REPLAY_MAX_ITEMS = 64;
|
|
23
|
+
export const OPENAI_RESPONSES_REPLAY_MAX_BYTES = 90000;
|
|
24
|
+
function asObject(value) {
|
|
25
|
+
return value && typeof value === 'object' && !Array.isArray(value)
|
|
26
|
+
? value
|
|
27
|
+
: undefined;
|
|
28
|
+
}
|
|
29
|
+
function nonEmptyString(value) {
|
|
30
|
+
return typeof value === 'string' && value.length > 0 ? value : undefined;
|
|
31
|
+
}
|
|
32
|
+
function outputContentBlocksAreValid(value, allowedTypes) {
|
|
33
|
+
return (Array.isArray(value) &&
|
|
34
|
+
value.every(rawBlock => {
|
|
35
|
+
const block = asObject(rawBlock);
|
|
36
|
+
const type = nonEmptyString(block?.type);
|
|
37
|
+
if (!block || !type || !allowedTypes.has(type))
|
|
38
|
+
return false;
|
|
39
|
+
if (type === 'refusal')
|
|
40
|
+
return typeof block.refusal === 'string';
|
|
41
|
+
return typeof block.text === 'string';
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
export function openAIResponsesOutputItemsValidationError(value) {
|
|
45
|
+
if (!Array.isArray(value)) {
|
|
46
|
+
return 'output must be an array';
|
|
47
|
+
}
|
|
48
|
+
const itemIds = new Set();
|
|
49
|
+
for (const [index, rawItem] of value.entries()) {
|
|
50
|
+
const item = asObject(rawItem);
|
|
51
|
+
if (!item)
|
|
52
|
+
return `output item ${index} must be an object`;
|
|
53
|
+
const itemId = nonEmptyString(item.id);
|
|
54
|
+
if (!itemId) {
|
|
55
|
+
return `output item ${index} is missing a non-empty id`;
|
|
56
|
+
}
|
|
57
|
+
if (itemIds.has(itemId)) {
|
|
58
|
+
return `duplicate output item id "${itemId}"`;
|
|
59
|
+
}
|
|
60
|
+
itemIds.add(itemId);
|
|
61
|
+
const type = nonEmptyString(item.type);
|
|
62
|
+
if (!type) {
|
|
63
|
+
return `output item ${index} is missing a non-empty type`;
|
|
64
|
+
}
|
|
65
|
+
if (type === 'function_call') {
|
|
66
|
+
if (!nonEmptyString(item.call_id) ||
|
|
67
|
+
!nonEmptyString(item.name) ||
|
|
68
|
+
typeof item.arguments !== 'string') {
|
|
69
|
+
return `function call ${index} is missing an exact call_id or name, or string arguments`;
|
|
70
|
+
}
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (type === 'message') {
|
|
74
|
+
if (item.role !== 'assistant' ||
|
|
75
|
+
!outputContentBlocksAreValid(item.content, new Set(['output_text', 'text', 'refusal']))) {
|
|
76
|
+
return `message output item ${index} has invalid role or content`;
|
|
77
|
+
}
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (type === 'reasoning') {
|
|
81
|
+
if ((item.summary !== undefined &&
|
|
82
|
+
!outputContentBlocksAreValid(item.summary, new Set(['summary_text']))) ||
|
|
83
|
+
(item.content !== undefined &&
|
|
84
|
+
!outputContentBlocksAreValid(item.content, new Set(['reasoning_text', 'text'])))) {
|
|
85
|
+
return `reasoning output item ${index} has invalid summary or content`;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
export function boundedOpenAIResponsesOutputItems(value) {
|
|
92
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
93
|
+
return { dropped: false };
|
|
94
|
+
}
|
|
95
|
+
if (value.length > OPENAI_RESPONSES_REPLAY_MAX_ITEMS) {
|
|
96
|
+
return { dropped: true };
|
|
97
|
+
}
|
|
98
|
+
if (openAIResponsesOutputItemsValidationError(value)) {
|
|
99
|
+
return { dropped: true };
|
|
100
|
+
}
|
|
101
|
+
const items = [];
|
|
102
|
+
for (const rawItem of value) {
|
|
103
|
+
const item = asObject(rawItem);
|
|
104
|
+
if (!item) {
|
|
105
|
+
return { dropped: true };
|
|
106
|
+
}
|
|
107
|
+
items.push({ ...item });
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
if (Buffer.byteLength(JSON.stringify(items), 'utf8') >
|
|
111
|
+
OPENAI_RESPONSES_REPLAY_MAX_BYTES) {
|
|
112
|
+
return { dropped: true };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return { dropped: true };
|
|
117
|
+
}
|
|
118
|
+
return { items, dropped: false };
|
|
119
|
+
}
|
|
120
|
+
function stringifyJsonValue(value) {
|
|
121
|
+
if (typeof value === 'string') {
|
|
122
|
+
return value;
|
|
123
|
+
}
|
|
124
|
+
if (value === undefined || value === null) {
|
|
125
|
+
return '';
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
return JSON.stringify(value) ?? String(value);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return String(value);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function hasMessageContent(content) {
|
|
135
|
+
if (typeof content === 'string') {
|
|
136
|
+
return content.length > 0;
|
|
137
|
+
}
|
|
138
|
+
return Array.isArray(content) && content.length > 0;
|
|
139
|
+
}
|
|
140
|
+
function toResponsesMessageContent(content) {
|
|
141
|
+
if (typeof content === 'string') {
|
|
142
|
+
return content;
|
|
143
|
+
}
|
|
144
|
+
if (!Array.isArray(content)) {
|
|
145
|
+
return stringifyJsonValue(content);
|
|
146
|
+
}
|
|
147
|
+
return content.flatMap(rawBlock => {
|
|
148
|
+
const block = asObject(rawBlock);
|
|
149
|
+
if (!block) {
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
152
|
+
if ((block.type === 'text' ||
|
|
153
|
+
block.type === 'input_text' ||
|
|
154
|
+
block.type === 'output_text') &&
|
|
155
|
+
typeof block.text === 'string') {
|
|
156
|
+
return [{ type: 'input_text', text: block.text }];
|
|
157
|
+
}
|
|
158
|
+
if (block.type !== 'image_url' && block.type !== 'input_image') {
|
|
159
|
+
return [];
|
|
160
|
+
}
|
|
161
|
+
const imageUrlObject = asObject(block.image_url);
|
|
162
|
+
const imageUrl = nonEmptyString(block.image_url) || nonEmptyString(imageUrlObject?.url);
|
|
163
|
+
if (!imageUrl) {
|
|
164
|
+
return [];
|
|
165
|
+
}
|
|
166
|
+
const detail = nonEmptyString(block.detail) || nonEmptyString(imageUrlObject?.detail);
|
|
167
|
+
return [
|
|
168
|
+
{
|
|
169
|
+
type: 'input_image',
|
|
170
|
+
image_url: imageUrl,
|
|
171
|
+
...(detail ? { detail } : {}),
|
|
172
|
+
},
|
|
173
|
+
];
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
function toResponsesFunctionCalls(value, messageIndex) {
|
|
177
|
+
if (!Array.isArray(value)) {
|
|
178
|
+
return [];
|
|
179
|
+
}
|
|
180
|
+
return value.flatMap((rawCall, callIndex) => {
|
|
181
|
+
const call = asObject(rawCall);
|
|
182
|
+
const fn = asObject(call?.function);
|
|
183
|
+
const name = nonEmptyString(fn?.name) || nonEmptyString(call?.name);
|
|
184
|
+
if (!call || !name) {
|
|
185
|
+
return [];
|
|
186
|
+
}
|
|
187
|
+
const callId = nonEmptyString(call.call_id) || nonEmptyString(call.id);
|
|
188
|
+
if (!callId) {
|
|
189
|
+
throw new Error(`Responses history function call ${messageIndex}:${callIndex} is missing an exact call_id`);
|
|
190
|
+
}
|
|
191
|
+
const args = fn && 'arguments' in fn ? fn.arguments : (call.arguments ?? undefined);
|
|
192
|
+
return [
|
|
193
|
+
{
|
|
194
|
+
type: 'function_call',
|
|
195
|
+
call_id: callId,
|
|
196
|
+
name,
|
|
197
|
+
arguments: stringifyJsonValue(args),
|
|
198
|
+
},
|
|
199
|
+
];
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Converts Chat Completions-style history into stateless Responses API input.
|
|
204
|
+
* Assistant tool calls and tool results become sibling typed input items so
|
|
205
|
+
* their call IDs remain correlated without relying on stored response state.
|
|
206
|
+
*/
|
|
207
|
+
export function toOpenAIResponsesInput(messages, expectedStateScope) {
|
|
208
|
+
return messages.flatMap((message, messageIndex) => {
|
|
209
|
+
if (message.role === 'assistant') {
|
|
210
|
+
const storedStateScope = message.providerMetadata?.[OPENAI_RESPONSES_STATE_SCOPE_METADATA_KEY];
|
|
211
|
+
const responseOutputItems = boundedOpenAIResponsesOutputItems(message.providerMetadata?.[OPENAI_RESPONSES_OUTPUT_ITEMS_METADATA_KEY]).items;
|
|
212
|
+
const replayableOutputItems = responseOutputItems &&
|
|
213
|
+
(expectedStateScope === undefined ||
|
|
214
|
+
storedStateScope === expectedStateScope)
|
|
215
|
+
? responseOutputItems
|
|
216
|
+
: [];
|
|
217
|
+
if (replayableOutputItems.length > 0) {
|
|
218
|
+
return replayableOutputItems;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
if (message.role === 'tool') {
|
|
222
|
+
const callId = nonEmptyString(message.call_id) || nonEmptyString(message.tool_call_id);
|
|
223
|
+
if (!callId) {
|
|
224
|
+
throw new Error(`Responses history tool result ${messageIndex} is missing an exact call_id`);
|
|
225
|
+
}
|
|
226
|
+
return [
|
|
227
|
+
{
|
|
228
|
+
type: 'function_call_output',
|
|
229
|
+
call_id: callId,
|
|
230
|
+
output: stringifyJsonValue(message.content),
|
|
231
|
+
},
|
|
232
|
+
];
|
|
233
|
+
}
|
|
234
|
+
const functionCalls = toResponsesFunctionCalls(message.tool_calls, messageIndex);
|
|
235
|
+
const items = [];
|
|
236
|
+
if (hasMessageContent(message.content) || functionCalls.length === 0) {
|
|
237
|
+
items.push({
|
|
238
|
+
role: message.role,
|
|
239
|
+
content: toResponsesMessageContent(message.content),
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
items.push(...functionCalls);
|
|
243
|
+
return items;
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Flattens Chat Completions function tools into the shape accepted by the
|
|
248
|
+
* Responses API. Non-function tools are preserved for compatible providers.
|
|
249
|
+
*/
|
|
250
|
+
export function toOpenAIResponsesTools(tools = []) {
|
|
251
|
+
return tools.flatMap(tool => {
|
|
252
|
+
if (tool.type !== 'function') {
|
|
253
|
+
return [{ ...tool }];
|
|
254
|
+
}
|
|
255
|
+
const fn = asObject(tool.function);
|
|
256
|
+
const name = nonEmptyString(fn?.name) || nonEmptyString(tool.name);
|
|
257
|
+
if (!name) {
|
|
258
|
+
return [];
|
|
259
|
+
}
|
|
260
|
+
const description = fn?.description ?? tool.description;
|
|
261
|
+
const parameters = fn?.parameters ?? tool.parameters;
|
|
262
|
+
const strict = fn?.strict ?? tool.strict;
|
|
263
|
+
return [
|
|
264
|
+
{
|
|
265
|
+
type: 'function',
|
|
266
|
+
name,
|
|
267
|
+
...(typeof description === 'string' ? { description } : {}),
|
|
268
|
+
...(asObject(parameters) ? { parameters } : {}),
|
|
269
|
+
...(typeof strict === 'boolean' ? { strict } : {}),
|
|
270
|
+
},
|
|
271
|
+
];
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Builds a stateless Responses API request from the fields already used by
|
|
276
|
+
* OpenAI-compatible Chat Completions providers.
|
|
277
|
+
*/
|
|
278
|
+
export function buildOpenAIResponsesPayload(model, messages, options = {}) {
|
|
279
|
+
const tools = toOpenAIResponsesTools(options.tools);
|
|
280
|
+
return {
|
|
281
|
+
model,
|
|
282
|
+
input: toOpenAIResponsesInput(messages, options.stateScope),
|
|
283
|
+
store: false,
|
|
284
|
+
include: ['reasoning.encrypted_content'],
|
|
285
|
+
...(tools.length > 0 ? { tools } : {}),
|
|
286
|
+
...(options.tool_choice !== undefined
|
|
287
|
+
? { tool_choice: options.tool_choice }
|
|
288
|
+
: {}),
|
|
289
|
+
...(typeof options.max_tokens === 'number'
|
|
290
|
+
? { max_output_tokens: options.max_tokens }
|
|
291
|
+
: {}),
|
|
292
|
+
...(typeof options.temperature === 'number'
|
|
293
|
+
? { temperature: options.temperature }
|
|
294
|
+
: {}),
|
|
295
|
+
...(typeof options.top_p === 'number' ? { top_p: options.top_p } : {}),
|
|
296
|
+
...(typeof options.stream === 'boolean' ? { stream: options.stream } : {}),
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
function outputTextFromItem(item) {
|
|
300
|
+
if (item.type !== 'message' || !Array.isArray(item.content)) {
|
|
301
|
+
return [];
|
|
302
|
+
}
|
|
303
|
+
return item.content.flatMap(rawBlock => {
|
|
304
|
+
const block = asObject(rawBlock);
|
|
305
|
+
if (block &&
|
|
306
|
+
(block.type === 'output_text' || block.type === 'text') &&
|
|
307
|
+
typeof block.text === 'string') {
|
|
308
|
+
return [block.text];
|
|
309
|
+
}
|
|
310
|
+
if (block &&
|
|
311
|
+
block.type === 'refusal' &&
|
|
312
|
+
typeof block.refusal === 'string') {
|
|
313
|
+
return [block.refusal];
|
|
314
|
+
}
|
|
315
|
+
return [];
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
function reasoningSummaryFromItem(item) {
|
|
319
|
+
if (item.type !== 'reasoning') {
|
|
320
|
+
return [];
|
|
321
|
+
}
|
|
322
|
+
const blocks = [
|
|
323
|
+
...(Array.isArray(item.summary) ? item.summary : []),
|
|
324
|
+
...(Array.isArray(item.content) ? item.content : []),
|
|
325
|
+
];
|
|
326
|
+
return blocks.flatMap(rawBlock => {
|
|
327
|
+
const block = asObject(rawBlock);
|
|
328
|
+
return block && typeof block.text === 'string' ? [block.text] : [];
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
function functionCallFromItem(item) {
|
|
332
|
+
if (item.type !== 'function_call') {
|
|
333
|
+
return undefined;
|
|
334
|
+
}
|
|
335
|
+
const name = nonEmptyString(item.name);
|
|
336
|
+
if (!name || typeof item.arguments !== 'string') {
|
|
337
|
+
return undefined;
|
|
338
|
+
}
|
|
339
|
+
const callId = nonEmptyString(item.call_id);
|
|
340
|
+
if (!callId) {
|
|
341
|
+
return undefined;
|
|
342
|
+
}
|
|
343
|
+
return {
|
|
344
|
+
id: callId,
|
|
345
|
+
call_id: callId,
|
|
346
|
+
type: 'function',
|
|
347
|
+
function: {
|
|
348
|
+
name,
|
|
349
|
+
arguments: item.arguments,
|
|
350
|
+
},
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
function normalizeResponsesFinishReason(response, hasToolCalls) {
|
|
354
|
+
if (response.status === 'incomplete') {
|
|
355
|
+
const details = asObject(response.incomplete_details);
|
|
356
|
+
if (details?.reason === 'max_output_tokens') {
|
|
357
|
+
return 'length';
|
|
358
|
+
}
|
|
359
|
+
if (details?.reason === 'content_filter') {
|
|
360
|
+
return 'content_filter';
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
return hasToolCalls ? 'tool_calls' : 'stop';
|
|
364
|
+
}
|
|
365
|
+
function responsesIncompleteReason(response) {
|
|
366
|
+
if (response.status !== 'incomplete')
|
|
367
|
+
return undefined;
|
|
368
|
+
const details = asObject(response.incomplete_details);
|
|
369
|
+
return typeof details?.reason === 'string' ? details.reason : 'unknown';
|
|
370
|
+
}
|
|
371
|
+
function normalizeResponsesUsage(value) {
|
|
372
|
+
const usage = asObject(value);
|
|
373
|
+
if (!usage) {
|
|
374
|
+
return undefined;
|
|
375
|
+
}
|
|
376
|
+
const inputTokens = typeof usage.input_tokens === 'number' ? usage.input_tokens : undefined;
|
|
377
|
+
const outputTokens = typeof usage.output_tokens === 'number' ? usage.output_tokens : undefined;
|
|
378
|
+
const totalTokens = typeof usage.total_tokens === 'number' ? usage.total_tokens : undefined;
|
|
379
|
+
if (inputTokens === undefined &&
|
|
380
|
+
outputTokens === undefined &&
|
|
381
|
+
totalTokens === undefined) {
|
|
382
|
+
return undefined;
|
|
383
|
+
}
|
|
384
|
+
return {
|
|
385
|
+
prompt_tokens: inputTokens ?? 0,
|
|
386
|
+
completion_tokens: outputTokens ?? 0,
|
|
387
|
+
total_tokens: totalTokens ?? (inputTokens ?? 0) + (outputTokens ?? 0),
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Converts a completed Responses API object into Libre WebUI's existing
|
|
392
|
+
* Chat Completions-shaped normalized response.
|
|
393
|
+
*/
|
|
394
|
+
export function normalizeOpenAIResponsesResponse(value, fallbackModel, stateScope) {
|
|
395
|
+
const response = asObject(value);
|
|
396
|
+
if (!response) {
|
|
397
|
+
throw new Error('Responses API error: response must be an object');
|
|
398
|
+
}
|
|
399
|
+
if (response.status === 'failed') {
|
|
400
|
+
const error = asObject(response.error);
|
|
401
|
+
const message = nonEmptyString(error?.message) ||
|
|
402
|
+
nonEmptyString(response.message) ||
|
|
403
|
+
'Responses request failed';
|
|
404
|
+
throw new Error(`Responses API error: ${message.slice(0, 500)}`);
|
|
405
|
+
}
|
|
406
|
+
if (typeof response.status === 'string' &&
|
|
407
|
+
response.status !== 'completed' &&
|
|
408
|
+
response.status !== 'incomplete') {
|
|
409
|
+
throw new Error(`Responses API error: unexpected response status "${response.status.slice(0, 100)}"`);
|
|
410
|
+
}
|
|
411
|
+
const outputValidationError = openAIResponsesOutputItemsValidationError(response.output);
|
|
412
|
+
if (outputValidationError) {
|
|
413
|
+
throw new Error(`Responses API error: ${outputValidationError}`);
|
|
414
|
+
}
|
|
415
|
+
const output = response.output;
|
|
416
|
+
const text = [];
|
|
417
|
+
const reasoning = [];
|
|
418
|
+
const reasoningItems = [];
|
|
419
|
+
const toolCalls = [];
|
|
420
|
+
for (const [index, rawItem] of output.entries()) {
|
|
421
|
+
const item = asObject(rawItem);
|
|
422
|
+
if (!item) {
|
|
423
|
+
continue;
|
|
424
|
+
}
|
|
425
|
+
text.push(...outputTextFromItem(item));
|
|
426
|
+
reasoning.push(...reasoningSummaryFromItem(item));
|
|
427
|
+
if (item.type === 'reasoning') {
|
|
428
|
+
reasoningItems.push({ ...item });
|
|
429
|
+
}
|
|
430
|
+
const functionCall = functionCallFromItem(item);
|
|
431
|
+
if (item.type === 'function_call' && !functionCall) {
|
|
432
|
+
throw new Error(`Responses API error: function call ${index} is missing an exact call_id or name, or string arguments`);
|
|
433
|
+
}
|
|
434
|
+
if (functionCall) {
|
|
435
|
+
if (toolCalls.some(call => call.id === functionCall.id)) {
|
|
436
|
+
throw new Error(`Responses API error: duplicate function call_id "${functionCall.id}"`);
|
|
437
|
+
}
|
|
438
|
+
toolCalls.push(functionCall);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
if (toolCalls.length > 16) {
|
|
442
|
+
throw new Error('Responses API error: more than 16 function calls returned');
|
|
443
|
+
}
|
|
444
|
+
const boundedOutput = boundedOpenAIResponsesOutputItems(output);
|
|
445
|
+
if (!boundedOutput.dropped && reasoningItems.length > 0 && toolCalls[0]) {
|
|
446
|
+
toolCalls[0].providerMetadata = {
|
|
447
|
+
openAIResponsesReasoningItems: reasoningItems,
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
if (text.length === 0 && typeof response.output_text === 'string') {
|
|
451
|
+
text.push(response.output_text);
|
|
452
|
+
}
|
|
453
|
+
const reasoningContent = reasoning.join('\n');
|
|
454
|
+
const model = typeof response.model === 'string' ? response.model : fallbackModel;
|
|
455
|
+
const usage = normalizeResponsesUsage(response.usage);
|
|
456
|
+
const incompleteReason = responsesIncompleteReason(response);
|
|
457
|
+
const providerMetadata = {
|
|
458
|
+
...(boundedOutput.items
|
|
459
|
+
? {
|
|
460
|
+
[OPENAI_RESPONSES_OUTPUT_ITEMS_METADATA_KEY]: boundedOutput.items,
|
|
461
|
+
}
|
|
462
|
+
: {}),
|
|
463
|
+
...(boundedOutput.dropped
|
|
464
|
+
? { [OPENAI_RESPONSES_STATE_DROPPED_METADATA_KEY]: true }
|
|
465
|
+
: {}),
|
|
466
|
+
...(incompleteReason
|
|
467
|
+
? {
|
|
468
|
+
[OPENAI_RESPONSES_INCOMPLETE_REASON_METADATA_KEY]: incompleteReason,
|
|
469
|
+
}
|
|
470
|
+
: {}),
|
|
471
|
+
...(stateScope
|
|
472
|
+
? { [OPENAI_RESPONSES_STATE_SCOPE_METADATA_KEY]: stateScope }
|
|
473
|
+
: {}),
|
|
474
|
+
};
|
|
475
|
+
return {
|
|
476
|
+
id: typeof response.id === 'string' && response.id ? response.id : 'response',
|
|
477
|
+
object: 'chat.completion',
|
|
478
|
+
created: typeof response.created_at === 'number'
|
|
479
|
+
? Math.floor(response.created_at)
|
|
480
|
+
: 0,
|
|
481
|
+
model,
|
|
482
|
+
...(Object.keys(providerMetadata).length > 0 ? { providerMetadata } : {}),
|
|
483
|
+
choices: [
|
|
484
|
+
{
|
|
485
|
+
index: 0,
|
|
486
|
+
message: {
|
|
487
|
+
role: 'assistant',
|
|
488
|
+
content: text.join(''),
|
|
489
|
+
...(reasoningContent ? { reasoning_content: reasoningContent } : {}),
|
|
490
|
+
...(toolCalls.length > 0 ? { tool_calls: toolCalls } : {}),
|
|
491
|
+
},
|
|
492
|
+
finish_reason: normalizeResponsesFinishReason(response, toolCalls.length > 0),
|
|
493
|
+
},
|
|
494
|
+
],
|
|
495
|
+
...(usage ? { usage } : {}),
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
export function createOpenAIResponsesStateScope(providerId, model, endpoint, credentialFingerprint) {
|
|
499
|
+
return createHash('sha256')
|
|
500
|
+
.update(JSON.stringify({
|
|
501
|
+
version: 2,
|
|
502
|
+
apiMode: 'responses',
|
|
503
|
+
providerId,
|
|
504
|
+
model,
|
|
505
|
+
endpoint,
|
|
506
|
+
credentialFingerprint,
|
|
507
|
+
}))
|
|
508
|
+
.digest('hex');
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Produce a one-way, domain-separated identity for the credential selected by
|
|
512
|
+
* a provider request. Only this digest is included in replay/routing scopes;
|
|
513
|
+
* the credential itself is never persisted or returned to clients.
|
|
514
|
+
*/
|
|
515
|
+
export function createPluginCredentialFingerprint(apiKey) {
|
|
516
|
+
return createHash('sha256')
|
|
517
|
+
.update('libre-webui:plugin-credential:v1\0')
|
|
518
|
+
.update(apiKey || '')
|
|
519
|
+
.digest('hex');
|
|
520
|
+
}
|
|
521
|
+
//# sourceMappingURL=openAIResponsesAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openAIResponsesAdapter.js","sourceRoot":"","sources":["../../src/utils/openAIResponsesAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC,MAAM,CAAC,MAAM,0CAA0C,GACrD,4BAA4B,CAAC;AAC/B,MAAM,CAAC,MAAM,+CAA+C,GAC1D,iCAAiC,CAAC;AACpC,MAAM,CAAC,MAAM,yCAAyC,GACpD,2BAA2B,CAAC;AAC9B,MAAM,CAAC,MAAM,2CAA2C,GACtD,6BAA6B,CAAC;AAChC,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AACpD,MAAM,CAAC,MAAM,iCAAiC,GAAG,KAAM,CAAC;AAuDxD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAChE,CAAC,CAAE,KAAoB;QACvB,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC;AAED,SAAS,2BAA2B,CAClC,KAAc,EACd,YAAiC;IAEjC,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACjC,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC7D,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC;YACjE,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;QACxC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,KAAc;IAEd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI;YAAE,OAAO,eAAe,KAAK,oBAAoB,CAAC;QAE3D,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,eAAe,KAAK,4BAA4B,CAAC;QAC1D,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO,6BAA6B,MAAM,GAAG,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,eAAe,KAAK,8BAA8B,CAAC;QAC5D,CAAC;QACD,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;YAC7B,IACE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC7B,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC1B,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAClC,CAAC;gBACD,OAAO,iBAAiB,KAAK,2DAA2D,CAAC;YAC3F,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IACE,IAAI,CAAC,IAAI,KAAK,WAAW;gBACzB,CAAC,2BAA2B,CAC1B,IAAI,CAAC,OAAO,EACZ,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAC5C,EACD,CAAC;gBACD,OAAO,uBAAuB,KAAK,8BAA8B,CAAC;YACpE,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,IACE,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS;gBACzB,CAAC,2BAA2B,CAC1B,IAAI,CAAC,OAAO,EACZ,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAC1B,CAAC;gBACJ,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS;oBACzB,CAAC,2BAA2B,CAC1B,IAAI,CAAC,OAAO,EACZ,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CACpC,CAAC,EACJ,CAAC;gBACD,OAAO,yBAAyB,KAAK,iCAAiC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,KAAc;IAI9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,iCAAiC,EAAE,CAAC;QACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,yCAAyC,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC;QACH,IACE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAChD,iCAAiC,EACjC,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAgB;IACzC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAgB;IACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAa,QAAQ,CAAC,EAAE;QAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IACE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;YACpB,KAAK,CAAC,IAAI,KAAK,YAAY;YAC3B,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC;YAC/B,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAC9B,CAAC;YACD,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAC/D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,QAAQ,GACZ,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GACV,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACzE,OAAO;YACL;gBACE,IAAI,EAAE,aAAa;gBACnB,SAAS,EAAE,QAAQ;gBACnB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9B;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAc,EACd,YAAoB;IAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,mCAAmC,YAAY,IAAI,SAAS,8BAA8B,CAC3F,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GACR,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;QAEzE,OAAO;YACL;gBACE,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,MAAM;gBACf,IAAI;gBACJ,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC;aACpC;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAgD,EAChD,kBAA2B;IAE3B,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE;QAChD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,MAAM,gBAAgB,GACpB,OAAO,CAAC,gBAAgB,EAAE,CAAC,yCAAyC,CAAC,CAAC;YACxE,MAAM,mBAAmB,GAAG,iCAAiC,CAC3D,OAAO,CAAC,gBAAgB,EAAE,CAAC,0CAA0C,CAAC,CACvE,CAAC,KAAK,CAAC;YACR,MAAM,qBAAqB,GACzB,mBAAmB;gBACnB,CAAC,kBAAkB,KAAK,SAAS;oBAC/B,gBAAgB,KAAK,kBAAkB,CAAC;gBACxC,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,EAAE,CAAC;YACT,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,OAAO,qBAAqB,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,MAAM,GACV,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC1E,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CACb,iCAAiC,YAAY,8BAA8B,CAC5E,CAAC;YACJ,CAAC;YACD,OAAO;gBACL;oBACE,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,MAAM;oBACf,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC;iBAC5C;aACF,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,wBAAwB,CAC5C,OAAO,CAAC,UAAU,EAClB,YAAY,CACb,CAAC;QACF,MAAM,KAAK,GAAiB,EAAE,CAAC;QAE/B,IAAI,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrE,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC;aACpD,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAA+B,EAAE;IAEjC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,WAAW,GAAG,EAAE,EAAE,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;QACxD,MAAM,UAAU,GAAG,EAAE,EAAE,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;QACrD,MAAM,MAAM,GAAG,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAEzC,OAAO;YACL;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI;gBACJ,GAAG,CAAC,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,GAAG,CAAC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnD;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAa,EACb,QAAgD,EAChD,UAAyC,EAAE;IAE3C,MAAM,KAAK,GAAG,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEpD,OAAO;QACL,KAAK;QACL,KAAK,EAAE,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC;QAC3D,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,CAAC,6BAA6B,CAAC;QACxC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE;YACtC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;YACxC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,UAAU,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ;YACzC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE;YACtC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,OAAO,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3E,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAgB;IAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjC,IACE,KAAK;YACL,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;YACvD,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAC9B,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAED,IACE,KAAK;YACL,KAAK,CAAC,IAAI,KAAK,SAAS;YACxB,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EACjC,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAgB;IAChD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG;QACb,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;KACrD,CAAC;IAEF,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAgB;IAEhB,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,EAAE,EAAE,MAAM;QACV,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B;KACF,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CACrC,QAAoB,EACpB,YAAqB;IAErB,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QACtD,IAAI,OAAO,EAAE,MAAM,KAAK,mBAAmB,EAAE,CAAC;YAC5C,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,OAAO,EAAE,MAAM,KAAK,gBAAgB,EAAE,CAAC;YACzC,OAAO,gBAAgB,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9C,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAoB;IACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY;QAAE,OAAO,SAAS,CAAC;IACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACtD,OAAO,OAAO,OAAO,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAc;IAEd,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GACf,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,MAAM,YAAY,GAChB,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,WAAW,GACf,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1E,IACE,WAAW,KAAK,SAAS;QACzB,YAAY,KAAK,SAAS;QAC1B,WAAW,KAAK,SAAS,EACzB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,aAAa,EAAE,WAAW,IAAI,CAAC;QAC/B,iBAAiB,EAAE,YAAY,IAAI,CAAC;QACpC,YAAY,EAAE,WAAW,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC;KACtE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAC9C,KAAc,EACd,aAAqB,EACrB,UAAmB;IAEnB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,OAAO,GACX,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;YAC9B,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC;YAChC,0BAA0B,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IACE,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ;QACnC,QAAQ,CAAC,MAAM,KAAK,WAAW;QAC/B,QAAQ,CAAC,MAAM,KAAK,YAAY,EAChC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,oDAAoD,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,qBAAqB,GAAG,yCAAyC,CACrE,QAAQ,CAAC,MAAM,CAChB,CAAC;IACF,IAAI,qBAAqB,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,wBAAwB,qBAAqB,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAmB,CAAC;IAC5C,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,cAAc,GAAiB,EAAE,CAAC;IACxC,MAAM,SAAS,GAAwC,EAAE,CAAC;IAE1D,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,SAAS,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,YAAY,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CACb,sCAAsC,KAAK,2DAA2D,CACvG,CAAC;QACJ,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CACb,oDAAoD,YAAY,CAAC,EAAE,GAAG,CACvE,CAAC;YACJ,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,iCAAiC,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG;YAC9B,6BAA6B,EAAE,cAAc;SAC9C,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GACT,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC;IACtE,MAAM,KAAK,GAAG,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG;QACvB,GAAG,CAAC,aAAa,CAAC,KAAK;YACrB,CAAC,CAAC;gBACE,CAAC,0CAA0C,CAAC,EAAE,aAAa,CAAC,KAAK;aAClE;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,aAAa,CAAC,OAAO;YACvB,CAAC,CAAC,EAAE,CAAC,2CAA2C,CAAC,EAAE,IAAI,EAAE;YACzD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,gBAAgB;YAClB,CAAC,CAAC;gBACE,CAAC,+CAA+C,CAAC,EAAE,gBAAgB;aACpE;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,UAAU;YACZ,CAAC,CAAC,EAAE,CAAC,yCAAyC,CAAC,EAAE,UAAU,EAAE;YAC7D,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IAEF,OAAO;QACL,EAAE,EACA,OAAO,QAAQ,CAAC,EAAE,KAAK,QAAQ,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QAC3E,MAAM,EAAE,iBAAiB;QACzB,OAAO,EACL,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ;YACrC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;YACjC,CAAC,CAAC,CAAC;QACP,KAAK;QACL,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE;oBACP,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtB,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC3D;gBACD,aAAa,EAAE,8BAA8B,CAC3C,QAAQ,EACR,SAAS,CAAC,MAAM,GAAG,CAAC,CACrB;aACF;SACF;QACD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,UAAkB,EAClB,KAAa,EACb,QAAgB,EAChB,qBAA6B;IAE7B,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CACL,IAAI,CAAC,SAAS,CAAC;QACb,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,WAAW;QACpB,UAAU;QACV,KAAK;QACL,QAAQ;QACR,qBAAqB;KACtB,CAAC,CACH;SACA,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iCAAiC,CAC/C,MAAqB;IAErB,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,oCAAoC,CAAC;SAC5C,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ChatMessage, GenerationOptions, Plugin, PluginResponse } from '../types/index.js';
|
|
1
|
+
import type { ChatMessage, GenerationOptions, Plugin, PluginApiMode, PluginResponse } from '../types/index.js';
|
|
2
2
|
export type PluginVariables = Record<string, string | number | boolean>;
|
|
3
3
|
export interface PluginChatParameters {
|
|
4
4
|
temperature: number;
|
|
@@ -21,7 +21,9 @@ type OpenAICompatibleSamplingParameters = Partial<{
|
|
|
21
21
|
export declare function resolvePluginChatParameters(options?: GenerationOptions, pluginVars?: PluginVariables): PluginChatParameters;
|
|
22
22
|
export declare function applyPluginDefinitionPolicy(plugin: Plugin): Plugin;
|
|
23
23
|
export declare function getOpenAICompatibleSamplingParameters(plugin: Pick<Plugin, 'id'>, params: PluginChatParameters): OpenAICompatibleSamplingParameters;
|
|
24
|
-
export declare function toOpenAICompatibleMessages(messages: ChatMessage[]
|
|
24
|
+
export declare function toOpenAICompatibleMessages(messages: ChatMessage[], options?: {
|
|
25
|
+
preserveProviderMetadata?: boolean;
|
|
26
|
+
}): Array<{
|
|
25
27
|
role: string;
|
|
26
28
|
content: string | Array<{
|
|
27
29
|
type: 'text';
|
|
@@ -32,10 +34,11 @@ export declare function toOpenAICompatibleMessages(messages: ChatMessage[]): Arr
|
|
|
32
34
|
url: string;
|
|
33
35
|
};
|
|
34
36
|
}>;
|
|
37
|
+
providerMetadata?: Record<string, unknown>;
|
|
35
38
|
}>;
|
|
36
|
-
export declare function buildPluginChatPayload(plugin: Plugin, model: string, messages: ChatMessage[], options?: GenerationOptions, pluginVars?: PluginVariables, streamOverride?: boolean): PluginChatPayloadResult;
|
|
39
|
+
export declare function buildPluginChatPayload(plugin: Plugin, model: string, messages: ChatMessage[], options?: GenerationOptions, pluginVars?: PluginVariables, streamOverride?: boolean, apiMode?: PluginApiMode, providerStateScope?: string): PluginChatPayloadResult;
|
|
37
40
|
export declare function convertAnthropicResponse(anthropicResponse: Record<string, unknown>, model: string): PluginResponse;
|
|
38
41
|
export declare function convertGeminiResponse(geminiResponse: Record<string, unknown>, model: string): PluginResponse;
|
|
39
|
-
export declare function convertProviderResponse(plugin: Plugin, response: Record<string, unknown>, model: string): PluginResponse;
|
|
42
|
+
export declare function convertProviderResponse(plugin: Plugin, response: Record<string, unknown>, model: string, apiMode?: PluginApiMode, providerStateScope?: string): PluginResponse;
|
|
40
43
|
export {};
|
|
41
44
|
//# sourceMappingURL=pluginChatAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pluginChatAdapter.d.ts","sourceRoot":"","sources":["../../src/utils/pluginChatAdapter.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,MAAM,EACN,cAAc,EACf,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"pluginChatAdapter.d.ts","sourceRoot":"","sources":["../../src/utils/pluginChatAdapter.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,MAAM,EACN,aAAa,EACb,cAAc,EACf,MAAM,mBAAmB,CAAC;AAM3B,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAExE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,KAAK,kCAAkC,GAAG,OAAO,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC,CAAC;AAsBH,wBAAgB,2BAA2B,CACzC,OAAO,GAAE,iBAAsB,EAC/B,UAAU,GAAE,eAAoB,GAC/B,oBAAoB,CAoBtB;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWlE;AAED,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1B,MAAM,EAAE,oBAAoB,GAC3B,kCAAkC,CAcpC;AAoBD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE;IAAE,wBAAwB,CAAC,EAAE,OAAO,CAAA;CAAO,GACnD,KAAK,CAAC;IACP,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EACH,MAAM,GACN,KAAK,CACD;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAC9B;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,SAAS,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CACpD,CAAC;IACN,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C,CAAC,CAmCD;AA8JD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,iBAAsB,EAC/B,UAAU,GAAE,eAAoB,EAChC,cAAc,CAAC,EAAE,OAAO,EACxB,OAAO,GAAE,aAAkC,EAC3C,kBAAkB,CAAC,EAAE,MAAM,GAC1B,uBAAuB,CAuCzB;AAED,wBAAgB,wBAAwB,CACtC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,KAAK,EAAE,MAAM,GACZ,cAAc,CAsEhB;AAED,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,KAAK,EAAE,MAAM,GACZ,cAAc,CA+EhB;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,aAAkC,EAC3C,kBAAkB,CAAC,EAAE,MAAM,GAC1B,cAAc,CAkBhB"}
|