@@ -55,26 +63,39 @@ export default {
description: "A Workflows node.",
toolkit: "workflows",
category: "Other",
- fields: {},
+ fields: {
+ alias: {
+ name: "Alias",
+ type: FieldType.Text,
+ },
+ },
allowedParentTypes: ["workflows_workflow"],
previewField: "text",
},
};
+
+
From 57d7085af4107ad0e5592d67e284851853385286 Mon Sep 17 00:00:00 2001
From: Ramiro Medina <64783088+ramedina86@users.noreply.github.com>
Date: Thu, 14 Nov 2024 14:38:46 +0000
Subject: [PATCH 09/17] chore: Support mouse event
---
src/ui/src/core/detectPlatform.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/ui/src/core/detectPlatform.ts b/src/ui/src/core/detectPlatform.ts
index c33f5732..f47f41e9 100644
--- a/src/ui/src/core/detectPlatform.ts
+++ b/src/ui/src/core/detectPlatform.ts
@@ -5,10 +5,10 @@ function getPlatform() {
}
export function getModifierKeyName() {
- return isPlatformMac() ? "⌘ Cmd" : "Ctrl";
+ return isPlatformMac() ? "⌘ " : "Ctrl+";
}
-export function isModifierKeyActive(ev: KeyboardEvent) {
+export function isModifierKeyActive(ev: KeyboardEvent | MouseEvent) {
return isPlatformMac() ? ev.metaKey : ev.ctrlKey;
}
From f234c92b87d9b702ba28d94f05d1d3691d0bb374 Mon Sep 17 00:00:00 2001
From: Ramiro Medina <64783088+ramedina86@users.noreply.github.com>
Date: Thu, 14 Nov 2024 14:39:01 +0000
Subject: [PATCH 10/17] chore: Neutral button has a hover
---
src/ui/src/wds/WdsButton.vue | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/ui/src/wds/WdsButton.vue b/src/ui/src/wds/WdsButton.vue
index f57d721d..c2f3fec9 100644
--- a/src/ui/src/wds/WdsButton.vue
+++ b/src/ui/src/wds/WdsButton.vue
@@ -106,6 +106,7 @@ const className = computed(() => [
.WdsButton--neutral {
border: none;
box-shadow: none;
+ height: fit-content;
background: unset;
margin: 0;
padding: 0;
@@ -116,7 +117,7 @@ const className = computed(() => [
color: unset;
border: none;
box-shadow: none;
- background: unset;
+ background: var(--builderSeparatorColor);
}
.WdsButton--neutral:disabled {
From 1a7af561b9e354e87347de6b023f9a985eeef315 Mon Sep 17 00:00:00 2001
From: Ramiro Medina <64783088+ramedina86@users.noreply.github.com>
Date: Thu, 14 Nov 2024 14:39:13 +0000
Subject: [PATCH 11/17] feat: Auto parse JSON
---
src/writer/workflows_blocks/httprequest.py | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/src/writer/workflows_blocks/httprequest.py b/src/writer/workflows_blocks/httprequest.py
index b61b6c4c..9b91f831 100644
--- a/src/writer/workflows_blocks/httprequest.py
+++ b/src/writer/workflows_blocks/httprequest.py
@@ -4,7 +4,6 @@
from writer.ss_types import AbstractTemplate
from writer.workflows_blocks.blocks import WorkflowBlock
-
class HTTPRequest(WorkflowBlock):
@classmethod
@@ -52,7 +51,7 @@ def register(cls, type: str):
},
"responseError": {
"name": "Response error",
- "description": "The connection was established successfully but an error response code was received.",
+ "description": "The connection was established successfully but an error response code was received or the response was invalid.",
"style": "error",
},
"connectionError": {
@@ -65,22 +64,31 @@ def register(cls, type: str):
))
def run(self):
+ import json
+
try:
method = self._get_field("method", False, "get")
url = self._get_field("url")
headers = self._get_field("headers", True)
body = self._get_field("body")
req = requests.request(method, url, headers=headers, data=body)
+
+ content_type = req.headers.get("Content-Type")
+ is_json = content_type and "application/json" in content_type
+
self.result = {
"headers": dict(req.headers),
"status_code": req.status_code,
- "body": req.text
+ "body": req.json() if is_json else req.text
}
if req.ok:
self.outcome = "success"
else:
self.outcome = "responseError"
raise RuntimeError("HTTP response with code " + str(req.status_code))
+ except json.JSONDecodeError as e:
+ self.result = "JSON decode error. The response contains invalid JSON."
+ self.outcome = "responseError"
except BaseException as e:
self.outcome = "connectionError"
raise e
\ No newline at end of file
From 8f946cc363707b0e6f155a2ff62662aa4c47bafb Mon Sep 17 00:00:00 2001
From: Ramiro Medina <64783088+ramedina86@users.noreply.github.com>
Date: Thu, 14 Nov 2024 14:39:25 +0000
Subject: [PATCH 12/17] fix: No empty return value
---
src/writer/workflows_blocks/returnvalue.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/writer/workflows_blocks/returnvalue.py b/src/writer/workflows_blocks/returnvalue.py
index 9ccf318e..6770565c 100644
--- a/src/writer/workflows_blocks/returnvalue.py
+++ b/src/writer/workflows_blocks/returnvalue.py
@@ -40,6 +40,8 @@ def register(cls, type: str):
def run(self):
try:
value = self._get_field("value")
+ if value is None:
+ raise ValueError("Return value cannot be empty or None.")
self.result = value
self.return_value = value
self.outcome = "success"
From 2c95ea91df1c189bd339a93b9aec85fa43a03346 Mon Sep 17 00:00:00 2001
From: Ramiro Medina <64783088+ramedina86@users.noreply.github.com>
Date: Thu, 14 Nov 2024 14:39:44 +0000
Subject: [PATCH 13/17] fix: Add content separator
---
src/writer/workflows_blocks/writerclassification.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/writer/workflows_blocks/writerclassification.py b/src/writer/workflows_blocks/writerclassification.py
index 6bd2c406..b9f9f782 100644
--- a/src/writer/workflows_blocks/writerclassification.py
+++ b/src/writer/workflows_blocks/writerclassification.py
@@ -70,7 +70,7 @@ def run(self):
{ additional_context }
CONTENT:
-
+------
{ text }
"""
result = writer.ai.complete(prompt, config).strip()
From e88a8ee56622619aed2a139450e47ee57db59662 Mon Sep 17 00:00:00 2001
From: Ramiro Medina <64783088+ramedina86@users.noreply.github.com>
Date: Thu, 14 Nov 2024 14:56:20 +0000
Subject: [PATCH 14/17] fix: Linter fixes
---
src/ui/src/components/workflows/abstract/WorkflowsNode.vue | 6 ------
src/ui/src/components/workflows/base/WorkflowsNodeNamer.vue | 2 +-
src/writer/workflows_blocks/httprequest.py | 3 ++-
3 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/src/ui/src/components/workflows/abstract/WorkflowsNode.vue b/src/ui/src/components/workflows/abstract/WorkflowsNode.vue
index 45c97972..06e7f222 100644
--- a/src/ui/src/components/workflows/abstract/WorkflowsNode.vue
+++ b/src/ui/src/components/workflows/abstract/WorkflowsNode.vue
@@ -92,8 +92,6 @@ const component = computed(() => {
return component;
});
-const alias = ref(component.value.content["alias"]);
-
const def = computed(() => {
return wf?.getComponentDefinition(component.value?.type);
});
@@ -156,10 +154,6 @@ function handleOutMousedown(ev: DragEvent, outId: string) {
emit("outMousedown", outId);
}
-watch(alias, () => {
- setContent;
-});
-
watch(isEngaged, () => {
emit("engaged");
});
diff --git a/src/ui/src/components/workflows/base/WorkflowsNodeNamer.vue b/src/ui/src/components/workflows/base/WorkflowsNodeNamer.vue
index 6351228a..6ac5426c 100644
--- a/src/ui/src/components/workflows/base/WorkflowsNodeNamer.vue
+++ b/src/ui/src/components/workflows/base/WorkflowsNodeNamer.vue
@@ -29,7 +29,7 @@