n8n-nodes-empiriolabs 0.3.0 → 0.4.0
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 +27 -5
- package/dist/nodes/Empiriolabs/Empiriolabs.node.d.ts +15 -2
- package/dist/nodes/Empiriolabs/Empiriolabs.node.js +58 -5
- package/dist/nodes/Empiriolabs/Empiriolabs.node.js.map +1 -1
- package/dist/nodes/Empiriolabs/actions/audio.d.ts +2 -0
- package/dist/nodes/Empiriolabs/actions/audio.js +50 -0
- package/dist/nodes/Empiriolabs/actions/audio.js.map +1 -1
- package/dist/nodes/Empiriolabs/actions/decision.d.ts +6 -0
- package/dist/nodes/Empiriolabs/actions/decision.js +151 -0
- package/dist/nodes/Empiriolabs/actions/decision.js.map +1 -0
- package/dist/nodes/Empiriolabs/actions/detection.d.ts +3 -0
- package/dist/nodes/Empiriolabs/actions/detection.js +22 -0
- package/dist/nodes/Empiriolabs/actions/detection.js.map +1 -0
- package/dist/nodes/Empiriolabs/actions/image.d.ts +6 -0
- package/dist/nodes/Empiriolabs/actions/image.js +87 -4
- package/dist/nodes/Empiriolabs/actions/image.js.map +1 -1
- package/dist/nodes/Empiriolabs/actions/rerank.d.ts +5 -0
- package/dist/nodes/Empiriolabs/actions/rerank.js +80 -0
- package/dist/nodes/Empiriolabs/actions/rerank.js.map +1 -0
- package/dist/nodes/Empiriolabs/actions/search.d.ts +4 -0
- package/dist/nodes/Empiriolabs/actions/search.js +53 -0
- package/dist/nodes/Empiriolabs/actions/search.js.map +1 -1
- package/dist/nodes/Empiriolabs/actions/threeD.d.ts +3 -0
- package/dist/nodes/Empiriolabs/actions/threeD.js +54 -0
- package/dist/nodes/Empiriolabs/actions/threeD.js.map +1 -0
- package/dist/nodes/Empiriolabs/actions/video.d.ts +2 -0
- package/dist/nodes/Empiriolabs/actions/video.js +21 -0
- package/dist/nodes/Empiriolabs/actions/video.js.map +1 -1
- package/dist/nodes/Empiriolabs/actions/voice.d.ts +4 -0
- package/dist/nodes/Empiriolabs/actions/voice.js +45 -0
- package/dist/nodes/Empiriolabs/actions/voice.js.map +1 -0
- package/dist/nodes/Empiriolabs/descriptions/AudioDescription.js +114 -0
- package/dist/nodes/Empiriolabs/descriptions/AudioDescription.js.map +1 -1
- package/dist/nodes/Empiriolabs/descriptions/DecisionDescription.d.ts +3 -0
- package/dist/nodes/Empiriolabs/descriptions/DecisionDescription.js +252 -0
- package/dist/nodes/Empiriolabs/descriptions/DecisionDescription.js.map +1 -0
- package/dist/nodes/Empiriolabs/descriptions/DetectionDescription.d.ts +3 -0
- package/dist/nodes/Empiriolabs/descriptions/DetectionDescription.js +65 -0
- package/dist/nodes/Empiriolabs/descriptions/DetectionDescription.js.map +1 -0
- package/dist/nodes/Empiriolabs/descriptions/ImageDescription.js +182 -0
- package/dist/nodes/Empiriolabs/descriptions/ImageDescription.js.map +1 -1
- package/dist/nodes/Empiriolabs/descriptions/RerankDescription.d.ts +3 -0
- package/dist/nodes/Empiriolabs/descriptions/RerankDescription.js +143 -0
- package/dist/nodes/Empiriolabs/descriptions/RerankDescription.js.map +1 -0
- package/dist/nodes/Empiriolabs/descriptions/SearchDescription.js +132 -0
- package/dist/nodes/Empiriolabs/descriptions/SearchDescription.js.map +1 -1
- package/dist/nodes/Empiriolabs/descriptions/ThreeDDescription.d.ts +3 -0
- package/dist/nodes/Empiriolabs/descriptions/ThreeDDescription.js +166 -0
- package/dist/nodes/Empiriolabs/descriptions/ThreeDDescription.js.map +1 -0
- package/dist/nodes/Empiriolabs/descriptions/VideoDescription.js +13 -0
- package/dist/nodes/Empiriolabs/descriptions/VideoDescription.js.map +1 -1
- package/dist/nodes/Empiriolabs/descriptions/VoiceDescription.d.ts +3 -0
- package/dist/nodes/Empiriolabs/descriptions/VoiceDescription.js +177 -0
- package/dist/nodes/Empiriolabs/descriptions/VoiceDescription.js.map +1 -0
- package/dist/nodes/Empiriolabs/descriptions/shared.d.ts +1 -0
- package/dist/nodes/Empiriolabs/descriptions/shared.js +67 -0
- package/dist/nodes/Empiriolabs/descriptions/shared.js.map +1 -1
- package/dist/nodes/Empiriolabs/methods/listSearch.d.ts +2 -0
- package/dist/nodes/Empiriolabs/methods/listSearch.js +30 -0
- package/dist/nodes/Empiriolabs/methods/listSearch.js.map +1 -1
- package/dist/nodes/Empiriolabs/methods/loadOptions.d.ts +17 -1
- package/dist/nodes/Empiriolabs/methods/loadOptions.js +98 -7
- package/dist/nodes/Empiriolabs/methods/loadOptions.js.map +1 -1
- package/dist/nodes/Empiriolabs/transport.d.ts +26 -1
- package/dist/nodes/Empiriolabs/transport.js +153 -2
- package/dist/nodes/Empiriolabs/transport.js.map +1 -1
- package/dist/package.json +14 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -4
- package/dist/test/fixtures/invoice.png +0 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# n8n-nodes-empiriolabs
|
|
2
2
|
|
|
3
|
-
This is an n8n community node package. It lets you use [EmpirioLabs AI](https://empiriolabs.ai) in your n8n workflows for chat, image generation, text to speech, transcription, video generation, embeddings, document reading (OCR), and web
|
|
3
|
+
This is an n8n community node package. It lets you use [EmpirioLabs AI](https://empiriolabs.ai) in your n8n workflows for chat, image generation, editing and analysis, text to speech, music and sound generation, transcription, video generation, 3D generation, embeddings, reranking, decisions, AI text detection, document reading (OCR), web search, and web research. It can also start a workflow when a generation job finishes.
|
|
4
4
|
|
|
5
5
|
EmpirioLabs AI is a specialized AI inference and integration provider. It self-hosts open-source models on GPU infrastructure it manages, runs optimized endpoints for proprietary models, helps teams ship their own models to large audiences, and offers on-demand GPU Cloud instances and hosted AI agents. Its model catalog covers text, image, audio, video, transcription, embedding, reranking, research, and 3D models.
|
|
6
6
|
|
|
@@ -26,20 +26,37 @@ The **EmpirioLabs AI** node supports these resources and operations. Every model
|
|
|
26
26
|
|
|
27
27
|
| Resource | Operation | What it does |
|
|
28
28
|
| --- | --- | --- |
|
|
29
|
+
| 3D Asset | Generate | Starts a 3D generation job from an image, given as a binary file in the input item or as a public HTTPS URL, and returns the job. Turn on **Wait for Completion** to wait for the 3D asset, with a timeout, and download it as a binary file. Options include resolution, seed, texture size, and target face count, on models that support them. |
|
|
30
|
+
| Audio | Generate Music or Sound | Starts a music or sound effect job from a prompt and returns the job. Turn on **Wait for Completion** to wait for the audio, with a timeout, and download it as a binary file. Options include lyrics, duration, output format, and seed, on models that support them. |
|
|
29
31
|
| Audio | Text to Speech | Turns text into speech and returns the audio as a binary file. Choose a model, a voice the model offers, and optionally a language and output format. |
|
|
30
32
|
| Audio | Transcribe | Turns speech into text from a binary file in the input item or from a public HTTPS file URL. Waits for the transcript by default and returns the text, language, and duration. |
|
|
31
33
|
| Chat | Create Completion | Sends a prompt (with an optional system message) or a full conversation to a chat model and returns the reply. Options include temperature, maximum number of tokens, top P, and JSON output. |
|
|
34
|
+
| Decision | Create | Answers questions about a text or a JSON value with a decision model and returns each answer with its probabilities and a confidence value. A question can be yes or no, a choice between named options, a score on an ordered scale, or the choice of a function to call. Add the questions with fields, or enter them as one JSON object. A JSON value can hold images, audio, and video. |
|
|
35
|
+
| Detection | Detect AI Text | Checks whether a text was written by AI and returns the scores for the whole text and for each sentence. |
|
|
32
36
|
| Document | Read | Reads a PDF or an image (PNG, JPEG, WebP, TIFF, BMP, GIF or AVIF) from a binary file in the input item or from a public HTTPS URL, and returns every page as Markdown, plus `text`, the whole document as one Markdown text. Options choose pages, move tables, headers and footers into their own fields, and return image regions. A long document is read in the background, and the node waits for it by default. |
|
|
33
37
|
| Embedding | Create | Returns the embedding vector for a text. |
|
|
38
|
+
| Image | Analyze | Asks a question about an image, given as a binary file in the input item or as a public HTTPS URL, and returns the answer as text. Use it to describe an image, read the text in it, or answer a question about what it shows. |
|
|
39
|
+
| Image | Edit | Changes an image at a public HTTPS URL with a text instruction and returns each edited image as a binary file in its own item. Takes several image URLs on models that support it. Waits for the result by default, and returns the job when **Wait for Completion** is off. |
|
|
34
40
|
| Image | Generate | Creates images from a prompt and returns each image as a binary file in its own item. Options include aspect ratio, resolution, number of images, and reference image URLs for editing. |
|
|
41
|
+
| Image | Get Many Templates | Returns image generation templates, optionally filtered by category, by model, or to featured templates. |
|
|
42
|
+
| Image | Get Template | Returns one image generation template, with its recommended model, supported models, default parameters, and required inputs. |
|
|
35
43
|
| Job | Get | Returns the status and result of a job. Can also download the finished file as binary data. |
|
|
36
44
|
| Job | Get Many | Returns recent jobs, optionally filtered by status. |
|
|
37
45
|
| Model | Get Many | Returns models from the catalog, optionally filtered by category or search text. |
|
|
46
|
+
| Rerank | Rerank Documents | Sorts documents by how relevant they are to a query and returns each ranked document as its own item, most relevant first, with its relevance score, its text, and its position in the documents sent. Add the documents with fields, or pass a list as JSON. Options include the number of top documents to return and a custom instruction. |
|
|
38
47
|
| Video | Generate | Starts a video generation job and returns the job. Turn on **Wait for Completion** to wait for the video, with a timeout, and download it as a binary file. |
|
|
48
|
+
| Video | Get Many Templates | Returns video generation templates, optionally filtered by category, by model, or to featured templates. |
|
|
49
|
+
| Video | Get Template | Returns one video generation template, with its recommended model, supported models, default parameters, and required inputs. |
|
|
50
|
+
| Voice | Delete | Deletes one of your custom voices on a text to speech model. This cannot be undone. |
|
|
51
|
+
| Voice | Get Many | Returns the voices of a text to speech model, including your custom voices. Filters include type, language, gender, pitch, and search text, on models that support them. |
|
|
52
|
+
| Web Search | Answer | Answers a question from the web with an answer model and returns the answer with the sources it cites. |
|
|
53
|
+
| Web Search | Research | Researches a question on the web with a research model and returns a report with citations and its sources. A report can take several minutes, and the node waits for it, with a timeout. Options include the citation format and the research depth. |
|
|
39
54
|
| Web Search | Search | Searches the web with a search model and returns its answer: results with titles, URLs and snippets, an answer, or both, depending on the model. Each model's own fields, such as the number of results, go in **Model Parameters (JSON)**. |
|
|
40
55
|
|
|
41
56
|
Operations that create content also accept **Model Parameters (JSON)**: extra request fields for the selected model, such as `{"seed": 42}`. Each model lists the fields it accepts on its page in the [model catalog](https://docs.empiriolabs.ai/models-pricing).
|
|
42
57
|
|
|
58
|
+
The template lists load live from EmpirioLabs AI, and the Voice > Delete list shows your custom voices on the selected model.
|
|
59
|
+
|
|
43
60
|
The node can be used as a tool by the n8n AI Agent.
|
|
44
61
|
|
|
45
62
|
## Trigger
|
|
@@ -69,10 +86,11 @@ Built with the n8n node CLI (`@n8n/node-cli` 0.54) and tested against `n8n-workf
|
|
|
69
86
|
## Usage
|
|
70
87
|
|
|
71
88
|
- **Choosing a model:** each model list shows the models whose catalog entry supports the selected operation. To set a model by ID instead, switch the field to **Expression** and enter an ID from the [models page](https://empiriolabs.ai/models).
|
|
72
|
-
- **Voices:** the Voice list shows the voices the selected text to speech model offers. **Model Default** uses the default voice of the model.
|
|
73
|
-
- **
|
|
74
|
-
- **
|
|
75
|
-
- **
|
|
89
|
+
- **Voices:** the Voice list shows the voices the selected text to speech model offers. **Model Default** uses the default voice of the model. Voice > Get Many returns the whole voice list of a model, with your custom voices. To speak with one of them, switch the Voice field to **Expression** and enter its ID. A model that takes voice IDs in another field names that field on its page in the model catalog: send it in **Model Parameters (JSON)**.
|
|
90
|
+
- **Templates:** Get Many Templates and Get Template return the image and video generation templates with their IDs. To apply one, enter its ID as `template` in **Model Parameters (JSON)** of Image > Generate or Video > Generate, for example `{"template": "TEMPLATE_ID"}`, and choose a model the template supports.
|
|
91
|
+
- **Binary files:** images, speech, and downloaded videos, music, and 3D files are returned in the binary field `data`. Change it with **Put Output in Field**. For transcription, document reading, image analysis, and 3D generation, set **Input Data Field Name** to the binary field that holds the file.
|
|
92
|
+
- **Long jobs:** video, 3D, and music and sound generation run as jobs. Video generation usually takes 1 to 15 minutes. Either turn on **Wait for Completion** and set a timeout, or keep the default, which returns the job right away, and continue with the Job resource or the trigger. Job results are kept for one hour after the job finishes.
|
|
93
|
+
- **Generated file links expire 7 days after they are created.** Download a file you want to keep, for example with the download options on the Video, Audio, 3D Asset, and Job resources.
|
|
76
94
|
- **Errors:** the node shows the message returned by the API, such as an unsupported parameter for the selected model. Turn on **Continue On Fail** in the node settings to keep the workflow running and return the message in the item instead.
|
|
77
95
|
|
|
78
96
|
## Development
|
|
@@ -111,6 +129,10 @@ Versions are published to npm with a provenance statement by the [Publish workfl
|
|
|
111
129
|
|
|
112
130
|
## Version history
|
|
113
131
|
|
|
132
|
+
### 0.4.0
|
|
133
|
+
|
|
134
|
+
New resources 3D Asset (Generate), Decision (Create), Detection (Detect AI Text), Rerank (Rerank Documents), and Voice (Get Many, Delete). New operations on the existing resources: Audio (Generate Music or Sound), Image (Edit, Analyze, Get Template, Get Many Templates), Video (Get Template, Get Many Templates), and Web Search (Answer, Research). Each calls the EmpirioLabs AI API directly with typed fields.
|
|
135
|
+
|
|
114
136
|
### 0.3.0
|
|
115
137
|
|
|
116
138
|
New Document resource (Read: a PDF or an image as Markdown) and Web Search resource (Search), each calling the EmpirioLabs AI API directly with typed fields. They replace the Tool resource of 0.2.0, which is removed.
|
|
@@ -1,22 +1,35 @@
|
|
|
1
1
|
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
-
import { getChatModels, getDocumentModels, getEmbeddingModels, getImageModels, getModelCategories, getSearchModels, getSpeechModels, getTranscriptionModels, getVideoModels, getVoices } from './methods/loadOptions';
|
|
3
|
-
import { searchJobs } from './methods/listSearch';
|
|
2
|
+
import { getAnswerModels, getAudioGenerationModels, getChatModels, getDecisionModels, getDetectionModels, getDocumentModels, getEmbeddingModels, getImageEditModels, getImageModels, getImageTemplates, getModelCategories, getRerankModels, getResearchModels, getSearchModels, getSpeechModels, getThreeDModels, getTranscriptionModels, getVideoModels, getVideoTemplates, getVisionModels, getVoiceModels, getVoices } from './methods/loadOptions';
|
|
3
|
+
import { searchCustomVoices, searchJobs } from './methods/listSearch';
|
|
4
4
|
export declare class Empiriolabs implements INodeType {
|
|
5
5
|
description: INodeTypeDescription;
|
|
6
6
|
methods: {
|
|
7
7
|
loadOptions: {
|
|
8
|
+
getAnswerModels: typeof getAnswerModels;
|
|
9
|
+
getAudioGenerationModels: typeof getAudioGenerationModels;
|
|
8
10
|
getChatModels: typeof getChatModels;
|
|
11
|
+
getDecisionModels: typeof getDecisionModels;
|
|
12
|
+
getDetectionModels: typeof getDetectionModels;
|
|
9
13
|
getDocumentModels: typeof getDocumentModels;
|
|
10
14
|
getEmbeddingModels: typeof getEmbeddingModels;
|
|
15
|
+
getImageEditModels: typeof getImageEditModels;
|
|
11
16
|
getImageModels: typeof getImageModels;
|
|
17
|
+
getImageTemplates: typeof getImageTemplates;
|
|
12
18
|
getModelCategories: typeof getModelCategories;
|
|
19
|
+
getRerankModels: typeof getRerankModels;
|
|
20
|
+
getResearchModels: typeof getResearchModels;
|
|
13
21
|
getSearchModels: typeof getSearchModels;
|
|
14
22
|
getSpeechModels: typeof getSpeechModels;
|
|
23
|
+
getThreeDModels: typeof getThreeDModels;
|
|
15
24
|
getTranscriptionModels: typeof getTranscriptionModels;
|
|
16
25
|
getVideoModels: typeof getVideoModels;
|
|
26
|
+
getVideoTemplates: typeof getVideoTemplates;
|
|
27
|
+
getVisionModels: typeof getVisionModels;
|
|
28
|
+
getVoiceModels: typeof getVoiceModels;
|
|
17
29
|
getVoices: typeof getVoices;
|
|
18
30
|
};
|
|
19
31
|
listSearch: {
|
|
32
|
+
searchCustomVoices: typeof searchCustomVoices;
|
|
20
33
|
searchJobs: typeof searchJobs;
|
|
21
34
|
};
|
|
22
35
|
};
|
|
@@ -4,34 +4,59 @@ exports.Empiriolabs = void 0;
|
|
|
4
4
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
5
|
const audio_1 = require("./actions/audio");
|
|
6
6
|
const chat_1 = require("./actions/chat");
|
|
7
|
+
const decision_1 = require("./actions/decision");
|
|
8
|
+
const detection_1 = require("./actions/detection");
|
|
7
9
|
const document_1 = require("./actions/document");
|
|
8
10
|
const embedding_1 = require("./actions/embedding");
|
|
9
11
|
const image_1 = require("./actions/image");
|
|
10
12
|
const job_1 = require("./actions/job");
|
|
11
13
|
const model_1 = require("./actions/model");
|
|
14
|
+
const rerank_1 = require("./actions/rerank");
|
|
12
15
|
const search_1 = require("./actions/search");
|
|
16
|
+
const threeD_1 = require("./actions/threeD");
|
|
13
17
|
const video_1 = require("./actions/video");
|
|
18
|
+
const voice_1 = require("./actions/voice");
|
|
14
19
|
const AudioDescription_1 = require("./descriptions/AudioDescription");
|
|
15
20
|
const ChatDescription_1 = require("./descriptions/ChatDescription");
|
|
21
|
+
const DecisionDescription_1 = require("./descriptions/DecisionDescription");
|
|
22
|
+
const DetectionDescription_1 = require("./descriptions/DetectionDescription");
|
|
16
23
|
const DocumentDescription_1 = require("./descriptions/DocumentDescription");
|
|
17
24
|
const EmbeddingDescription_1 = require("./descriptions/EmbeddingDescription");
|
|
18
25
|
const ImageDescription_1 = require("./descriptions/ImageDescription");
|
|
19
26
|
const JobDescription_1 = require("./descriptions/JobDescription");
|
|
20
27
|
const ModelDescription_1 = require("./descriptions/ModelDescription");
|
|
28
|
+
const RerankDescription_1 = require("./descriptions/RerankDescription");
|
|
21
29
|
const SearchDescription_1 = require("./descriptions/SearchDescription");
|
|
30
|
+
const ThreeDDescription_1 = require("./descriptions/ThreeDDescription");
|
|
22
31
|
const VideoDescription_1 = require("./descriptions/VideoDescription");
|
|
32
|
+
const VoiceDescription_1 = require("./descriptions/VoiceDescription");
|
|
23
33
|
const loadOptions_1 = require("./methods/loadOptions");
|
|
24
34
|
const listSearch_1 = require("./methods/listSearch");
|
|
25
35
|
const OPERATIONS = {
|
|
26
|
-
audio: { textToSpeech: audio_1.textToSpeech, transcribe: audio_1.transcribe },
|
|
36
|
+
audio: { generate: audio_1.generateAudio, textToSpeech: audio_1.textToSpeech, transcribe: audio_1.transcribe },
|
|
27
37
|
chat: { create: chat_1.createChatCompletion },
|
|
38
|
+
decision: { create: decision_1.createDecision },
|
|
39
|
+
detection: { detect: detection_1.detectText },
|
|
28
40
|
document: { read: document_1.readDocument },
|
|
29
41
|
embedding: { create: embedding_1.createEmbedding },
|
|
30
|
-
image: {
|
|
42
|
+
image: {
|
|
43
|
+
analyze: image_1.analyzeImage,
|
|
44
|
+
edit: image_1.editImage,
|
|
45
|
+
generate: image_1.generateImage,
|
|
46
|
+
getAllTemplates: image_1.getManyImageTemplates,
|
|
47
|
+
getTemplate: image_1.getImageTemplate,
|
|
48
|
+
},
|
|
31
49
|
job: { get: job_1.getJob, getAll: job_1.getManyJobs },
|
|
32
50
|
model: { getAll: model_1.getManyModels },
|
|
33
|
-
|
|
34
|
-
|
|
51
|
+
rerank: { rerank: rerank_1.rerankDocuments },
|
|
52
|
+
threeD: { generate: threeD_1.generateThreeD },
|
|
53
|
+
video: {
|
|
54
|
+
generate: video_1.generateVideo,
|
|
55
|
+
getAllTemplates: video_1.getManyVideoTemplates,
|
|
56
|
+
getTemplate: video_1.getVideoTemplate,
|
|
57
|
+
},
|
|
58
|
+
voice: { delete: voice_1.deleteVoice, getAll: voice_1.getManyVoices },
|
|
59
|
+
webSearch: { answer: search_1.answerWeb, research: search_1.researchWeb, search: search_1.searchWeb },
|
|
35
60
|
};
|
|
36
61
|
class Empiriolabs {
|
|
37
62
|
constructor() {
|
|
@@ -42,7 +67,7 @@ class Empiriolabs {
|
|
|
42
67
|
group: ['transform'],
|
|
43
68
|
version: 1,
|
|
44
69
|
subtitle: '={{ $parameter["operation"] + ": " + $parameter["resource"] }}',
|
|
45
|
-
description: 'Use EmpirioLabs AI models for chat, images, speech, transcription, video, embeddings, document reading, and web search',
|
|
70
|
+
description: 'Use EmpirioLabs AI models for chat, images, speech, music, transcription, video, 3D, embeddings, reranking, decisions, document reading, and web search',
|
|
46
71
|
defaults: {
|
|
47
72
|
name: 'EmpirioLabs AI',
|
|
48
73
|
},
|
|
@@ -62,14 +87,19 @@ class Empiriolabs {
|
|
|
62
87
|
type: 'options',
|
|
63
88
|
noDataExpression: true,
|
|
64
89
|
options: [
|
|
90
|
+
{ name: '3D Asset', value: 'threeD' },
|
|
65
91
|
{ name: 'Audio', value: 'audio' },
|
|
66
92
|
{ name: 'Chat', value: 'chat' },
|
|
93
|
+
{ name: 'Decision', value: 'decision' },
|
|
94
|
+
{ name: 'Detection', value: 'detection' },
|
|
67
95
|
{ name: 'Document', value: 'document' },
|
|
68
96
|
{ name: 'Embedding', value: 'embedding' },
|
|
69
97
|
{ name: 'Image', value: 'image' },
|
|
70
98
|
{ name: 'Job', value: 'job' },
|
|
71
99
|
{ name: 'Model', value: 'model' },
|
|
100
|
+
{ name: 'Rerank', value: 'rerank' },
|
|
72
101
|
{ name: 'Video', value: 'video' },
|
|
102
|
+
{ name: 'Voice', value: 'voice' },
|
|
73
103
|
{ name: 'Web Search', value: 'webSearch' },
|
|
74
104
|
],
|
|
75
105
|
default: 'chat',
|
|
@@ -78,6 +108,10 @@ class Empiriolabs {
|
|
|
78
108
|
...AudioDescription_1.audioFields,
|
|
79
109
|
...ChatDescription_1.chatOperations,
|
|
80
110
|
...ChatDescription_1.chatFields,
|
|
111
|
+
...DecisionDescription_1.decisionOperations,
|
|
112
|
+
...DecisionDescription_1.decisionFields,
|
|
113
|
+
...DetectionDescription_1.detectionOperations,
|
|
114
|
+
...DetectionDescription_1.detectionFields,
|
|
81
115
|
...DocumentDescription_1.documentOperations,
|
|
82
116
|
...DocumentDescription_1.documentFields,
|
|
83
117
|
...EmbeddingDescription_1.embeddingOperations,
|
|
@@ -88,26 +122,45 @@ class Empiriolabs {
|
|
|
88
122
|
...JobDescription_1.jobFields,
|
|
89
123
|
...ModelDescription_1.modelOperations,
|
|
90
124
|
...ModelDescription_1.modelFields,
|
|
125
|
+
...RerankDescription_1.rerankOperations,
|
|
126
|
+
...RerankDescription_1.rerankFields,
|
|
127
|
+
...ThreeDDescription_1.threeDOperations,
|
|
128
|
+
...ThreeDDescription_1.threeDFields,
|
|
91
129
|
...VideoDescription_1.videoOperations,
|
|
92
130
|
...VideoDescription_1.videoFields,
|
|
131
|
+
...VoiceDescription_1.voiceOperations,
|
|
132
|
+
...VoiceDescription_1.voiceFields,
|
|
93
133
|
...SearchDescription_1.searchOperations,
|
|
94
134
|
...SearchDescription_1.searchFields,
|
|
95
135
|
],
|
|
96
136
|
};
|
|
97
137
|
this.methods = {
|
|
98
138
|
loadOptions: {
|
|
139
|
+
getAnswerModels: loadOptions_1.getAnswerModels,
|
|
140
|
+
getAudioGenerationModels: loadOptions_1.getAudioGenerationModels,
|
|
99
141
|
getChatModels: loadOptions_1.getChatModels,
|
|
142
|
+
getDecisionModels: loadOptions_1.getDecisionModels,
|
|
143
|
+
getDetectionModels: loadOptions_1.getDetectionModels,
|
|
100
144
|
getDocumentModels: loadOptions_1.getDocumentModels,
|
|
101
145
|
getEmbeddingModels: loadOptions_1.getEmbeddingModels,
|
|
146
|
+
getImageEditModels: loadOptions_1.getImageEditModels,
|
|
102
147
|
getImageModels: loadOptions_1.getImageModels,
|
|
148
|
+
getImageTemplates: loadOptions_1.getImageTemplates,
|
|
103
149
|
getModelCategories: loadOptions_1.getModelCategories,
|
|
150
|
+
getRerankModels: loadOptions_1.getRerankModels,
|
|
151
|
+
getResearchModels: loadOptions_1.getResearchModels,
|
|
104
152
|
getSearchModels: loadOptions_1.getSearchModels,
|
|
105
153
|
getSpeechModels: loadOptions_1.getSpeechModels,
|
|
154
|
+
getThreeDModels: loadOptions_1.getThreeDModels,
|
|
106
155
|
getTranscriptionModels: loadOptions_1.getTranscriptionModels,
|
|
107
156
|
getVideoModels: loadOptions_1.getVideoModels,
|
|
157
|
+
getVideoTemplates: loadOptions_1.getVideoTemplates,
|
|
158
|
+
getVisionModels: loadOptions_1.getVisionModels,
|
|
159
|
+
getVoiceModels: loadOptions_1.getVoiceModels,
|
|
108
160
|
getVoices: loadOptions_1.getVoices,
|
|
109
161
|
},
|
|
110
162
|
listSearch: {
|
|
163
|
+
searchCustomVoices: listSearch_1.searchCustomVoices,
|
|
111
164
|
searchJobs: listSearch_1.searchJobs,
|
|
112
165
|
},
|
|
113
166
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Empiriolabs.node.js","sourceRoot":"","sources":["../../../nodes/Empiriolabs/Empiriolabs.node.ts"],"names":[],"mappings":";;;AAOA,+CAAqF;AAErF,
|
|
1
|
+
{"version":3,"file":"Empiriolabs.node.js","sourceRoot":"","sources":["../../../nodes/Empiriolabs/Empiriolabs.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { IDataObject, IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
|
|
2
2
|
export declare function buildSpeechBody(this: IExecuteFunctions, itemIndex: number): IDataObject;
|
|
3
3
|
export declare function textToSpeech(this: IExecuteFunctions, itemIndex: number): Promise<INodeExecutionData[]>;
|
|
4
|
+
export declare function buildAudioGenerationBody(this: IExecuteFunctions, itemIndex: number): IDataObject;
|
|
5
|
+
export declare function generateAudio(this: IExecuteFunctions, itemIndex: number): Promise<INodeExecutionData[]>;
|
|
4
6
|
export declare function simplifyTranscript(result: IDataObject, jobId?: unknown): IDataObject;
|
|
5
7
|
export declare function transcribe(this: IExecuteFunctions, itemIndex: number): Promise<INodeExecutionData[]>;
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildSpeechBody = buildSpeechBody;
|
|
4
4
|
exports.textToSpeech = textToSpeech;
|
|
5
|
+
exports.buildAudioGenerationBody = buildAudioGenerationBody;
|
|
6
|
+
exports.generateAudio = generateAudio;
|
|
5
7
|
exports.simplifyTranscript = simplifyTranscript;
|
|
6
8
|
exports.transcribe = transcribe;
|
|
7
9
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
@@ -92,6 +94,54 @@ async function textToSpeech(itemIndex) {
|
|
|
92
94
|
},
|
|
93
95
|
];
|
|
94
96
|
}
|
|
97
|
+
function buildAudioGenerationBody(itemIndex) {
|
|
98
|
+
const model = this.getNodeParameter('model', itemIndex);
|
|
99
|
+
const prompt = this.getNodeParameter('prompt', itemIndex, '');
|
|
100
|
+
const options = this.getNodeParameter('options', itemIndex, {});
|
|
101
|
+
const optional = {};
|
|
102
|
+
if (typeof prompt === 'string' && prompt.trim() !== '') {
|
|
103
|
+
optional.prompt = prompt;
|
|
104
|
+
}
|
|
105
|
+
if (typeof options.lyrics === 'string' && options.lyrics !== '') {
|
|
106
|
+
optional.lyrics = options.lyrics;
|
|
107
|
+
}
|
|
108
|
+
if (typeof options.duration === 'number') {
|
|
109
|
+
optional.duration = options.duration;
|
|
110
|
+
}
|
|
111
|
+
if (typeof options.steps === 'number') {
|
|
112
|
+
optional.steps = options.steps;
|
|
113
|
+
}
|
|
114
|
+
if (typeof options.cfgScale === 'number') {
|
|
115
|
+
optional.cfg_scale = options.cfgScale;
|
|
116
|
+
}
|
|
117
|
+
if (typeof options.seed === 'number') {
|
|
118
|
+
optional.seed = options.seed;
|
|
119
|
+
}
|
|
120
|
+
if (typeof options.outputFormat === 'string' && options.outputFormat !== '') {
|
|
121
|
+
optional.output_format = options.outputFormat;
|
|
122
|
+
}
|
|
123
|
+
const extra = transport_1.parseJsonObjectParameter.call(this, options.modelParameters, 'Model Parameters (JSON)', itemIndex);
|
|
124
|
+
return { ...optional, ...extra, model };
|
|
125
|
+
}
|
|
126
|
+
async function generateAudio(itemIndex) {
|
|
127
|
+
var _a;
|
|
128
|
+
const options = this.getNodeParameter('options', itemIndex, {});
|
|
129
|
+
const body = buildAudioGenerationBody.call(this, itemIndex);
|
|
130
|
+
const started = await transport_1.apiRequest.call(this, 'POST', '/audio/generations', body);
|
|
131
|
+
return await transport_1.startedJobItems.call(this, started, itemIndex, {
|
|
132
|
+
wait: this.getNodeParameter('waitForCompletion', itemIndex, false),
|
|
133
|
+
timeoutSeconds: this.getNodeParameter('timeout', itemIndex, 600),
|
|
134
|
+
pollSeconds: 5,
|
|
135
|
+
download: this.getNodeParameter('downloadAudio', itemIndex, true),
|
|
136
|
+
field: (0, transport_1.binaryFieldName)(options),
|
|
137
|
+
naming: {
|
|
138
|
+
baseName: 'audio',
|
|
139
|
+
mimeType: (_a = (0, transport_1.mimeTypeForAudioFormat)(body.output_format)) !== null && _a !== void 0 ? _a : 'audio/mpeg',
|
|
140
|
+
extension: 'mp3',
|
|
141
|
+
},
|
|
142
|
+
downloadToggle: 'Download Audio',
|
|
143
|
+
});
|
|
144
|
+
}
|
|
95
145
|
function simplifyTranscript(result, jobId) {
|
|
96
146
|
var _a;
|
|
97
147
|
const simplified = { text: (_a = result.text) !== null && _a !== void 0 ? _a : '' };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../../../nodes/Empiriolabs/actions/audio.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../../../nodes/Empiriolabs/actions/audio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { IDataObject, IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
|
|
2
|
+
export declare function parseChoiceOptions(value: unknown): IDataObject;
|
|
3
|
+
export declare function buildDecisionQuestions(this: IExecuteFunctions, itemIndex: number): IDataObject;
|
|
4
|
+
export declare function buildDecisionState(this: IExecuteFunctions, itemIndex: number): unknown;
|
|
5
|
+
export declare function buildDecisionBody(this: IExecuteFunctions, itemIndex: number): IDataObject;
|
|
6
|
+
export declare function createDecision(this: IExecuteFunctions, itemIndex: number): Promise<INodeExecutionData[]>;
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseChoiceOptions = parseChoiceOptions;
|
|
4
|
+
exports.buildDecisionQuestions = buildDecisionQuestions;
|
|
5
|
+
exports.buildDecisionState = buildDecisionState;
|
|
6
|
+
exports.buildDecisionBody = buildDecisionBody;
|
|
7
|
+
exports.createDecision = createDecision;
|
|
8
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
9
|
+
const transport_1 = require("../transport");
|
|
10
|
+
const QUESTION_TYPES = [
|
|
11
|
+
{ type: 'noul', label: 'Yes or No' },
|
|
12
|
+
{ type: 'choice', label: 'Choice' },
|
|
13
|
+
{ type: 'score', label: 'Score' },
|
|
14
|
+
{ type: 'tool', label: 'Tool' },
|
|
15
|
+
];
|
|
16
|
+
function parseChoiceOptions(value) {
|
|
17
|
+
const criteria = {};
|
|
18
|
+
for (const line of (0, transport_1.splitLines)(value)) {
|
|
19
|
+
const separator = line.indexOf(':');
|
|
20
|
+
const name = (separator === -1 ? line : line.slice(0, separator)).trim();
|
|
21
|
+
const description = separator === -1 ? '' : line.slice(separator + 1).trim();
|
|
22
|
+
if (name !== '') {
|
|
23
|
+
criteria[name] = description === '' ? null : description;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return criteria;
|
|
27
|
+
}
|
|
28
|
+
function questionFromFields(type, entry, id, itemIndex) {
|
|
29
|
+
const instructions = typeof entry.instructions === 'string' ? entry.instructions.trim() : '';
|
|
30
|
+
if (instructions === '') {
|
|
31
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The question "${id}" has no instructions`, {
|
|
32
|
+
itemIndex,
|
|
33
|
+
description: 'Enter the question to answer in Instructions',
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const question = { type, instructions };
|
|
37
|
+
if (type === 'choice') {
|
|
38
|
+
const criteria = parseChoiceOptions(entry.choices);
|
|
39
|
+
if (Object.keys(criteria).length < 2) {
|
|
40
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The question "${id}" needs at least two options`, { itemIndex, description: 'Enter one option per line in Options' });
|
|
41
|
+
}
|
|
42
|
+
question.criteria = criteria;
|
|
43
|
+
}
|
|
44
|
+
else if (type === 'score') {
|
|
45
|
+
const levels = (0, transport_1.splitLines)(entry.levels);
|
|
46
|
+
if (levels.length < 2) {
|
|
47
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The question "${id}" needs at least two levels`, { itemIndex, description: 'Enter one level per line in Levels' });
|
|
48
|
+
}
|
|
49
|
+
question.criteria = levels;
|
|
50
|
+
}
|
|
51
|
+
else if (type === 'tool') {
|
|
52
|
+
const tools = (0, transport_1.readJsonParameter)(entry.tools);
|
|
53
|
+
if (!Array.isArray(tools) || tools.length === 0) {
|
|
54
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The question "${id}" needs at least one function`, {
|
|
55
|
+
itemIndex,
|
|
56
|
+
description: 'Enter a JSON array of function definitions in Functions (JSON)',
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
question.tools = tools;
|
|
60
|
+
if (entry.allowNone === false) {
|
|
61
|
+
question.allow_none = false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const criteria = {};
|
|
66
|
+
if (typeof entry.yesCriteria === 'string' && entry.yesCriteria.trim() !== '') {
|
|
67
|
+
criteria.true = entry.yesCriteria.trim();
|
|
68
|
+
}
|
|
69
|
+
if (typeof entry.noCriteria === 'string' && entry.noCriteria.trim() !== '') {
|
|
70
|
+
criteria.false = entry.noCriteria.trim();
|
|
71
|
+
}
|
|
72
|
+
if (Object.keys(criteria).length > 0) {
|
|
73
|
+
question.criteria = criteria;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (type !== 'tool' && entry.abstain === true) {
|
|
77
|
+
question.abstain = true;
|
|
78
|
+
}
|
|
79
|
+
return question;
|
|
80
|
+
}
|
|
81
|
+
function buildDecisionQuestions(itemIndex) {
|
|
82
|
+
const mode = this.getNodeParameter('questionsMode', itemIndex, 'fields');
|
|
83
|
+
if (mode === 'json') {
|
|
84
|
+
const questions = (0, transport_1.readJsonParameter)(this.getNodeParameter('questionsJson', itemIndex, ''));
|
|
85
|
+
if (!(0, transport_1.isDataObject)(questions) || Object.keys(questions).length === 0) {
|
|
86
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Questions (JSON) must be a JSON object with at least one question', {
|
|
87
|
+
itemIndex,
|
|
88
|
+
description: 'Enter an object such as {"is_urgent": {"type": "noul", "instructions": "Does the customer need a resolution today?"}}',
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return questions;
|
|
92
|
+
}
|
|
93
|
+
const sections = this.getNodeParameter('questions', itemIndex, {});
|
|
94
|
+
const questions = {};
|
|
95
|
+
for (const { type, label } of QUESTION_TYPES) {
|
|
96
|
+
const entries = (0, transport_1.isDataObject)(sections) && Array.isArray(sections[type]) ? sections[type] : [];
|
|
97
|
+
for (const entry of entries.filter(transport_1.isDataObject)) {
|
|
98
|
+
const id = typeof entry.id === 'string' ? entry.id.trim() : '';
|
|
99
|
+
if (id === '') {
|
|
100
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `A ${label} question has no ID`, {
|
|
101
|
+
itemIndex,
|
|
102
|
+
description: 'Enter a name for the question in ID, such as is_urgent',
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
if (questions[id] !== undefined) {
|
|
106
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The question ID "${id}" is used more than once`, { itemIndex, description: 'Give every question its own ID' });
|
|
107
|
+
}
|
|
108
|
+
questions[id] = questionFromFields.call(this, type, entry, id, itemIndex);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (Object.keys(questions).length === 0) {
|
|
112
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Add at least one question', {
|
|
113
|
+
itemIndex,
|
|
114
|
+
description: 'Use Add Question in the Questions parameter',
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return questions;
|
|
118
|
+
}
|
|
119
|
+
function buildDecisionState(itemIndex) {
|
|
120
|
+
const stateType = this.getNodeParameter('stateType', itemIndex, 'text');
|
|
121
|
+
if (stateType !== 'json') {
|
|
122
|
+
return this.getNodeParameter('stateText', itemIndex);
|
|
123
|
+
}
|
|
124
|
+
const state = (0, transport_1.readJsonParameter)(this.getNodeParameter('stateJson', itemIndex, ''));
|
|
125
|
+
if (!(0, transport_1.isDataObject)(state) && !Array.isArray(state)) {
|
|
126
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'State (JSON) must be a JSON object or array', {
|
|
127
|
+
itemIndex,
|
|
128
|
+
description: 'Enter an object such as {"message": "I was charged twice this month."}',
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
return state;
|
|
132
|
+
}
|
|
133
|
+
function buildDecisionBody(itemIndex) {
|
|
134
|
+
const model = this.getNodeParameter('model', itemIndex);
|
|
135
|
+
const options = this.getNodeParameter('options', itemIndex, {});
|
|
136
|
+
const body = {
|
|
137
|
+
model,
|
|
138
|
+
state: buildDecisionState.call(this, itemIndex),
|
|
139
|
+
questions: buildDecisionQuestions.call(this, itemIndex),
|
|
140
|
+
};
|
|
141
|
+
if (typeof options.longContext === 'string' && options.longContext !== '') {
|
|
142
|
+
body.long_context = options.longContext;
|
|
143
|
+
}
|
|
144
|
+
return body;
|
|
145
|
+
}
|
|
146
|
+
async function createDecision(itemIndex) {
|
|
147
|
+
const body = buildDecisionBody.call(this, itemIndex);
|
|
148
|
+
const response = await transport_1.apiRequest.call(this, 'POST', '/decisions', body);
|
|
149
|
+
return [{ json: response, pairedItem: { item: itemIndex } }];
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=decision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision.js","sourceRoot":"","sources":["../../../../nodes/Empiriolabs/actions/decision.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { IDataObject, IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
|
|
2
|
+
export declare function buildDetectionBody(this: IExecuteFunctions, itemIndex: number): IDataObject;
|
|
3
|
+
export declare function detectText(this: IExecuteFunctions, itemIndex: number): Promise<INodeExecutionData[]>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildDetectionBody = buildDetectionBody;
|
|
4
|
+
exports.detectText = detectText;
|
|
5
|
+
const transport_1 = require("../transport");
|
|
6
|
+
function buildDetectionBody(itemIndex) {
|
|
7
|
+
const model = this.getNodeParameter('model', itemIndex);
|
|
8
|
+
const text = this.getNodeParameter('text', itemIndex);
|
|
9
|
+
const options = this.getNodeParameter('options', itemIndex, {});
|
|
10
|
+
const optional = {};
|
|
11
|
+
if (typeof options.version === 'string' && options.version.trim() !== '') {
|
|
12
|
+
optional.version = options.version.trim();
|
|
13
|
+
}
|
|
14
|
+
const extra = transport_1.parseJsonObjectParameter.call(this, options.modelParameters, 'Model Parameters (JSON)', itemIndex);
|
|
15
|
+
return { ...optional, ...extra, model, input: text };
|
|
16
|
+
}
|
|
17
|
+
async function detectText(itemIndex) {
|
|
18
|
+
const body = buildDetectionBody.call(this, itemIndex);
|
|
19
|
+
const response = await transport_1.apiRequest.call(this, 'POST', '/detect', body);
|
|
20
|
+
return [{ json: response, pairedItem: { item: itemIndex } }];
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detection.js","sourceRoot":"","sources":["../../../../nodes/Empiriolabs/actions/detection.ts"],"names":[],"mappings":";;AAIA,gDAgBC;AAMD,gCAOC;AA/BD,4CAAoE;AAEpE,SAAgB,kBAAkB,CAA0B,SAAiB;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAW,CAAC;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAW,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAgB,CAAC;IAE/E,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1E,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IACD,MAAM,KAAK,GAAG,oCAAwB,CAAC,IAAI,CAC1C,IAAI,EACJ,OAAO,CAAC,eAAe,EACvB,yBAAyB,EACzB,SAAS,CACT,CAAC;IACF,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACtD,CAAC;AAMM,KAAK,UAAU,UAAU,CAE/B,SAAiB;IAEjB,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,MAAM,sBAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACtE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC"}
|